From 219db433644b175c157662fe5789a8412a377bd2 Mon Sep 17 00:00:00 2001 From: Russ Allbery Date: Wed, 16 Jul 2008 14:20:28 -0700 Subject: [PATCH] Imported Upstream version 1.5.50.dfsg1 --- Makefile.in | 110 +- README | 300 +- README-NT | 233 +- README-WIN9X | 200 - README.CVS | 1 + README.DEVEL | 13 +- acinclude.m4 | 391 +- config.sub | 0 configure | 1973 ++++- configure-libafs | 1949 ++++- configure-libafs.in | 6 +- configure.in | 15 +- doc/arch/README | 7 + doc/arch/dafs-fsa.dot | 109 + doc/html/AdminReference/auarf000.htm | 48 - doc/html/AdminReference/auarf002.htm | 314 - doc/html/AdminReference/auarf003.htm | 29 - doc/html/AdminReference/auarf004.htm | 28 - doc/html/AdminReference/auarf005.htm | 32 - doc/html/AdminReference/auarf006.htm | 55 - doc/html/AdminReference/auarf007.htm | 28 - doc/html/AdminReference/auarf008.htm | 56 - doc/html/AdminReference/auarf009.htm | 57 - doc/html/AdminReference/auarf010.htm | 26 - doc/html/AdminReference/auarf011.htm | 124 - doc/html/AdminReference/auarf012.htm | 57 - doc/html/AdminReference/auarf013.htm | 49 - doc/html/AdminReference/auarf014.htm | 57 - doc/html/AdminReference/auarf015.htm | 57 - doc/html/AdminReference/auarf016.htm | 179 - doc/html/AdminReference/auarf017.htm | 59 - doc/html/AdminReference/auarf018.htm | 565 -- doc/html/AdminReference/auarf019.htm | 120 - doc/html/AdminReference/auarf020.htm | 91 - doc/html/AdminReference/auarf021.htm | 57 - doc/html/AdminReference/auarf022.htm | 49 - doc/html/AdminReference/auarf023.htm | 73 - doc/html/AdminReference/auarf024.htm | 70 - doc/html/AdminReference/auarf025.htm | 67 - doc/html/AdminReference/auarf026.htm | 60 - doc/html/AdminReference/auarf027.htm | 71 - doc/html/AdminReference/auarf028.htm | 67 - doc/html/AdminReference/auarf029.htm | 58 - doc/html/AdminReference/auarf030.htm | 57 - doc/html/AdminReference/auarf031.htm | 59 - doc/html/AdminReference/auarf032.htm | 79 - doc/html/AdminReference/auarf033.htm | 61 - doc/html/AdminReference/auarf034.htm | 55 - doc/html/AdminReference/auarf035.htm | 59 - doc/html/AdminReference/auarf036.htm | 94 - doc/html/AdminReference/auarf037.htm | 46 - doc/html/AdminReference/auarf038.htm | 75 - doc/html/AdminReference/auarf039.htm | 57 - doc/html/AdminReference/auarf040.htm | 56 - doc/html/AdminReference/auarf041.htm | 43 - doc/html/AdminReference/auarf042.htm | 59 - doc/html/AdminReference/auarf043.htm | 79 - doc/html/AdminReference/auarf044.htm | 82 - doc/html/AdminReference/auarf045.htm | 60 - doc/html/AdminReference/auarf046.htm | 55 - doc/html/AdminReference/auarf047.htm | 60 - doc/html/AdminReference/auarf048.htm | 40 - doc/html/AdminReference/auarf049.htm | 66 - doc/html/AdminReference/auarf050.htm | 165 - doc/html/AdminReference/auarf051.htm | 58 - doc/html/AdminReference/auarf052.htm | 122 - doc/html/AdminReference/auarf053.htm | 655 -- doc/html/AdminReference/auarf054.htm | 343 - doc/html/AdminReference/auarf055.htm | 759 -- doc/html/AdminReference/auarf056.htm | 26 - doc/html/AdminReference/auarf057.htm | 451 - doc/html/AdminReference/auarf058.htm | 433 - doc/html/AdminReference/auarf059.htm | 329 - doc/html/AdminReference/auarf060.htm | 267 - doc/html/AdminReference/auarf061.htm | 186 - doc/html/AdminReference/auarf062.htm | 116 - doc/html/AdminReference/auarf063.htm | 189 - doc/html/AdminReference/auarf064.htm | 109 - doc/html/AdminReference/auarf065.htm | 73 - doc/html/AdminReference/auarf066.htm | 124 - doc/html/AdminReference/auarf067.htm | 82 - doc/html/AdminReference/auarf068.htm | 183 - doc/html/AdminReference/auarf069.htm | 93 - doc/html/AdminReference/auarf070.htm | 94 - doc/html/AdminReference/auarf071.htm | 86 - doc/html/AdminReference/auarf072.htm | 256 - doc/html/AdminReference/auarf073.htm | 480 -- doc/html/AdminReference/auarf074.htm | 340 - doc/html/AdminReference/auarf075.htm | 86 - doc/html/AdminReference/auarf076.htm | 109 - doc/html/AdminReference/auarf077.htm | 176 - doc/html/AdminReference/auarf078.htm | 139 - doc/html/AdminReference/auarf079.htm | 224 - doc/html/AdminReference/auarf080.htm | 138 - doc/html/AdminReference/auarf081.htm | 101 - doc/html/AdminReference/auarf082.htm | 103 - doc/html/AdminReference/auarf083.htm | 83 - doc/html/AdminReference/auarf084.htm | 216 - doc/html/AdminReference/auarf085.htm | 117 - doc/html/AdminReference/auarf086.htm | 151 - doc/html/AdminReference/auarf087.htm | 292 - doc/html/AdminReference/auarf088.htm | 160 - doc/html/AdminReference/auarf089.htm | 145 - doc/html/AdminReference/auarf090.htm | 121 - doc/html/AdminReference/auarf091.htm | 290 - doc/html/AdminReference/auarf092.htm | 352 - doc/html/AdminReference/auarf093.htm | 254 - doc/html/AdminReference/auarf094.htm | 124 - doc/html/AdminReference/auarf095.htm | 144 - doc/html/AdminReference/auarf096.htm | 105 - doc/html/AdminReference/auarf097.htm | 73 - doc/html/AdminReference/auarf098.htm | 367 - doc/html/AdminReference/auarf099.htm | 103 - doc/html/AdminReference/auarf100.htm | 91 - doc/html/AdminReference/auarf101.htm | 120 - doc/html/AdminReference/auarf102.htm | 136 - doc/html/AdminReference/auarf103.htm | 134 - doc/html/AdminReference/auarf104.htm | 85 - doc/html/AdminReference/auarf105.htm | 137 - doc/html/AdminReference/auarf106.htm | 112 - doc/html/AdminReference/auarf107.htm | 136 - doc/html/AdminReference/auarf108.htm | 95 - doc/html/AdminReference/auarf109.htm | 139 - doc/html/AdminReference/auarf110.htm | 112 - doc/html/AdminReference/auarf111.htm | 108 - doc/html/AdminReference/auarf112.htm | 100 - doc/html/AdminReference/auarf113.htm | 140 - doc/html/AdminReference/auarf114.htm | 298 - doc/html/AdminReference/auarf115.htm | 112 - doc/html/AdminReference/auarf116.htm | 128 - doc/html/AdminReference/auarf117.htm | 158 - doc/html/AdminReference/auarf118.htm | 122 - doc/html/AdminReference/auarf119.htm | 108 - doc/html/AdminReference/auarf120.htm | 112 - doc/html/AdminReference/auarf121.htm | 235 - doc/html/AdminReference/auarf122.htm | 106 - doc/html/AdminReference/auarf123.htm | 122 - doc/html/AdminReference/auarf124.htm | 164 - doc/html/AdminReference/auarf125.htm | 147 - doc/html/AdminReference/auarf126.htm | 194 - doc/html/AdminReference/auarf127.htm | 186 - doc/html/AdminReference/auarf128.htm | 114 - doc/html/AdminReference/auarf129.htm | 391 - doc/html/AdminReference/auarf130.htm | 140 - doc/html/AdminReference/auarf131.htm | 169 - doc/html/AdminReference/auarf132.htm | 73 - doc/html/AdminReference/auarf133.htm | 197 - doc/html/AdminReference/auarf134.htm | 69 - doc/html/AdminReference/auarf135.htm | 108 - doc/html/AdminReference/auarf136.htm | 156 - doc/html/AdminReference/auarf137.htm | 119 - doc/html/AdminReference/auarf138.htm | 136 - doc/html/AdminReference/auarf139.htm | 199 - doc/html/AdminReference/auarf140.htm | 84 - doc/html/AdminReference/auarf141.htm | 80 - doc/html/AdminReference/auarf142.htm | 81 - doc/html/AdminReference/auarf143.htm | 75 - doc/html/AdminReference/auarf144.htm | 76 - doc/html/AdminReference/auarf145.htm | 106 - doc/html/AdminReference/auarf146.htm | 173 - doc/html/AdminReference/auarf147.htm | 85 - doc/html/AdminReference/auarf148.htm | 175 - doc/html/AdminReference/auarf149.htm | 89 - doc/html/AdminReference/auarf150.htm | 113 - doc/html/AdminReference/auarf151.htm | 120 - doc/html/AdminReference/auarf152.htm | 82 - doc/html/AdminReference/auarf153.htm | 240 - doc/html/AdminReference/auarf154.htm | 116 - doc/html/AdminReference/auarf155.htm | 90 - doc/html/AdminReference/auarf156.htm | 75 - doc/html/AdminReference/auarf157.htm | 259 - doc/html/AdminReference/auarf158.htm | 108 - doc/html/AdminReference/auarf159.htm | 103 - doc/html/AdminReference/auarf160.htm | 117 - doc/html/AdminReference/auarf161.htm | 92 - doc/html/AdminReference/auarf162.htm | 270 - doc/html/AdminReference/auarf163.htm | 108 - doc/html/AdminReference/auarf164.htm | 205 - doc/html/AdminReference/auarf165.htm | 106 - doc/html/AdminReference/auarf166.htm | 80 - doc/html/AdminReference/auarf167.htm | 74 - doc/html/AdminReference/auarf168.htm | 67 - doc/html/AdminReference/auarf169.htm | 89 - doc/html/AdminReference/auarf170.htm | 74 - doc/html/AdminReference/auarf171.htm | 65 - doc/html/AdminReference/auarf172.htm | 208 - doc/html/AdminReference/auarf173.htm | 86 - doc/html/AdminReference/auarf174.htm | 107 - doc/html/AdminReference/auarf175.htm | 83 - doc/html/AdminReference/auarf176.htm | 75 - doc/html/AdminReference/auarf177.htm | 75 - doc/html/AdminReference/auarf178.htm | 118 - doc/html/AdminReference/auarf179.htm | 150 - doc/html/AdminReference/auarf180.htm | 93 - doc/html/AdminReference/auarf181.htm | 189 - doc/html/AdminReference/auarf182.htm | 71 - doc/html/AdminReference/auarf183.htm | 117 - doc/html/AdminReference/auarf184.htm | 98 - doc/html/AdminReference/auarf185.htm | 261 - doc/html/AdminReference/auarf186.htm | 64 - doc/html/AdminReference/auarf187.htm | 88 - doc/html/AdminReference/auarf188.htm | 133 - doc/html/AdminReference/auarf189.htm | 118 - doc/html/AdminReference/auarf190.htm | 102 - doc/html/AdminReference/auarf191.htm | 71 - doc/html/AdminReference/auarf192.htm | 63 - doc/html/AdminReference/auarf193.htm | 351 - doc/html/AdminReference/auarf194.htm | 158 - doc/html/AdminReference/auarf195.htm | 123 - doc/html/AdminReference/auarf196.htm | 89 - doc/html/AdminReference/auarf197.htm | 99 - doc/html/AdminReference/auarf198.htm | 150 - doc/html/AdminReference/auarf199.htm | 116 - doc/html/AdminReference/auarf200.htm | 307 - doc/html/AdminReference/auarf201.htm | 178 - doc/html/AdminReference/auarf202.htm | 164 - doc/html/AdminReference/auarf203.htm | 88 - doc/html/AdminReference/auarf204.htm | 155 - doc/html/AdminReference/auarf205.htm | 72 - doc/html/AdminReference/auarf206.htm | 88 - doc/html/AdminReference/auarf207.htm | 58 - doc/html/AdminReference/auarf208.htm | 121 - doc/html/AdminReference/auarf209.htm | 89 - doc/html/AdminReference/auarf210.htm | 149 - doc/html/AdminReference/auarf211.htm | 121 - doc/html/AdminReference/auarf212.htm | 71 - doc/html/AdminReference/auarf213.htm | 103 - doc/html/AdminReference/auarf214.htm | 204 - doc/html/AdminReference/auarf215.htm | 183 - doc/html/AdminReference/auarf216.htm | 107 - doc/html/AdminReference/auarf217.htm | 256 - doc/html/AdminReference/auarf218.htm | 85 - doc/html/AdminReference/auarf219.htm | 112 - doc/html/AdminReference/auarf220.htm | 90 - doc/html/AdminReference/auarf221.htm | 127 - doc/html/AdminReference/auarf222.htm | 146 - doc/html/AdminReference/auarf223.htm | 111 - doc/html/AdminReference/auarf224.htm | 110 - doc/html/AdminReference/auarf225.htm | 199 - doc/html/AdminReference/auarf226.htm | 95 - doc/html/AdminReference/auarf227.htm | 114 - doc/html/AdminReference/auarf228.htm | 120 - doc/html/AdminReference/auarf229.htm | 105 - doc/html/AdminReference/auarf230.htm | 123 - doc/html/AdminReference/auarf231.htm | 168 - doc/html/AdminReference/auarf232.htm | 265 - doc/html/AdminReference/auarf233.htm | 283 - doc/html/AdminReference/auarf234.htm | 67 - doc/html/AdminReference/auarf235.htm | 124 - doc/html/AdminReference/auarf236.htm | 54 - doc/html/AdminReference/auarf237.htm | 325 - doc/html/AdminReference/auarf238.htm | 80 - doc/html/AdminReference/auarf239.htm | 113 - doc/html/AdminReference/auarf240.htm | 161 - doc/html/AdminReference/auarf241.htm | 129 - doc/html/AdminReference/auarf242.htm | 110 - doc/html/AdminReference/auarf243.htm | 291 - doc/html/AdminReference/auarf244.htm | 70 - doc/html/AdminReference/auarf245.htm | 135 - doc/html/AdminReference/auarf246.htm | 132 - doc/html/AdminReference/auarf247.htm | 87 - doc/html/AdminReference/auarf248.htm | 91 - doc/html/AdminReference/auarf249.htm | 114 - doc/html/AdminReference/auarf250.htm | 115 - doc/html/AdminReference/auarf251.htm | 105 - doc/html/AdminReference/auarf252.htm | 243 - doc/html/AdminReference/auarf253.htm | 120 - doc/html/AdminReference/auarf254.htm | 72 - doc/html/AdminReference/auarf255.htm | 106 - doc/html/AdminReference/auarf256.htm | 270 - doc/html/AdminReference/auarf257.htm | 129 - doc/html/AdminReference/auarf258.htm | 165 - doc/html/AdminReference/auarf259.htm | 171 - doc/html/AdminReference/auarf260.htm | 193 - doc/html/AdminReference/auarf261.htm | 317 - doc/html/AdminReference/auarf262.htm | 85 - doc/html/AdminReference/auarf263.htm | 103 - doc/html/AdminReference/auarf264.htm | 98 - doc/html/AdminReference/auarf265.htm | 231 - doc/html/AdminReference/auarf266.htm | 308 - doc/html/AdminReference/auarf267.htm | 99 - doc/html/AdminReference/auarf268.htm | 166 - doc/html/AdminReference/auarf269.htm | 115 - doc/html/AdminReference/auarf270.htm | 187 - doc/html/AdminReference/auarf271.htm | 169 - doc/html/AdminReference/auarf272.htm | 120 - doc/html/AdminReference/auarf273.htm | 109 - doc/html/AdminReference/auarf274.htm | 194 - doc/html/AdminReference/auarf275.htm | 143 - doc/html/AdminReference/auarf276.htm | 114 - doc/html/AdminReference/auarf277.htm | 136 - doc/html/AdminReference/auarf278.htm | 97 - doc/html/AdminReference/auarf279.htm | 129 - doc/html/AdminReference/auarf280.htm | 148 - doc/html/AdminReference/auarf281.htm | 60 - doc/html/AdminReference/auarf282.htm | 97 - doc/html/AdminReference/auarf283.htm | 96 - doc/html/AdminReference/auarf284.htm | 4966 ----------- doc/html/QuickStartUnix/auqbg005.htm | 50 +- doc/html/index.htm | 1 - doc/man-pages/NTMakefile | 36 + doc/man-pages/README | 50 +- doc/man-pages/generate-html | 47 + doc/man-pages/man1/afs.1 | 8 +- doc/man-pages/man1/aklog.1 | 48 +- doc/man-pages/man1/fs_diskfree.1 | 8 +- doc/man-pages/man1/fs_examine.1 | 8 +- doc/man-pages/man1/fs_listquota.1 | 17 +- doc/man-pages/man1/fs_minidump.1 | 12 +- doc/man-pages/man1/fs_quota.1 | 17 +- doc/man-pages/man1/fs_setquota.1 | 11 +- doc/man-pages/man1/fs_setvol.1 | 11 +- doc/man-pages/man1/klog.krb5.1 | 468 ++ doc/man-pages/man1/pts_examine.1 | 30 +- doc/man-pages/man1/vos.1 | 13 +- doc/man-pages/man1/vos_clone.1 | 341 + doc/man-pages/man1/vos_convertROtoRW.1 | 5 +- doc/man-pages/man1/vos_copy.1 | 11 +- doc/man-pages/man1/vos_create.1 | 11 +- doc/man-pages/man1/vos_examine.1 | 11 +- doc/man-pages/man1/vos_move.1 | 11 +- doc/man-pages/man1/vos_partinfo.1 | 11 +- doc/man-pages/man5/AuthLog.5 | 2 +- doc/man-pages/man5/AuthLog.dir.5 | 2 +- doc/man-pages/man5/BackupLog.5 | 2 +- doc/man-pages/man5/BosConfig.5 | 2 +- doc/man-pages/man5/BosLog.5 | 2 +- doc/man-pages/man5/CellServDB.5 | 51 +- doc/man-pages/man5/FORCESALVAGE.5 | 2 +- doc/man-pages/man5/FileLog.5 | 2 +- doc/man-pages/man5/KeyFile.5 | 2 +- doc/man-pages/man5/NoAuth.5 | 2 +- doc/man-pages/man5/SALVAGE.fs.5 | 2 +- doc/man-pages/man5/SalvageLog.5 | 2 +- doc/man-pages/man5/ThisCell.5 | 2 +- doc/man-pages/man5/UserList.5 | 2 +- doc/man-pages/man5/VLLog.5 | 2 +- doc/man-pages/man5/VolserLog.5 | 2 +- doc/man-pages/man5/afs.5 | 5 +- doc/man-pages/man5/afs_cache.5 | 2 +- doc/man-pages/man5/afs_volume_header.5 | 2 +- doc/man-pages/man5/afsmonitor.5 | 2 +- doc/man-pages/man5/afszcm.cat.5 | 2 +- doc/man-pages/man5/bdb.DB0.5 | 2 +- doc/man-pages/man5/butc.5 | 2 +- doc/man-pages/man5/butc_logs.5 | 2 +- doc/man-pages/man5/fms.log.5 | 2 +- doc/man-pages/man5/kaserver.DB0.5 | 2 +- doc/man-pages/man5/kaserverauxdb.5 | 2 +- doc/man-pages/man5/krb.conf.5 | 216 + doc/man-pages/man5/package.5 | 2 +- doc/man-pages/man5/salvage.lock.5 | 2 +- doc/man-pages/man5/sysid.5 | 2 +- doc/man-pages/man5/tapeconfig.5 | 2 +- doc/man-pages/man5/uss.5 | 2 +- doc/man-pages/man5/uss_bulk.5 | 2 +- doc/man-pages/man5/vldb.DB0.5 | 2 +- doc/man-pages/man8/asetkey.8 | 2 +- doc/man-pages/man8/backup.8 | 2 +- doc/man-pages/man8/bos.8 | 2 +- doc/man-pages/man8/bos_create.8 | 38 +- doc/man-pages/man8/bos_salvage.8 | 8 + doc/man-pages/man8/bosserver.8 | 2 +- doc/man-pages/man8/buserver.8 | 17 +- doc/man-pages/man8/fileserver.8 | 239 +- doc/man-pages/man8/fstrace.8 | 2 +- doc/man-pages/man8/kas.8 | 2 +- doc/man-pages/man8/ptserver.8 | 82 +- doc/man-pages/man8/salvageserver.8 | 498 ++ doc/man-pages/man8/vldb_convert.8 | 319 + doc/man-pages/man8/vlserver.8 | 19 +- doc/man-pages/man8/volserver.8 | 4 +- doc/man-pages/pod1/afs.pod | 7 +- doc/man-pages/pod1/aklog.pod | 46 +- doc/man-pages/pod1/fs_diskfree.pod | 6 +- doc/man-pages/pod1/fs_examine.pod | 6 +- doc/man-pages/pod1/fs_listquota.pod | 15 +- doc/man-pages/pod1/fs_minidump.pod | 10 + doc/man-pages/pod1/fs_quota.pod | 15 +- doc/man-pages/pod1/fs_setquota.pod | 9 +- doc/man-pages/pod1/fs_setvol.pod | 9 +- doc/man-pages/pod1/klog.krb5.pod | 284 + doc/man-pages/pod1/pts_examine.pod | 28 +- doc/man-pages/pod1/vos.pod | 11 +- doc/man-pages/pod1/vos_clone.pod | 155 + doc/man-pages/pod1/vos_convertROtoRW.pod | 3 - doc/man-pages/pod1/vos_copy.pod | 9 +- doc/man-pages/pod1/vos_create.pod | 9 +- doc/man-pages/pod1/vos_examine.pod | 9 +- doc/man-pages/pod1/vos_move.pod | 9 +- doc/man-pages/pod1/vos_partinfo.pod | 9 +- doc/man-pages/pod5/CellServDB.pod | 49 +- doc/man-pages/pod5/afs.pod | 2 + doc/man-pages/pod5/krb.conf.pod | 21 + doc/man-pages/pod8/bos_create.pod | 35 +- doc/man-pages/pod8/bos_salvage.pod | 8 + doc/man-pages/pod8/buserver.pod | 15 +- doc/man-pages/pod8/fileserver.pod | 239 +- doc/man-pages/pod8/ptserver.pod | 76 +- doc/man-pages/pod8/salvageserver.pod | 328 + doc/man-pages/pod8/vldb_convert.pod | 135 + doc/man-pages/pod8/vlserver.pod | 15 +- doc/man-pages/pod8/volserver.pod | 2 +- doc/man-pages/style.css | 2 + doc/txt/README.linux-nfstrans | 268 + doc/txt/RELNOTES-1.4.1 | 114 - doc/txt/RELNOTES-1.4.2 | 89 - doc/txt/RELNOTES-1.4.2fc4 | 161 - doc/txt/winnotes/afs-changes-since-1.2.txt | 1992 ++++- doc/txt/winnotes/afs-integration.txt | 218 +- doc/txt/winnotes/afs-issues.txt | 106 +- doc/txt/winnotes/performance.txt | 154 +- regen.sh | 29 +- src/NTMake9x | 332 - src/NTMakefile | 135 +- src/TechNotes-WIN9X | 154 - src/afs/.cvsignore | 1 + src/afs/AIX/osi_config.c | 2 +- src/afs/AIX/osi_file.c | 2 +- src/afs/AIX/osi_inode.c | 2 +- src/afs/AIX/osi_sleep.c | 2 +- src/afs/AIX/osi_vfsops.c | 2 +- src/afs/AIX/osi_vnodeops.c | 2 +- src/afs/DARWIN/osi_file.c | 2 +- src/afs/DARWIN/osi_groups.c | 5 +- src/afs/DARWIN/osi_inode.c | 2 +- src/afs/DARWIN/osi_misc.c | 24 +- src/afs/DARWIN/osi_module.c | 2 +- src/afs/DARWIN/osi_sleep.c | 2 +- src/afs/DARWIN/osi_vfsops.c | 2 +- src/afs/DARWIN/osi_vm.c | 2 +- src/afs/DARWIN/osi_vnodeops.c | 20 +- src/afs/DUX/osi_file.c | 2 +- src/afs/DUX/osi_vnodeops.c | 2 +- src/afs/FBSD/osi_file.c | 2 +- src/afs/FBSD/osi_misc.c | 2 +- src/afs/FBSD/osi_module.c | 2 +- src/afs/FBSD/osi_vfsops.c | 2 +- src/afs/FBSD/osi_vm.c | 2 +- src/afs/FBSD/osi_vnodeops.c | 6 +- src/afs/HPUX/osi_file.c | 2 +- src/afs/HPUX/osi_inode.c | 2 +- src/afs/IRIX/osi_file.c | 2 +- src/afs/IRIX/osi_idbg.c | 2 +- src/afs/IRIX/osi_inode.c | 2 +- src/afs/IRIX/osi_machdep.h | 3 + src/afs/IRIX/osi_vfsops.c | 2 +- src/afs/IRIX/osi_vnodeops.c | 2 +- src/afs/LINUX/osi_alloc.c | 2 +- src/afs/LINUX/osi_cred.c | 2 +- src/afs/LINUX/osi_export.c | 958 +++ src/afs/LINUX/osi_file.c | 194 +- src/afs/LINUX/osi_groups.c | 10 +- src/afs/LINUX/osi_ioctl.c | 145 + src/afs/LINUX/osi_misc.c | 318 +- src/afs/LINUX/osi_module.c | 303 +- src/afs/LINUX/osi_nfssrv.c | 265 + src/afs/LINUX/osi_pag_module.c | 161 + src/afs/LINUX/osi_probe.c | 2 +- src/afs/LINUX/osi_proc.c | 362 + src/afs/LINUX/osi_prototypes.h | 28 +- src/afs/LINUX/osi_sleep.c | 2 +- src/afs/LINUX/osi_syscall.c | 2 +- src/afs/LINUX/osi_sysctl.c | 106 +- src/afs/LINUX/osi_vfsops.c | 39 +- src/afs/LINUX/osi_vm.c | 2 +- src/afs/LINUX/osi_vnodeops.c | 105 +- src/afs/Makefile.am | 5 - src/afs/NBSD/osi_file.c | 2 +- src/afs/NBSD/osi_machdep.h | 3 + src/afs/NBSD/osi_vm.c | 2 +- src/afs/NBSD/osi_vnodeops.c | 2 +- src/afs/OBSD/osi_file.c | 10 +- src/afs/OBSD/osi_groups.c | 2 +- src/afs/OBSD/osi_machdep.h | 4 +- src/afs/OBSD/osi_sleep.c | 29 +- src/afs/OBSD/osi_vfsops.c | 6 +- src/afs/OBSD/osi_vm.c | 26 +- src/afs/OBSD/osi_vnodeops.c | 23 +- src/afs/SOLARIS/osi_file.c | 2 +- src/afs/SOLARIS/osi_groups.c | 2 +- src/afs/SOLARIS/osi_inode.c | 2 +- src/afs/SOLARIS/osi_vfsops.c | 4 +- src/afs/SOLARIS/osi_vm.c | 2 +- src/afs/SOLARIS/osi_vnodeops.c | 2 +- src/afs/UKERNEL/afs_usrops.c | 53 +- src/afs/UKERNEL/afsincludes.h | 1 + src/afs/UKERNEL/osi_groups.c | 2 +- src/afs/UKERNEL/osi_machdep.h | 3 + src/afs/UKERNEL/osi_vfsops.c | 2 +- src/afs/VNOPS/afs_vnop_access.c | 42 +- src/afs/VNOPS/afs_vnop_attrs.c | 55 +- src/afs/VNOPS/afs_vnop_create.c | 23 +- src/afs/VNOPS/afs_vnop_dirops.c | 25 +- src/afs/VNOPS/afs_vnop_fid.c | 2 +- src/afs/VNOPS/afs_vnop_flock.c | 151 +- src/afs/VNOPS/afs_vnop_link.c | 11 +- src/afs/VNOPS/afs_vnop_lookup.c | 341 +- src/afs/VNOPS/afs_vnop_open.c | 50 +- src/afs/VNOPS/afs_vnop_read.c | 34 +- src/afs/VNOPS/afs_vnop_readdir.c | 11 +- src/afs/VNOPS/afs_vnop_remove.c | 52 +- src/afs/VNOPS/afs_vnop_rename.c | 15 +- src/afs/VNOPS/afs_vnop_strategy.c | 2 +- src/afs/VNOPS/afs_vnop_symlink.c | 26 +- src/afs/VNOPS/afs_vnop_write.c | 23 +- src/afs/afs.h | 24 +- src/afs/afs_analyze.c | 346 +- src/afs/afs_buffer.c | 2 +- src/afs/afs_call.c | 2465 +----- src/afs/afs_callback.c | 142 +- src/afs/afs_cbqueue.c | 2 +- src/afs/afs_cell.c | 30 +- src/afs/afs_chunk.c | 2 +- src/afs/afs_conn.c | 22 +- src/afs/afs_daemons.c | 75 +- src/afs/afs_dcache.c | 344 +- src/afs/afs_disconnected.c | 18 + src/afs/afs_dynroot.c | 222 +- src/afs/afs_dynroot.h | 32 + src/afs/afs_error.c | 295 + src/afs/afs_icl.c | 1527 ++++ src/afs/afs_init.c | 14 +- src/afs/afs_md5.c | 285 + src/{rxgk/rxgk_info.c => afs/afs_md5.h} | 63 +- src/afs/afs_memcache.c | 2 +- src/afs/afs_nfsclnt.c | 252 +- src/afs/afs_nfsdisp.c | 2 +- src/afs/afs_osi.c | 889 +- src/afs/afs_osi.h | 9 - src/afs/afs_osi_alloc.c | 93 +- src/afs/afs_osi_gcpags.c | 543 ++ src/afs/afs_osi_pag.c | 21 +- src/afs/afs_osi_uio.c | 2 +- src/afs/afs_osi_vget.c | 2 +- src/afs/afs_osi_vm.c | 256 + src/afs/afs_osidnlc.c | 2 +- src/afs/afs_pag_call.c | 561 ++ src/afs/afs_pag_cred.c | 404 + src/afs/afs_pioctl.c | 416 +- src/afs/afs_prototypes.h | 274 +- src/afs/afs_segments.c | 10 +- src/afs/afs_server.c | 63 +- src/afs/afs_stats.h | 6 +- src/afs/afs_syscall.c | 726 ++ src/afs/afs_user.c | 16 +- src/afs/afs_util.c | 361 +- src/afs/afs_vcache.c | 81 +- src/afs/afs_volume.c | 13 +- src/afs/afs_warn.c | 126 + src/afs/afsincludes.h | 1 + src/afs/discon.h | 22 + src/afs/exporter.h | 19 +- src/afs/nfsclient.h | 1 + src/afsd/afs.conf.linux | 4 +- src/afsd/afs.rc.darwin | 6 + src/afsd/afs.rc.obsd | 2 +- src/afsd/afsd.c | 104 +- src/afsd/vsys.c | 2 +- src/afsmonitor/afsmon-output.c | 24 +- src/afsmonitor/afsmon-parselog.c | 7 +- src/afsmonitor/afsmon-win.c | 4 +- src/afsmonitor/afsmonitor.c | 2 +- src/afsweb/apache_afs_weblog.c | 2 +- src/afsweb/weblog.c | 2 +- src/aklog/.cvsignore | 1 - src/aklog/Makefile.in | 12 +- src/aklog/aklog.c | 4 +- src/aklog/aklog.h | 2 +- src/aklog/aklog_main.c | 4 +- src/aklog/asetkey.c | 6 +- src/aklog/krb_util.c | 2 +- src/aklog/linked_list.c | 4 +- src/aklog/linked_list.h | 2 +- src/audit/audit.c | 43 +- src/auth/Makefile.in | 9 +- src/auth/NTMakefile | 10 +- src/auth/auth.p.h | 20 +- src/auth/authcon.c | 2 +- src/auth/cellconfig.c | 15 +- src/auth/copyauth.c | 2 +- src/auth/ktc.c | 2 +- src/auth/ktc_nt.c | 20 +- src/auth/setkey.c | 2 +- src/auth/test/NTMakefile | 4 + src/auth/test/testcellconf.c | 2 +- src/auth/userok.c | 46 +- src/auth/writeconfig.c | 4 +- src/bozo/NTMakefile | 15 +- src/bozo/bnode.c | 42 +- src/bozo/bos.c | 276 +- src/bozo/bos_util.c | 2 +- src/bozo/bosoprocs.c | 2 +- src/bozo/bosserver.c | 30 +- src/bozo/cronbnodeops.c | 2 +- src/bozo/ezbnodeops.c | 2 +- src/bozo/fsbnodeops.c | 406 +- src/bu_utils/NTMakefile | 2 + src/bu_utils/fms.c | 2 +- src/bucoord/NTMakefile | 16 +- src/bucoord/bc_status.c | 3 +- src/bucoord/commands.c | 2 +- src/bucoord/config.c | 2 +- src/bucoord/dlq.c | 3 +- src/bucoord/dsstub.c | 2 +- src/bucoord/dsvs.c | 2 +- src/bucoord/dump.c | 2 +- src/bucoord/dump_sched.c | 2 +- src/bucoord/expire.c | 2 +- src/bucoord/main.c | 2 +- src/bucoord/restore.c | 2 +- src/bucoord/status.c | 2 +- src/bucoord/tape_hosts.c | 2 +- src/bucoord/ubik_db_if.c | 2 +- src/bucoord/vol_sets.c | 2 +- src/bucoord/volstub.c | 2 +- src/budb/Makefile.in | 12 +- src/budb/NTMakefile | 7 +- src/budb/database.c | 9 +- src/budb/db_alloc.c | 3 +- src/budb/db_dump.c | 26 +- src/budb/db_hash.c | 3 +- src/budb/db_lock.c | 3 +- src/budb/db_text.c | 3 +- src/budb/dbs_dump.c | 58 +- src/budb/globals.h | 10 +- src/budb/ol_verify.c | 5 +- src/budb/procs.c | 14 +- src/budb/server.c | 37 +- src/budb/struct_ops.c | 56 +- src/butc/NTMakefile | 26 +- src/butc/afsxbsa.c | 2903 +++++++ src/butc/afsxbsa.h | 866 ++ src/butc/butc_xbsa.c | 57 +- src/butc/butc_xbsa.h | 4 + src/butc/dbentries.c | 2 +- src/butc/dump.c | 4 +- src/butc/list.c | 2 +- src/butc/lwps.c | 2 +- src/butc/read_tape.c | 2 +- src/butc/recoverDb.c | 2 +- src/butc/tcmain.c | 3 +- src/butc/tcprocs.c | 9 +- src/butc/tcstatus.c | 2 +- src/butc/tcudbprocs.c | 3 +- src/butc/test.c | 1 - src/butc/test_budb.c | 3 +- src/butm/NTMakefile | 2 + src/butm/butm_test.c | 2 +- src/butm/file_tm.c | 2 +- src/butm/test_ftm.c | 2 +- src/cf/Makefile.am.common | 178 - src/cf/bigendian.m4 | 15 +- src/cf/kerberos.m4 | 11 +- src/cf/linux-test4.m4 | 86 + src/cf/osconf.m4 | 257 +- src/cmd/Makefile.am | 16 - src/cmd/cmd.c | 6 +- src/cmd/test/NTMakefile | 6 + src/cmd/test/ctest.c | 2 +- src/cmd/test/dtest.c | 2 +- src/cmd/test/itest.c | 2 +- src/comerr/Makefile.am | 18 - src/comerr/NTMakefile | 9 +- src/comerr/com_err.c | 2 +- src/comerr/compile_et.c | 2 +- src/comerr/compile_et.rc | 17 + src/comerr/error_msg.c | 2 +- src/comerr/error_table.h | 2 +- src/comerr/et_name.c | 2 +- src/comerr/internal.h | 2 +- src/comerr/test/NTMakefile | 2 + src/comerr/test/test.c | 2 +- src/config/Makefile.am | 18 - src/config/Makefile.config.in | 5 + src/config/NTDllmap.txt | 6 +- src/config/NTMakefile | 25 +- src/config/NTMakefile.amd64_w2k | 131 +- src/config/NTMakefile.i386_nt40 | 45 +- src/config/NTMakefile.i386_w2k | 85 +- src/config/NTMakefile.version-NOCML | 9 +- src/config/NTVersioninfo.rc | 2 +- src/config/afs_args.h | 7 + src/config/afs_sysnames.h | 5 +- src/config/afsconfig-windows.h | 6 + src/config/afsconfig.h.in | 40 + src/config/make_libafs_tree.pl | 0 src/config/param.alpha_linux_26.h | 7 +- src/config/param.amd64_linux26.h | 1 - src/config/param.amd64_w2k.h | 2 +- src/config/param.arm_linux24.h | 4 +- src/config/param.arm_linux26.h | 7 +- src/config/param.i386_fbsd_62.h | 209 + src/config/param.i386_fbsd_70.h | 211 + src/config/param.i386_linux26.h | 1 - src/config/param.i386_obsd33.h | 2 + src/config/param.i386_obsd34.h | 2 + src/config/param.i386_obsd35.h | 2 + src/config/param.i386_obsd36.h | 2 + src/config/param.i386_obsd37.h | 2 + src/config/param.i386_obsd38.h | 2 + src/config/param.i386_obsd41.h | 71 - src/config/param.i386_umlinux26.h | 1 - src/config/param.i64_w2k.h | 2 +- src/config/param.ia64_linux24.h | 2 - src/config/param.ia64_linux26.h | 3 - src/config/param.ppc64_linux26.h | 1 - src/config/param.ppc_darwin_80.h | 3 +- src/config/param.ppc_linux26.h | 1 - src/config/param.s390_linux26.h | 6 +- src/config/param.s390x_linux26.h | 6 +- src/config/param.sparc64_linux26.h | 1 - src/config/stds.h | 38 +- src/config/touch.c | 12 +- src/config/util_cr.c | 56 +- src/config/venus.h | 7 +- src/dauth/dlog.c | 2 +- src/dauth/dpass.c | 5 +- src/des/NTMakefile | 9 + src/des/cbc_encrypt.c | 2 +- src/des/crypt.c | 2 +- src/des/des.c | 2 +- src/des/key_sched.c | 2 +- src/des/make_fp.c | 2 +- src/des/make_ip.c | 2 +- src/des/make_keyperm.c | 2 +- src/des/make_p.c | 2 +- src/des/misc.c | 2 +- src/des/new_rnd_key.c | 2 +- src/des/pcbc_encrypt.c | 2 +- src/des/stats.h | 6 + src/des/util.c | 2 +- src/dir/dir.c | 2 +- src/dir/salvage.c | 2 +- src/dir/test/NTMakefile | 2 + src/export/.cvsignore | 4 + src/export/cfgexport.c | 2 +- src/finale/NTMakefile | 3 +- src/finale/translate_et.c | 3 +- src/fsint/.cvsignore | 5 + src/fsint/Makefile.in | 59 +- src/fsint/afsaux.c | 2 +- src/fsint/afscbint.xg | 12 + src/fsint/afsint.xg | 77 + src/fsint/common.xg | 27 +- src/fsint/pagcb.xg | 58 + src/fsprobe/fsprobe.c | 57 +- src/fsprobe/fsprobe_callback.c | 14 +- src/fsprobe/fsprobe_test.c | 2 +- src/ftpd43+/.cvsignore | 1 - src/gtx/curseswindows.c | 2 +- src/gtx/frame.c | 2 +- src/gtx/gtxtest.c | 2 +- src/gtx/input.c | 2 +- src/gtx/keymap.c | 2 +- src/gtx/lightobject.c | 2 +- src/gtx/object_test.c | 2 +- src/gtx/objects.c | 2 +- src/gtx/screen_test.c | 2 +- src/gtx/textcb.c | 2 +- src/gtx/textobject.c | 2 +- src/include/Makefile.am | 13 - src/include/afs/Makefile.am | 6 - src/include/rx/Makefile.am | 7 - src/inetd/.cvsignore | 1 - src/kauth/NTMakefile | 27 +- src/kauth/admin_tools.c | 2 +- src/kauth/authclient.c | 2 +- src/kauth/client.c | 2 +- src/kauth/decode_ticket.c | 2 +- src/kauth/ka-forwarder.c | 4 +- src/kauth/kaauxdb.c | 2 +- src/kauth/kadatabase.c | 2 +- src/kauth/kalocalcell.c | 2 +- src/kauth/kalog.c | 2 +- src/kauth/kaprocs.c | 2 +- src/kauth/kas.c | 2 +- src/kauth/kaserver.c | 2 +- src/kauth/kautils.c | 2 +- src/kauth/kdb.c | 2 +- src/kauth/kkids.c | 4 +- src/kauth/klog.c | 3 +- src/kauth/knfs.c | 2 +- src/kauth/kpasswd.c | 2 +- src/kauth/kpwvalid.c | 2 +- src/kauth/krb_tf.c | 2 +- src/kauth/krb_udp.c | 2 +- src/kauth/manyklog.c | 3 +- src/kauth/read_passwd.c | 2 +- src/kauth/rebuild.c | 11 +- src/kauth/test/NTMakefile | 17 +- src/kauth/test/multiklog.c | 3 +- src/kauth/test/test_badtix.c | 2 +- src/kauth/test/test_getticket.c | 2 +- src/kauth/test/test_interim_ktc.c | 2 +- src/kauth/test/test_rxkad_free.c | 2 +- src/kauth/token.c | 2 +- src/kauth/user.c | 2 +- src/kauth/user_nt.c | 2 +- src/libacl/acl.h | 12 + src/libacl/aclprocs.c | 36 +- src/libadmin/adminutil/NTMakefile | 4 +- src/libadmin/adminutil/afs_AdminInternal.h | 6 + src/libadmin/adminutil/afs_utilAdmin.c | 2 +- src/libadmin/bos/NTMakefile | 2 + src/libadmin/bos/afs_bosAdmin.c | 2 +- src/libadmin/cfg/NTMakefile | 7 +- src/libadmin/cfg/cfgclient.c | 2 +- src/libadmin/cfg/cfginternal.c | 2 +- src/libadmin/cfg/test/NTMakefile | 2 + src/libadmin/cfg/test/cfgtest.c | 2 +- src/libadmin/client/NTMakefile | 2 + src/libadmin/client/afs_clientAdmin.c | 251 +- src/libadmin/kas/NTMakefile | 2 + src/libadmin/kas/afs_kasAdmin.c | 2 +- src/libadmin/pts/NTMakefile | 2 + src/libadmin/pts/afs_ptsAdmin.c | 2 +- src/libadmin/samples/rxdebug_conns.c | 2 +- src/libadmin/samples/rxdebug_rx_stats.c | 2 +- src/libadmin/samples/rxstat_get_peer.c | 2 +- src/libadmin/samples/rxstat_get_process.c | 2 +- src/libadmin/test/NTMakefile | 2 + src/libadmin/test/afscp.c | 2 +- src/libadmin/test/bos.c | 2 +- src/libadmin/test/client.c | 2 +- src/libadmin/test/kas.c | 2 +- src/libadmin/test/pts.c | 2 +- src/libadmin/test/util.c | 2 +- src/libadmin/test/vos.c | 213 +- src/libadmin/vos/NTMakefile | 5 +- src/libadmin/vos/afs_vosAdmin.c | 188 +- src/libadmin/vos/afs_vosAdmin.h | 14 + src/libadmin/vos/lockprocs.c | 2 +- src/libadmin/vos/vosadmin.def | 3 +- src/libadmin/vos/vosutils.c | 4 +- src/libadmin/vos/vsprocs.c | 62 +- src/libadmin/vos/vsprocs.h | 5 +- src/libafs/.cvsignore | 3 + src/libafs/Makefile.common.in | 103 + src/libafs/MakefileProto.DARWIN.in | 2 +- src/libafs/MakefileProto.FBSD.in | 16 +- src/libafs/MakefileProto.LINUX.in | 63 +- src/libafs/make_kbuild_makefile.pl | 21 +- src/libafsauthent/NTMakefile | 5 +- src/libafsauthent/afsauthent.def | 60 +- src/libafsrpc/Makefile.in | 12 +- src/libafsrpc/NTMakefile | 4 +- src/libafsrpc/afsrpc.def | 11 +- src/libuafs/.cvsignore | 3 + src/libuafs/Makefile.common.in | 60 + src/libuafs/MakefileProto.FBSD.in | 4 + src/log/kseal.c | 2 +- src/log/tokens.c | 2 +- src/log/unlog.c | 2 +- src/lwp/Makefile.in | 14 +- src/lwp/NTMakefile | 6 +- src/lwp/iomgr.c | 15 +- src/lwp/lock.c | 2 +- src/lwp/lwp.c | 2 +- src/lwp/lwp_elf.h | 2 +- src/lwp/lwp_nt.c | 28 +- src/lwp/preempt.c | 2 +- src/lwp/process.amd64.s | 2 +- src/lwp/process.c | 2 +- src/lwp/test/NTMakefile | 3 +- src/lwp/test/selsubs.c | 2 +- src/lwp/threadname.c | 2 +- src/lwp/timer.c | 2 +- src/lwp/waitkey.c | 2 +- src/ntbuild.bat | 10 +- src/ntp/.cvsignore | 2 - src/null/null.c | 1 - src/package/update.c | 3 +- src/packaging/Debian/.cvsignore | 1 + src/packaging/Debian/CellServDB | 607 ++ src/packaging/Debian/ConfigUtils.pm | 8 - src/packaging/Debian/README.Debian | 61 +- src/packaging/Debian/README.servers | 18 +- src/packaging/Debian/TODO | 1 - src/packaging/Debian/afs-newcell | 8 +- src/packaging/Debian/afs.conf | 23 +- src/packaging/Debian/changelog | 421 +- src/packaging/Debian/compat | 2 +- .../Debian/configuration-transcript.txt | 771 +- src/packaging/Debian/control | 65 +- src/packaging/Debian/control.module | 20 - src/packaging/Debian/control.module-image | 17 - src/packaging/Debian/copyright | 68 +- src/packaging/Debian/doc/build-man | 56 - src/packaging/Debian/filelist | 15 - src/packaging/Debian/genchanges.sh | 19 - src/packaging/Debian/kern-sysname | 97 - src/packaging/Debian/kernel-version | 15 - src/packaging/Debian/libopenafs-dev.install | 2 +- src/packaging/Debian/make-links | 9 - src/packaging/Debian/movefiles | 14 - src/packaging/Debian/openafs-client.NEWS | 24 + src/packaging/Debian/openafs-client.conffiles | 2 - src/packaging/Debian/openafs-client.init | 248 + src/packaging/Debian/openafs-client.install | 376 +- src/packaging/Debian/openafs-client.postinst | 21 +- src/packaging/Debian/openafs-client.postrm | 38 +- src/packaging/Debian/openafs-client.templates | 26 +- .../Debian/openafs-client.undocumented | 13 - src/packaging/Debian/openafs-dbserver.dirs | 8 - src/packaging/Debian/openafs-dbserver.install | 21 +- src/packaging/Debian/openafs-dbserver.postrm | 28 + .../Debian/openafs-doc.README.Debian | 23 + .../Debian/openafs-doc.doc-base.openafs-admin | 11 + .../Debian/openafs-doc.doc-base.openafs-quick | 11 + .../Debian/openafs-doc.doc-base.openafs-user | 10 + src/packaging/Debian/openafs-doc.docs | 3 + src/packaging/Debian/openafs-doc.examples | 1 + src/packaging/Debian/openafs-fileserver.NEWS | 24 + .../Debian/openafs-fileserver.conffiles | 1 - src/packaging/Debian/openafs-fileserver.dirs | 4 +- src/packaging/Debian/openafs-fileserver.init | 156 +- .../Debian/openafs-fileserver.install | 44 +- .../Debian/openafs-fileserver.postinst | 38 +- .../Debian/openafs-fileserver.postrm | 60 +- .../Debian/openafs-fileserver.preinst | 9 - .../Debian/openafs-fileserver.templates | 2 +- .../Debian/openafs-fileserver.undocumented | 1 - src/packaging/Debian/openafs-kpasswd.install | 36 +- .../Debian/openafs-kpasswd.undocumented | 2 - src/packaging/Debian/openafs-krb5.install | 9 + .../Debian/patch.001_libafs_destination_name | 18 - .../Debian/patch.002_sketchy_hpux_process_c | 18 - .../Debian/patch.004_bozo_permissions | 16 - .../Debian/patch.006_more_bozo_permissions | 16 - src/packaging/Debian/patches/README | 9 - src/packaging/Debian/patches/afs-man-name | 1888 +++++ src/packaging/Debian/patches/alloc-vnode | 34 + src/packaging/Debian/patches/bos-permissions | 24 + src/packaging/Debian/patches/compiler-flags | 213 + src/packaging/Debian/patches/dfsg | 73 + src/packaging/Debian/patches/find-core-files | 70 + src/packaging/Debian/patches/fstrace-paths | 27 + src/packaging/Debian/patches/ktc-prototypes | 24 + src/packaging/Debian/patches/linux-2.6.24 | 421 + src/packaging/Debian/patches/module-name | 41 +- .../Debian/patches/multiple-local-realms | 578 ++ .../Debian/patches/no-admin-reference | 13 + src/packaging/Debian/patches/pam | 158 - src/packaging/Debian/patches/pam-build | 88 + src/packaging/Debian/patches/paths | 16 + src/packaging/Debian/patches/series | 11 + .../Debian/patches/ucontext-everywhere | 59 + src/packaging/Debian/po/cs.po | 46 +- src/packaging/Debian/po/de.po | 169 +- src/packaging/Debian/po/fr.po | 64 +- src/packaging/Debian/po/nl.po | 156 + src/packaging/Debian/po/pt.po | 276 + src/packaging/Debian/po/pt_BR.po | 174 +- src/packaging/Debian/po/templates.pot | 212 + src/packaging/Debian/po/vi.po | 229 +- src/packaging/Debian/po/zh_CN.po | 252 + src/packaging/Debian/postinst.mod | 5 - src/packaging/Debian/prep-modules | 103 - src/packaging/Debian/prerm.mod | 2 - src/packaging/Debian/pt_util.sgml | 184 - src/packaging/Debian/{rules => rules.in} | 248 +- src/packaging/Debian/sysname | 22 +- src/packaging/Debian/watch | 17 + .../HP-UX/psf-1.2.10-transarc-paths-11.00 | 2 +- .../HP-UX/psf-1.2.10-transarc-paths-11.11 | 2 +- .../HP-UX/psf-1.2.10-transarc-paths-11.22 | 2 +- .../HP-UX/psf-1.2.8-transarc-paths-11.00 | 590 -- .../HP-UX/psf-1.2.9-transarc-paths-11.00 | 590 -- src/packaging/OpenBSD/buildpkg.sh | 5 +- src/packaging/OpenBSD/postinstall | 2 +- src/packaging/RedHat/makesrpm.pl | 4 +- .../RedHat/openafs-1.4.0-kmodule26.patch | 8 +- src/packaging/RedHat/openafs-buildall.sh | 2 +- src/packaging/RedHat/openafs-cacheinfo | 0 src/packaging/RedHat/openafs-client.init | 2 +- .../RedHat/openafs-kernel-version.sh | 2 +- src/packaging/RedHat/openafs-kvers-is.sh | 2 +- src/packaging/RedHat/openafs-makesrc.sh | 2 +- src/packaging/RedHat/openafs-server.init | 2 +- src/packaging/RedHat/openafs.spec.in | 14 +- src/pam/Makefile.in | 2 +- src/pam/afs_auth.c | 2 +- src/pam/afs_pam_msg.c | 2 +- src/pam/afs_password.c | 2 +- src/pam/afs_setcred.c | 2 +- src/pam/afs_util.c | 2 +- src/pam/pam_afs.5 | 316 +- src/pam/test_pam.c | 2 +- src/procmgmt/Makefile.am | 9 - src/procmgmt/NTMakefile | 4 + src/procmgmt/afs/Makefile.am | 12 - src/procmgmt/procmgmt_nt.c | 24 +- src/procmgmt/redirect_nt.c | 2 +- src/procmgmt/test/NTMakefile | 2 + src/ptserver/Makefile.in | 53 +- src/ptserver/NTMakefile | 45 +- src/ptserver/db_verify.c | 2 +- src/ptserver/display.c | 6 +- src/ptserver/map.c | 6 +- src/ptserver/pt_util.c | 25 +- src/ptserver/ptclient.c | 2 +- src/ptserver/ptclient.rc | 17 + src/ptserver/ptprocs.c | 89 +- src/ptserver/pts.c | 51 +- src/ptserver/ptserver.c | 7 +- src/ptserver/ptuser.c | 6 +- src/ptserver/ptuser.h | 2 +- src/ptserver/ptutils.c | 58 +- src/ptserver/readgroup.c | 2 +- src/ptserver/readpwd.c | 2 +- src/ptserver/testpt.c | 2 +- src/ptserver/ubik.c | 4 +- src/ptserver/utils.c | 13 +- src/rcp/.cvsignore | 1 - src/rlogind/.cvsignore | 1 - src/rsh/.cvsignore | 1 - src/rx/AIX/rx_knet.c | 2 +- src/rx/DARWIN/rx_kmutex.c | 2 +- src/rx/DARWIN/rx_knet.c | 2 +- src/rx/DUX/rx_knet.c | 2 +- src/rx/FBSD/rx_knet.c | 2 +- src/rx/IRIX/rx_knet.c | 2 +- src/rx/LINUX/rx_kmutex.c | 2 +- src/rx/LINUX/rx_knet.c | 108 +- src/rx/NTMakefile | 23 +- src/rx/SOLARIS/rx_knet.c | 6 +- src/rx/SUNOS/rx_kmutex.h | 2 +- src/rx/UKERNEL/rx_kcommon.h | 2 + src/rx/UKERNEL/rx_knet.c | 2 +- src/rx/rx.c | 680 +- src/rx/rx.h | 82 +- src/rx/rx_clock.c | 2 +- src/rx/rx_clock_nt.c | 2 +- src/rx/rx_conncache.c | 2 +- src/rx/rx_event.c | 14 +- src/rx/rx_getaddr.c | 2 +- src/rx/rx_globals.c | 2 +- src/rx/rx_globals.h | 36 +- src/rx/rx_kcommon.c | 8 +- src/rx/rx_lwp.c | 24 +- src/rx/rx_misc.c | 8 +- src/rx/rx_multi.c | 2 +- src/rx/rx_packet.c | 113 +- src/rx/rx_packet.h | 6 +- src/rx/rx_prototypes.h | 6 + src/rx/rx_pthread.c | 39 +- src/rx/rx_queue.h | 32 + src/rx/rx_rdwr.c | 44 +- src/rx/rx_trace.c | 2 +- src/rx/rx_user.c | 141 +- src/rx/rx_user.h | 5 + src/rx/rx_xmit_nt.c | 6 +- src/rx/rx_xmit_nt.h | 6 +- src/rx/rxdebug.c | 616 -- src/rx/rxperf.c | 165 +- src/rx/test/NTMakefile | 8 + src/rx/test/generator.c | 11 +- src/rx/xdr.c | 2 +- src/rx/xdr.h | 1 - src/rx/xdr_afsuuid.c | 2 +- src/rx/xdr_array.c | 4 +- src/rx/xdr_arrayn.c | 2 +- src/rx/xdr_int32.c | 2 +- src/rx/xdr_int64.c | 2 +- src/rx/xdr_mem.c | 8 +- src/rx/xdr_prototypes.h | 7 + src/rx/xdr_rec.c | 22 +- src/rx/xdr_refernce.c | 2 +- src/rx/xdr_rx.c | 2 +- src/rxdebug/NTMakefile | 46 + src/rxdebug/rxdebug.c | 42 +- src/rxgen/Makefile.am | 19 - src/rxgen/Makefile.in | 2 +- src/rxgen/NTMakefile | 13 +- src/rxgen/rpc_cout.c | 2 +- src/rxgen/rpc_hout.c | 4 +- src/rxgen/rpc_main.c | 8 +- src/rxgen/rpc_parse.c | 4 +- src/rxgen/rpc_scan.c | 8 +- src/rxgen/rpc_svcout.c | 2 +- src/rxgen/rpc_util.c | 2 +- src/{rx/rxdebug.rc => rxgen/rxgen.rc} | 8 +- src/rxgk/Makefile.am | 80 - src/rxgk/Makefile.in | 933 --- src/rxgk/README | 225 - src/rxgk/rxgk.h | 91 - src/rxgk/rxgk_clnt.c | 417 - src/rxgk/rxgk_common.c | 392 - src/rxgk/rxgk_crkrb.c | 255 - src/rxgk/rxgk_crlha.c | 447 - src/rxgk/rxgk_crpc.c | 61 - src/rxgk/rxgk_locl.h | 164 - src/rxgk/rxgk_proto.xg | 202 - src/rxgk/rxgk_serv.c | 498 -- src/rxgk/rxgk_srpc.c | 388 - src/rxgk/test.xg | 21 - src/rxgk/test_client.c | 202 - src/rxgk/test_server.c | 76 - src/rxkad/NTMakefile | 2 +- src/rxkad/bg-fcrypt.c | 2 +- src/rxkad/crc.c | 2 +- src/rxkad/domestic/crypt_conn.c | 4 +- src/rxkad/domestic/fcrypt.c | 2 +- src/rxkad/hash.h | 2 +- src/rxkad/md4.c | 2 +- src/rxkad/md4.h | 2 +- src/rxkad/md5.c | 2 +- src/rxkad/md5.h | 2 +- src/rxkad/rxkad_client.c | 4 +- src/rxkad/rxkad_common.c | 2 +- src/rxkad/rxkad_server.c | 4 +- src/rxkad/test/NTMakefile | 2 + src/rxkad/test/stress.c | 2 +- src/rxkad/test/stress_c.c | 2 +- src/rxkad/ticket.c | 2 +- src/rxkad/ticket5.c | 2 +- src/rxstat/rxstat.c | 6 +- src/scout/scout.c | 2 +- src/sgistuff/herror.c | 2 +- src/sgistuff/rcmd.c | 2 +- src/sgistuff/ta-rauth.c | 2 +- src/shlibafsauthent/NTMakefile | 2 + src/shlibafsrpc/Makefile.in | 6 +- src/sys/.cvsignore | 3 + src/sys/Makefile.in | 4 +- src/sys/afssyscalls.c | 2 +- src/sys/glue.c | 2 +- src/sys/pagsh.c | 2 +- src/sys/pioctl_nt.c | 240 +- src/sys/pioctl_nt.h | 3 + src/sys/rmtsys.xg | 1 + src/sys/rmtsysc.c | 2 +- src/sys/rmtsysd.c | 2 +- src/sys/rmtsysnet.c | 2 +- src/sys/rmtsyss.c | 2 +- src/sys/setpag.c | 2 +- src/tbudb/.cvsignore | 8 + src/tbudb/Makefile.in | 198 + src/tbutc/Makefile.in | 5 +- src/tbutc/NTMakefile | 16 +- src/tbutc/butc.rc | 17 + src/tests/create-stat.c | 3 +- src/tests/dumpscan.h | 1 - src/tests/dumptool.c | 12 +- src/tests/fs_lib.c | 1 - src/tests/hardlink5 | 2 +- src/tests/run-rcs | 0 src/tests/run-tests.in | 4 +- src/tptserver/.cvsignore | 14 + src/tptserver/Makefile.in | 279 + src/tsalvaged/.cvsignore | 4 + src/tsalvaged/Makefile.in | 200 + src/tsalvaged/salvsync-debug.c | 475 ++ src/tsm41/aix41_auth.c | 2 +- src/tsm41/aix41_ident.c | 2 +- src/tsm41/aix5_auth.c | 2 +- src/tsm41/aix_aklog.c | 2 +- src/tsm41/aix_auth_common.c | 2 +- src/tsm41/aix_ktc.c | 2 +- src/tubik/.cvsignore | 15 + src/tubik/Makefile.in | 298 + src/tviced/.cvsignore | 1 + src/tviced/Makefile.in | 43 +- src/tviced/NTMakefile | 32 +- src/tviced/serialize_state.c | 1114 +++ src/tviced/serialize_state.h | 311 + src/tviced/state_analyzer.c | 2002 +++++ src/tvlserver/.cvsignore | 14 + src/tvlserver/Makefile.in | 217 + src/tvolser/.cvsignore | 3 + src/tvolser/Makefile.in | 63 +- src/tvolser/NTMakefile | 127 + src/ubik/NTMakefile | 8 +- src/ubik/beacon.c | 14 +- src/ubik/disk.c | 21 +- src/ubik/phys.c | 9 +- src/ubik/recovery.c | 50 +- src/ubik/remote.c | 10 +- src/ubik/ubik.c | 87 +- src/ubik/ubik.p.h | 8 + src/ubik/ubikclient.c | 2 +- src/ubik/ubikcmd.c | 2 +- src/ubik/udebug.c | 22 +- src/ubik/uinit.c | 3 +- src/ubik/utst_client.c | 10 +- src/ubik/utst_server.c | 22 +- src/ubik/vote.c | 2 +- src/update/NTMakefile | 11 +- src/update/client.c | 2 +- src/update/server.c | 2 +- src/update/utils.c | 2 +- src/usd/test/NTMakefile | 2 + src/usd/usd_file.c | 2 +- src/uss/lex.l | 2 +- src/uss/uss.c | 2 +- src/uss/uss_acl.c | 2 +- src/uss/uss_common.c | 2 +- src/uss/uss_fs.c | 2 +- src/uss/uss_kauth.c | 2 +- src/uss/uss_procs.c | 2 +- src/uss/uss_ptserver.c | 2 +- src/uss/uss_vol.c | 3 +- src/util/Makefile.am | 32 - src/util/Makefile.in | 10 +- src/util/NTMakefile | 5 +- src/util/afs/Makefile.am | 26 - src/util/afs_lhash.c | 2 +- src/util/afsutil_prototypes.h | 10 +- src/util/assert.c | 4 +- src/util/casestrcpy.c | 2 +- src/util/dirpath.c | 60 +- src/util/dirpath.hin | 19 + src/util/dirpath_nt.h | 19 + src/util/errmap_nt.h | 30 +- src/util/errors.h | 1 + src/util/fileutil.c | 2 +- src/util/flipbase64.c | 2 +- src/util/get_krbrlm.c | 141 +- src/util/hostparse.c | 8 +- src/util/kreltime.c | 2 +- src/util/ktime.c | 45 +- src/util/netutils.c | 2 +- src/util/pthread_glock.c | 2 +- src/util/readdir_nt.c | 4 +- src/util/regex.c | 4 +- src/util/rxkstats.c | 4 +- src/util/serverLog.c | 6 +- src/util/snprintf.c | 13 +- src/util/softsig.c | 2 +- src/util/strlcat.c | 2 +- src/util/strnlen.c | 35 + src/util/sys.c | 2 +- src/util/test/NTMakefile | 2 + src/util/test/dirpath_test.c | 4 +- src/util/uuid.c | 2 +- src/util/volparse.c | 121 +- src/util/winsock_nt.c | 3 +- src/venus/Makefile.in | 18 +- src/venus/cacheout.c | 2 +- src/venus/cmdebug.c | 2 +- src/venus/dedebug.c | 122 + src/venus/fs.c | 263 +- src/venus/fstrace.c | 12 +- src/venus/gcpags.c | 3 +- src/venus/kdump.c | 2 +- src/venus/livesys.c | 2 +- src/venus/test/fulltest.c | 2 +- src/venus/test/getinitparams.c | 2 +- src/venus/test/idtest.c | 2 +- src/venus/test/owntest.c | 2 +- src/venus/twiddle.c | 3 +- src/venus/up.c | 2 +- src/venus/whatfid.c | 3 +- src/vfsck/dir.c | 2 +- src/vfsck/dirutils.c | 2 +- src/vfsck/inode.c | 2 +- src/vfsck/main.c | 2 +- src/vfsck/pass2.c | 2 +- src/vfsck/pass5.c | 2 +- src/vfsck/setup.c | 2 +- src/vfsck/utilities.c | 2 +- src/vfsck/vprintf.c | 2 +- src/viced/Makefile.in | 1 + src/viced/NTMakefile | 39 +- src/viced/afsfileprocs.c | 364 +- src/viced/callback.c | 1276 ++- src/viced/callback.h | 158 + src/viced/cbd.rc | 17 + src/viced/check_sysid.c | 2 +- src/viced/fsprobe.c | 41 +- src/viced/host.c | 1013 ++- src/viced/host.h | 61 +- src/viced/physio.c | 2 +- src/viced/viced.c | 309 +- src/viced/viced.h | 62 +- src/viced/viced_prototypes.h | 27 +- src/vlserver/Makefile.in | 36 +- src/vlserver/NTMakefile | 36 +- src/vlserver/cnvldb.c | 2 +- src/vlserver/sascnvldb.c | 3 +- src/vlserver/vlclient.c | 6 +- src/vlserver/vldb_check.c | 370 +- src/vlserver/vlprocs.c | 14 +- src/vlserver/vlserver.c | 6 +- src/vlserver/vlserver.p.h | 1 + src/vlserver/vlutils.c | 2 +- src/vol/.cvsignore | 1 + src/vol/Makefile.in | 106 +- src/vol/NTMakefile | 39 +- src/vol/clone.c | 7 +- src/vol/daemon_com.c | 695 ++ src/vol/daemon_com.h | 212 + src/vol/devname.c | 2 +- src/vol/fs_conv_411.c | 2 +- src/vol/fssync-client.c | 216 + src/vol/fssync-debug.c | 1344 +++ src/vol/fssync-debug.rc | 17 + src/vol/fssync-server.c | 1658 ++++ src/vol/fssync.c | 810 -- src/vol/fssync.h | 176 +- src/vol/fstab.c | 0 src/vol/ihandle.c | 2 +- src/vol/listinodes.c | 12 +- src/vol/namei_ops.c | 14 +- src/vol/ntops.c | 2 +- src/vol/nuke.c | 3 +- src/vol/partition.c | 165 +- src/vol/partition.h | 51 +- src/vol/physio.c | 2 +- src/vol/purge.c | 27 +- src/vol/salvage.h | 5 + src/vol/salvaged.c | 749 ++ src/vol/salvager.c | 495 ++ src/vol/salvsync-client.c | 211 + src/vol/salvsync-server.c | 1346 +++ src/vol/salvsync.h | 167 + src/vol/test/NTMakefile | 4 + src/vol/test/listVicepx.c | 3 +- src/vol/test/updateDirInode.c | 3 +- src/vol/vnode.c | 1397 +++- src/vol/vnode.h | 82 +- src/vol/vnode_inline.h | 375 + src/vol/vol-bless.c | 2 +- src/vol/vol-info.c | 29 +- src/vol/vol-salvage.c | 782 +- src/vol/vol-salvage.h | 281 + src/vol/voldefs.h | 5 + src/vol/volinodes.h | 5 + src/vol/volume.c | 7401 ++++++++++++++--- src/vol/volume.h | 425 +- src/vol/volume_inline.h | 203 + src/vol/vutil.c | 16 +- src/volser/NTMakefile | 15 +- src/volser/common.c | 2 +- src/volser/dumpstuff.c | 28 +- src/volser/lockprocs.c | 61 +- src/volser/lockprocs_prototypes.h | 18 + src/volser/physio.c | 2 +- src/volser/restorevol.c | 6 +- src/volser/vol-dump.c | 18 +- src/volser/volint.xg | 17 +- src/volser/volmain.c | 13 +- src/volser/volprocs.c | 925 +- src/volser/volser.p.h | 3 +- src/volser/volser_prototypes.h | 27 +- src/volser/voltrans.c | 3 +- src/volser/vos.c | 95 +- src/volser/vsprocs.c | 162 +- src/volser/vsutils.c | 94 +- src/volser/vsutils_prototypes.h | 17 + src/xstat/NTMakefile | 2 + src/xstat/xstat_cm.c | 2 +- src/xstat/xstat_cm_test.c | 19 +- src/xstat/xstat_fs.c | 2 +- src/xstat/xstat_fs_callback.c | 14 +- src/xstat/xstat_fs_test.c | 11 +- 1357 files changed, 64711 insertions(+), 67227 deletions(-) delete mode 100644 README-WIN9X mode change 100755 => 100644 config.sub create mode 100644 doc/arch/README create mode 100644 doc/arch/dafs-fsa.dot delete mode 100644 doc/html/AdminReference/auarf000.htm delete mode 100644 doc/html/AdminReference/auarf002.htm delete mode 100644 doc/html/AdminReference/auarf003.htm delete mode 100644 doc/html/AdminReference/auarf004.htm delete mode 100644 doc/html/AdminReference/auarf005.htm delete mode 100644 doc/html/AdminReference/auarf006.htm delete mode 100644 doc/html/AdminReference/auarf007.htm delete mode 100644 doc/html/AdminReference/auarf008.htm delete mode 100644 doc/html/AdminReference/auarf009.htm delete mode 100644 doc/html/AdminReference/auarf010.htm delete mode 100644 doc/html/AdminReference/auarf011.htm delete mode 100644 doc/html/AdminReference/auarf012.htm delete mode 100644 doc/html/AdminReference/auarf013.htm delete mode 100644 doc/html/AdminReference/auarf014.htm delete mode 100644 doc/html/AdminReference/auarf015.htm delete mode 100644 doc/html/AdminReference/auarf016.htm delete mode 100644 doc/html/AdminReference/auarf017.htm delete mode 100644 doc/html/AdminReference/auarf018.htm delete mode 100644 doc/html/AdminReference/auarf019.htm delete mode 100644 doc/html/AdminReference/auarf020.htm delete mode 100644 doc/html/AdminReference/auarf021.htm delete mode 100644 doc/html/AdminReference/auarf022.htm delete mode 100644 doc/html/AdminReference/auarf023.htm delete mode 100644 doc/html/AdminReference/auarf024.htm delete mode 100644 doc/html/AdminReference/auarf025.htm delete mode 100644 doc/html/AdminReference/auarf026.htm delete mode 100644 doc/html/AdminReference/auarf027.htm delete mode 100644 doc/html/AdminReference/auarf028.htm delete mode 100644 doc/html/AdminReference/auarf029.htm delete mode 100644 doc/html/AdminReference/auarf030.htm delete mode 100644 doc/html/AdminReference/auarf031.htm delete mode 100644 doc/html/AdminReference/auarf032.htm delete mode 100644 doc/html/AdminReference/auarf033.htm delete mode 100644 doc/html/AdminReference/auarf034.htm delete mode 100644 doc/html/AdminReference/auarf035.htm delete mode 100644 doc/html/AdminReference/auarf036.htm delete mode 100644 doc/html/AdminReference/auarf037.htm delete mode 100644 doc/html/AdminReference/auarf038.htm delete mode 100644 doc/html/AdminReference/auarf039.htm delete mode 100644 doc/html/AdminReference/auarf040.htm delete mode 100644 doc/html/AdminReference/auarf041.htm delete mode 100644 doc/html/AdminReference/auarf042.htm delete mode 100644 doc/html/AdminReference/auarf043.htm delete mode 100644 doc/html/AdminReference/auarf044.htm delete mode 100644 doc/html/AdminReference/auarf045.htm delete mode 100644 doc/html/AdminReference/auarf046.htm delete mode 100644 doc/html/AdminReference/auarf047.htm delete mode 100644 doc/html/AdminReference/auarf048.htm delete mode 100644 doc/html/AdminReference/auarf049.htm delete mode 100644 doc/html/AdminReference/auarf050.htm delete mode 100644 doc/html/AdminReference/auarf051.htm delete mode 100644 doc/html/AdminReference/auarf052.htm delete mode 100644 doc/html/AdminReference/auarf053.htm delete mode 100644 doc/html/AdminReference/auarf054.htm delete mode 100644 doc/html/AdminReference/auarf055.htm delete mode 100644 doc/html/AdminReference/auarf056.htm delete mode 100644 doc/html/AdminReference/auarf057.htm delete mode 100644 doc/html/AdminReference/auarf058.htm delete mode 100644 doc/html/AdminReference/auarf059.htm delete mode 100644 doc/html/AdminReference/auarf060.htm delete mode 100644 doc/html/AdminReference/auarf061.htm delete mode 100644 doc/html/AdminReference/auarf062.htm delete mode 100644 doc/html/AdminReference/auarf063.htm delete mode 100644 doc/html/AdminReference/auarf064.htm delete mode 100644 doc/html/AdminReference/auarf065.htm delete mode 100644 doc/html/AdminReference/auarf066.htm delete mode 100644 doc/html/AdminReference/auarf067.htm delete mode 100644 doc/html/AdminReference/auarf068.htm delete mode 100644 doc/html/AdminReference/auarf069.htm delete mode 100644 doc/html/AdminReference/auarf070.htm delete mode 100644 doc/html/AdminReference/auarf071.htm delete mode 100644 doc/html/AdminReference/auarf072.htm delete mode 100644 doc/html/AdminReference/auarf073.htm delete mode 100644 doc/html/AdminReference/auarf074.htm delete mode 100644 doc/html/AdminReference/auarf075.htm delete mode 100644 doc/html/AdminReference/auarf076.htm delete mode 100644 doc/html/AdminReference/auarf077.htm delete mode 100644 doc/html/AdminReference/auarf078.htm delete mode 100644 doc/html/AdminReference/auarf079.htm delete mode 100644 doc/html/AdminReference/auarf080.htm delete mode 100644 doc/html/AdminReference/auarf081.htm delete mode 100644 doc/html/AdminReference/auarf082.htm delete mode 100644 doc/html/AdminReference/auarf083.htm delete mode 100644 doc/html/AdminReference/auarf084.htm delete mode 100644 doc/html/AdminReference/auarf085.htm delete mode 100644 doc/html/AdminReference/auarf086.htm delete mode 100644 doc/html/AdminReference/auarf087.htm delete mode 100644 doc/html/AdminReference/auarf088.htm delete mode 100644 doc/html/AdminReference/auarf089.htm delete mode 100644 doc/html/AdminReference/auarf090.htm delete mode 100644 doc/html/AdminReference/auarf091.htm delete mode 100644 doc/html/AdminReference/auarf092.htm delete mode 100644 doc/html/AdminReference/auarf093.htm delete mode 100644 doc/html/AdminReference/auarf094.htm delete mode 100644 doc/html/AdminReference/auarf095.htm delete mode 100644 doc/html/AdminReference/auarf096.htm delete mode 100644 doc/html/AdminReference/auarf097.htm delete mode 100644 doc/html/AdminReference/auarf098.htm delete mode 100644 doc/html/AdminReference/auarf099.htm delete mode 100644 doc/html/AdminReference/auarf100.htm delete mode 100644 doc/html/AdminReference/auarf101.htm delete mode 100644 doc/html/AdminReference/auarf102.htm delete mode 100644 doc/html/AdminReference/auarf103.htm delete mode 100644 doc/html/AdminReference/auarf104.htm delete mode 100644 doc/html/AdminReference/auarf105.htm delete mode 100644 doc/html/AdminReference/auarf106.htm delete mode 100644 doc/html/AdminReference/auarf107.htm delete mode 100644 doc/html/AdminReference/auarf108.htm delete mode 100644 doc/html/AdminReference/auarf109.htm delete mode 100644 doc/html/AdminReference/auarf110.htm delete mode 100644 doc/html/AdminReference/auarf111.htm delete mode 100644 doc/html/AdminReference/auarf112.htm delete mode 100644 doc/html/AdminReference/auarf113.htm delete mode 100644 doc/html/AdminReference/auarf114.htm delete mode 100644 doc/html/AdminReference/auarf115.htm delete mode 100644 doc/html/AdminReference/auarf116.htm delete mode 100644 doc/html/AdminReference/auarf117.htm delete mode 100644 doc/html/AdminReference/auarf118.htm delete mode 100644 doc/html/AdminReference/auarf119.htm delete mode 100644 doc/html/AdminReference/auarf120.htm delete mode 100644 doc/html/AdminReference/auarf121.htm delete mode 100644 doc/html/AdminReference/auarf122.htm delete mode 100644 doc/html/AdminReference/auarf123.htm delete mode 100644 doc/html/AdminReference/auarf124.htm delete mode 100644 doc/html/AdminReference/auarf125.htm delete mode 100644 doc/html/AdminReference/auarf126.htm delete mode 100644 doc/html/AdminReference/auarf127.htm delete mode 100644 doc/html/AdminReference/auarf128.htm delete mode 100644 doc/html/AdminReference/auarf129.htm delete mode 100644 doc/html/AdminReference/auarf130.htm delete mode 100644 doc/html/AdminReference/auarf131.htm delete mode 100644 doc/html/AdminReference/auarf132.htm delete mode 100644 doc/html/AdminReference/auarf133.htm delete mode 100644 doc/html/AdminReference/auarf134.htm delete mode 100644 doc/html/AdminReference/auarf135.htm delete mode 100644 doc/html/AdminReference/auarf136.htm delete mode 100644 doc/html/AdminReference/auarf137.htm delete mode 100644 doc/html/AdminReference/auarf138.htm delete mode 100644 doc/html/AdminReference/auarf139.htm delete mode 100644 doc/html/AdminReference/auarf140.htm delete mode 100644 doc/html/AdminReference/auarf141.htm delete mode 100644 doc/html/AdminReference/auarf142.htm delete mode 100644 doc/html/AdminReference/auarf143.htm delete mode 100644 doc/html/AdminReference/auarf144.htm delete mode 100644 doc/html/AdminReference/auarf145.htm delete mode 100644 doc/html/AdminReference/auarf146.htm delete mode 100644 doc/html/AdminReference/auarf147.htm delete mode 100644 doc/html/AdminReference/auarf148.htm delete mode 100644 doc/html/AdminReference/auarf149.htm delete mode 100644 doc/html/AdminReference/auarf150.htm delete mode 100644 doc/html/AdminReference/auarf151.htm delete mode 100644 doc/html/AdminReference/auarf152.htm delete mode 100644 doc/html/AdminReference/auarf153.htm delete mode 100644 doc/html/AdminReference/auarf154.htm delete mode 100644 doc/html/AdminReference/auarf155.htm delete mode 100644 doc/html/AdminReference/auarf156.htm delete mode 100644 doc/html/AdminReference/auarf157.htm delete mode 100644 doc/html/AdminReference/auarf158.htm delete mode 100644 doc/html/AdminReference/auarf159.htm delete mode 100644 doc/html/AdminReference/auarf160.htm delete mode 100644 doc/html/AdminReference/auarf161.htm delete mode 100644 doc/html/AdminReference/auarf162.htm delete mode 100644 doc/html/AdminReference/auarf163.htm delete mode 100644 doc/html/AdminReference/auarf164.htm delete mode 100644 doc/html/AdminReference/auarf165.htm delete mode 100644 doc/html/AdminReference/auarf166.htm delete mode 100644 doc/html/AdminReference/auarf167.htm delete mode 100644 doc/html/AdminReference/auarf168.htm delete mode 100644 doc/html/AdminReference/auarf169.htm delete mode 100644 doc/html/AdminReference/auarf170.htm delete mode 100644 doc/html/AdminReference/auarf171.htm delete mode 100644 doc/html/AdminReference/auarf172.htm delete mode 100644 doc/html/AdminReference/auarf173.htm delete mode 100644 doc/html/AdminReference/auarf174.htm delete mode 100644 doc/html/AdminReference/auarf175.htm delete mode 100644 doc/html/AdminReference/auarf176.htm delete mode 100644 doc/html/AdminReference/auarf177.htm delete mode 100644 doc/html/AdminReference/auarf178.htm delete mode 100644 doc/html/AdminReference/auarf179.htm delete mode 100644 doc/html/AdminReference/auarf180.htm delete mode 100644 doc/html/AdminReference/auarf181.htm delete mode 100644 doc/html/AdminReference/auarf182.htm delete mode 100644 doc/html/AdminReference/auarf183.htm delete mode 100644 doc/html/AdminReference/auarf184.htm delete mode 100644 doc/html/AdminReference/auarf185.htm delete mode 100644 doc/html/AdminReference/auarf186.htm delete mode 100644 doc/html/AdminReference/auarf187.htm delete mode 100644 doc/html/AdminReference/auarf188.htm delete mode 100644 doc/html/AdminReference/auarf189.htm delete mode 100644 doc/html/AdminReference/auarf190.htm delete mode 100644 doc/html/AdminReference/auarf191.htm delete mode 100644 doc/html/AdminReference/auarf192.htm delete mode 100644 doc/html/AdminReference/auarf193.htm delete mode 100644 doc/html/AdminReference/auarf194.htm delete mode 100644 doc/html/AdminReference/auarf195.htm delete mode 100644 doc/html/AdminReference/auarf196.htm delete mode 100644 doc/html/AdminReference/auarf197.htm delete mode 100644 doc/html/AdminReference/auarf198.htm delete mode 100644 doc/html/AdminReference/auarf199.htm delete mode 100644 doc/html/AdminReference/auarf200.htm delete mode 100644 doc/html/AdminReference/auarf201.htm delete mode 100644 doc/html/AdminReference/auarf202.htm delete mode 100644 doc/html/AdminReference/auarf203.htm delete mode 100644 doc/html/AdminReference/auarf204.htm delete mode 100644 doc/html/AdminReference/auarf205.htm delete mode 100644 doc/html/AdminReference/auarf206.htm delete mode 100644 doc/html/AdminReference/auarf207.htm delete mode 100644 doc/html/AdminReference/auarf208.htm delete mode 100644 doc/html/AdminReference/auarf209.htm delete mode 100644 doc/html/AdminReference/auarf210.htm delete mode 100644 doc/html/AdminReference/auarf211.htm delete mode 100644 doc/html/AdminReference/auarf212.htm delete mode 100644 doc/html/AdminReference/auarf213.htm delete mode 100644 doc/html/AdminReference/auarf214.htm delete mode 100644 doc/html/AdminReference/auarf215.htm delete mode 100644 doc/html/AdminReference/auarf216.htm delete mode 100644 doc/html/AdminReference/auarf217.htm delete mode 100644 doc/html/AdminReference/auarf218.htm delete mode 100644 doc/html/AdminReference/auarf219.htm delete mode 100644 doc/html/AdminReference/auarf220.htm delete mode 100644 doc/html/AdminReference/auarf221.htm delete mode 100644 doc/html/AdminReference/auarf222.htm delete mode 100644 doc/html/AdminReference/auarf223.htm delete mode 100644 doc/html/AdminReference/auarf224.htm delete mode 100644 doc/html/AdminReference/auarf225.htm delete mode 100644 doc/html/AdminReference/auarf226.htm delete mode 100644 doc/html/AdminReference/auarf227.htm delete mode 100644 doc/html/AdminReference/auarf228.htm delete mode 100644 doc/html/AdminReference/auarf229.htm delete mode 100644 doc/html/AdminReference/auarf230.htm delete mode 100644 doc/html/AdminReference/auarf231.htm delete mode 100644 doc/html/AdminReference/auarf232.htm delete mode 100644 doc/html/AdminReference/auarf233.htm delete mode 100644 doc/html/AdminReference/auarf234.htm delete mode 100644 doc/html/AdminReference/auarf235.htm delete mode 100644 doc/html/AdminReference/auarf236.htm delete mode 100644 doc/html/AdminReference/auarf237.htm delete mode 100644 doc/html/AdminReference/auarf238.htm delete mode 100644 doc/html/AdminReference/auarf239.htm delete mode 100644 doc/html/AdminReference/auarf240.htm delete mode 100644 doc/html/AdminReference/auarf241.htm delete mode 100644 doc/html/AdminReference/auarf242.htm delete mode 100644 doc/html/AdminReference/auarf243.htm delete mode 100644 doc/html/AdminReference/auarf244.htm delete mode 100644 doc/html/AdminReference/auarf245.htm delete mode 100644 doc/html/AdminReference/auarf246.htm delete mode 100644 doc/html/AdminReference/auarf247.htm delete mode 100644 doc/html/AdminReference/auarf248.htm delete mode 100644 doc/html/AdminReference/auarf249.htm delete mode 100644 doc/html/AdminReference/auarf250.htm delete mode 100644 doc/html/AdminReference/auarf251.htm delete mode 100644 doc/html/AdminReference/auarf252.htm delete mode 100644 doc/html/AdminReference/auarf253.htm delete mode 100644 doc/html/AdminReference/auarf254.htm delete mode 100644 doc/html/AdminReference/auarf255.htm delete mode 100644 doc/html/AdminReference/auarf256.htm delete mode 100644 doc/html/AdminReference/auarf257.htm delete mode 100644 doc/html/AdminReference/auarf258.htm delete mode 100644 doc/html/AdminReference/auarf259.htm delete mode 100644 doc/html/AdminReference/auarf260.htm delete mode 100644 doc/html/AdminReference/auarf261.htm delete mode 100644 doc/html/AdminReference/auarf262.htm delete mode 100644 doc/html/AdminReference/auarf263.htm delete mode 100644 doc/html/AdminReference/auarf264.htm delete mode 100644 doc/html/AdminReference/auarf265.htm delete mode 100644 doc/html/AdminReference/auarf266.htm delete mode 100644 doc/html/AdminReference/auarf267.htm delete mode 100644 doc/html/AdminReference/auarf268.htm delete mode 100644 doc/html/AdminReference/auarf269.htm delete mode 100644 doc/html/AdminReference/auarf270.htm delete mode 100644 doc/html/AdminReference/auarf271.htm delete mode 100644 doc/html/AdminReference/auarf272.htm delete mode 100644 doc/html/AdminReference/auarf273.htm delete mode 100644 doc/html/AdminReference/auarf274.htm delete mode 100644 doc/html/AdminReference/auarf275.htm delete mode 100644 doc/html/AdminReference/auarf276.htm delete mode 100644 doc/html/AdminReference/auarf277.htm delete mode 100644 doc/html/AdminReference/auarf278.htm delete mode 100644 doc/html/AdminReference/auarf279.htm delete mode 100644 doc/html/AdminReference/auarf280.htm delete mode 100644 doc/html/AdminReference/auarf281.htm delete mode 100644 doc/html/AdminReference/auarf282.htm delete mode 100644 doc/html/AdminReference/auarf283.htm delete mode 100644 doc/html/AdminReference/auarf284.htm create mode 100644 doc/man-pages/NTMakefile create mode 100644 doc/man-pages/man1/klog.krb5.1 create mode 100644 doc/man-pages/man1/vos_clone.1 create mode 100644 doc/man-pages/man5/krb.conf.5 create mode 100644 doc/man-pages/man8/salvageserver.8 create mode 100644 doc/man-pages/man8/vldb_convert.8 create mode 100644 doc/man-pages/pod1/klog.krb5.pod create mode 100644 doc/man-pages/pod1/vos_clone.pod create mode 100644 doc/man-pages/pod5/krb.conf.pod create mode 100644 doc/man-pages/pod8/salvageserver.pod create mode 100644 doc/man-pages/pod8/vldb_convert.pod create mode 100644 doc/txt/README.linux-nfstrans delete mode 100644 doc/txt/RELNOTES-1.4.1 delete mode 100644 doc/txt/RELNOTES-1.4.2 delete mode 100644 doc/txt/RELNOTES-1.4.2fc4 delete mode 100644 src/NTMake9x delete mode 100644 src/TechNotes-WIN9X create mode 100644 src/afs/LINUX/osi_export.c create mode 100644 src/afs/LINUX/osi_ioctl.c create mode 100644 src/afs/LINUX/osi_nfssrv.c create mode 100644 src/afs/LINUX/osi_pag_module.c create mode 100644 src/afs/LINUX/osi_proc.c delete mode 100644 src/afs/Makefile.am create mode 100644 src/afs/afs_disconnected.c create mode 100644 src/afs/afs_dynroot.h create mode 100644 src/afs/afs_error.c create mode 100644 src/afs/afs_icl.c create mode 100644 src/afs/afs_md5.c rename src/{rxgk/rxgk_info.c => afs/afs_md5.h} (57%) create mode 100644 src/afs/afs_osi_gcpags.c create mode 100644 src/afs/afs_osi_vm.c create mode 100644 src/afs/afs_pag_call.c create mode 100644 src/afs/afs_pag_cred.c create mode 100644 src/afs/afs_syscall.c create mode 100644 src/afs/afs_warn.c create mode 100644 src/afs/discon.h create mode 100644 src/butc/afsxbsa.c create mode 100644 src/butc/afsxbsa.h delete mode 100644 src/cf/Makefile.am.common delete mode 100644 src/cmd/Makefile.am delete mode 100644 src/comerr/Makefile.am create mode 100644 src/comerr/compile_et.rc delete mode 100644 src/config/Makefile.am mode change 100644 => 100755 src/config/make_libafs_tree.pl create mode 100644 src/config/param.i386_fbsd_62.h create mode 100644 src/config/param.i386_fbsd_70.h delete mode 100644 src/config/param.i386_obsd41.h create mode 100644 src/fsint/pagcb.xg delete mode 100644 src/ftpd43+/.cvsignore delete mode 100644 src/include/Makefile.am delete mode 100644 src/include/afs/Makefile.am delete mode 100644 src/include/rx/Makefile.am delete mode 100644 src/inetd/.cvsignore delete mode 100644 src/ntp/.cvsignore create mode 100644 src/packaging/Debian/.cvsignore create mode 100644 src/packaging/Debian/CellServDB delete mode 100644 src/packaging/Debian/control.module delete mode 100644 src/packaging/Debian/control.module-image delete mode 100644 src/packaging/Debian/doc/build-man delete mode 100644 src/packaging/Debian/filelist delete mode 100644 src/packaging/Debian/genchanges.sh delete mode 100644 src/packaging/Debian/kern-sysname delete mode 100644 src/packaging/Debian/kernel-version delete mode 100644 src/packaging/Debian/make-links delete mode 100644 src/packaging/Debian/movefiles create mode 100644 src/packaging/Debian/openafs-client.NEWS delete mode 100644 src/packaging/Debian/openafs-client.conffiles create mode 100644 src/packaging/Debian/openafs-client.init delete mode 100644 src/packaging/Debian/openafs-client.undocumented create mode 100644 src/packaging/Debian/openafs-dbserver.postrm create mode 100644 src/packaging/Debian/openafs-doc.README.Debian create mode 100644 src/packaging/Debian/openafs-doc.doc-base.openafs-admin create mode 100644 src/packaging/Debian/openafs-doc.doc-base.openafs-quick create mode 100644 src/packaging/Debian/openafs-doc.doc-base.openafs-user create mode 100644 src/packaging/Debian/openafs-doc.docs create mode 100644 src/packaging/Debian/openafs-doc.examples create mode 100644 src/packaging/Debian/openafs-fileserver.NEWS delete mode 100644 src/packaging/Debian/openafs-fileserver.conffiles mode change 100644 => 100755 src/packaging/Debian/openafs-fileserver.init delete mode 100644 src/packaging/Debian/openafs-fileserver.preinst delete mode 100644 src/packaging/Debian/openafs-fileserver.undocumented delete mode 100644 src/packaging/Debian/openafs-kpasswd.undocumented create mode 100644 src/packaging/Debian/openafs-krb5.install delete mode 100644 src/packaging/Debian/patch.001_libafs_destination_name delete mode 100644 src/packaging/Debian/patch.002_sketchy_hpux_process_c delete mode 100644 src/packaging/Debian/patch.004_bozo_permissions delete mode 100644 src/packaging/Debian/patch.006_more_bozo_permissions delete mode 100644 src/packaging/Debian/patches/README create mode 100644 src/packaging/Debian/patches/afs-man-name create mode 100644 src/packaging/Debian/patches/alloc-vnode create mode 100644 src/packaging/Debian/patches/bos-permissions create mode 100644 src/packaging/Debian/patches/compiler-flags create mode 100644 src/packaging/Debian/patches/dfsg create mode 100644 src/packaging/Debian/patches/find-core-files create mode 100644 src/packaging/Debian/patches/fstrace-paths create mode 100644 src/packaging/Debian/patches/ktc-prototypes create mode 100644 src/packaging/Debian/patches/linux-2.6.24 create mode 100644 src/packaging/Debian/patches/multiple-local-realms create mode 100644 src/packaging/Debian/patches/no-admin-reference delete mode 100644 src/packaging/Debian/patches/pam create mode 100644 src/packaging/Debian/patches/pam-build create mode 100644 src/packaging/Debian/patches/paths create mode 100644 src/packaging/Debian/patches/series create mode 100644 src/packaging/Debian/patches/ucontext-everywhere create mode 100644 src/packaging/Debian/po/nl.po create mode 100644 src/packaging/Debian/po/pt.po create mode 100644 src/packaging/Debian/po/templates.pot create mode 100644 src/packaging/Debian/po/zh_CN.po delete mode 100644 src/packaging/Debian/postinst.mod delete mode 100644 src/packaging/Debian/prep-modules delete mode 100644 src/packaging/Debian/prerm.mod delete mode 100644 src/packaging/Debian/pt_util.sgml rename src/packaging/Debian/{rules => rules.in} (52%) mode change 100644 => 100755 src/packaging/Debian/sysname create mode 100644 src/packaging/Debian/watch delete mode 100644 src/packaging/HP-UX/psf-1.2.8-transarc-paths-11.00 delete mode 100644 src/packaging/HP-UX/psf-1.2.9-transarc-paths-11.00 mode change 100644 => 100755 src/packaging/RedHat/openafs-cacheinfo delete mode 100644 src/procmgmt/Makefile.am delete mode 100644 src/procmgmt/afs/Makefile.am create mode 100644 src/ptserver/ptclient.rc delete mode 100644 src/rcp/.cvsignore delete mode 100644 src/rlogind/.cvsignore delete mode 100644 src/rsh/.cvsignore delete mode 100644 src/rx/rxdebug.c create mode 100644 src/rxdebug/NTMakefile delete mode 100644 src/rxgen/Makefile.am rename src/{rx/rxdebug.rc => rxgen/rxgen.rc} (67%) delete mode 100644 src/rxgk/Makefile.am delete mode 100644 src/rxgk/Makefile.in delete mode 100644 src/rxgk/README delete mode 100644 src/rxgk/rxgk.h delete mode 100644 src/rxgk/rxgk_clnt.c delete mode 100644 src/rxgk/rxgk_common.c delete mode 100644 src/rxgk/rxgk_crkrb.c delete mode 100644 src/rxgk/rxgk_crlha.c delete mode 100644 src/rxgk/rxgk_crpc.c delete mode 100644 src/rxgk/rxgk_locl.h delete mode 100644 src/rxgk/rxgk_proto.xg delete mode 100644 src/rxgk/rxgk_serv.c delete mode 100644 src/rxgk/rxgk_srpc.c delete mode 100644 src/rxgk/test.xg delete mode 100644 src/rxgk/test_client.c delete mode 100644 src/rxgk/test_server.c create mode 100644 src/tbudb/.cvsignore create mode 100644 src/tbudb/Makefile.in create mode 100644 src/tbutc/butc.rc mode change 100644 => 100755 src/tests/run-rcs mode change 100644 => 100755 src/tests/run-tests.in create mode 100644 src/tptserver/.cvsignore create mode 100644 src/tptserver/Makefile.in create mode 100644 src/tsalvaged/.cvsignore create mode 100644 src/tsalvaged/Makefile.in create mode 100644 src/tsalvaged/salvsync-debug.c create mode 100644 src/tubik/.cvsignore create mode 100644 src/tubik/Makefile.in create mode 100644 src/tviced/serialize_state.c create mode 100644 src/tviced/serialize_state.h create mode 100644 src/tviced/state_analyzer.c create mode 100644 src/tvlserver/.cvsignore create mode 100644 src/tvlserver/Makefile.in create mode 100644 src/tvolser/NTMakefile delete mode 100644 src/util/Makefile.am delete mode 100644 src/util/afs/Makefile.am create mode 100644 src/util/strnlen.c create mode 100644 src/venus/dedebug.c create mode 100644 src/viced/callback.h create mode 100644 src/viced/cbd.rc create mode 100644 src/vol/daemon_com.c create mode 100644 src/vol/daemon_com.h create mode 100644 src/vol/fssync-client.c create mode 100644 src/vol/fssync-debug.c create mode 100644 src/vol/fssync-debug.rc create mode 100644 src/vol/fssync-server.c delete mode 100644 src/vol/fssync.c delete mode 100644 src/vol/fstab.c create mode 100644 src/vol/salvaged.c create mode 100644 src/vol/salvager.c create mode 100644 src/vol/salvsync-client.c create mode 100644 src/vol/salvsync-server.c create mode 100644 src/vol/salvsync.h create mode 100644 src/vol/vnode_inline.h create mode 100644 src/vol/vol-salvage.h create mode 100644 src/vol/volume_inline.h create mode 100644 src/volser/lockprocs_prototypes.h create mode 100644 src/volser/vsutils_prototypes.h diff --git a/Makefile.in b/Makefile.in index 2ace1eb89..30258b06d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -15,6 +15,7 @@ include @TOP_OBJDIR@/src/config/Makefile.config WITH_OBSOLETE=@WITH_OBSOLETE@ ENABLE_KERNEL_MODULE=@ENABLE_KERNEL_MODULE@ +ENABLE_PTHREADED_UBIK=@ENABLE_PTHREADED_UBIK@ # To compile AFS from scratch in the src tree run "make". # This recursively calls "make install ..." and does not depend on the @@ -63,6 +64,10 @@ dest_only_libafs: only_libafs dest_dirs $(MAKE) build TARGET=libafs COMPILE_PART2B=dest -${INSTALL} ${srcdir}/src/LICENSE ${DEST}/LICENSE +dpkg: dest + ln -fs ${srcdir}/src/packaging/Debian debian + dpkg-buildpackage -rfakeroot -us -uc + packages: dest @case ${SYS_NAME} in \ *_darwin_* ) \ @@ -183,11 +188,35 @@ auth: cmd comerr comerr des lwp rx sys rxkad audit auth_depinstall ubik: cmd comerr auth ubik_depinstall ${COMPILE_PART1} ubik ${COMPILE_PART2} +tubik: ubik libafsrpc + case ${SYS_NAME} in \ + alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*|*[of]bsd*|*nbsd[234]*) \ + ${COMPILE_PART1} tubik ${COMPILE_PART2} ;; \ + *_darwin_[1-6][0-9]) \ + echo Not building MT ubik for ${SYS_NAME} ;; \ + *_darwin_*) \ + ${COMPILE_PART1} tubik ${COMPILE_PART2} ;; \ + *) \ + echo Not building MT ubik for ${SYS_NAME} ;; \ + esac + ubiktests: ubik ptserver: cmd comerr ubik cmd comerr auth audit ptserver_depinstall ${COMPILE_PART1} ptserver ${COMPILE_PART2} +tptserver: cmd comerr ptserver tubik libafsrpc libafsauthent + case ${SYS_NAME} in \ + alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*|*[of]bsd*|*nbsd[234]*) \ + ${COMPILE_PART1} tptserver ${COMPILE_PART2} ;; \ + *_darwin_[1-6][0-9]) \ + echo Not building MT ptserver for ${SYS_NAME} ;; \ + *_darwin_*) \ + ${COMPILE_PART1} tptserver ${COMPILE_PART2} ;; \ + *) \ + echo Not building MT ptserver for ${SYS_NAME} ;; \ + esac + kauth: cmd comerr ubik cmd auth comerr ptserver audit libacl kauth_depinstall ${COMPILE_PART1} kauth ${COMPILE_PART2} @@ -213,13 +242,44 @@ sgiefs: vol: cmd comerr dir afs sgiefs ${COMPILE_PART1} vol ${COMPILE_PART2} +tsalvaged: vol libafsrpc libafsauthent cmd util + set -x; \ + if test "@DEMAND_ATTACH@" = "yes" ; then \ + case ${SYS_NAME} in \ + alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*|*fbsd*|*nbsd2*) \ + ${COMPILE_PART1} tsalvaged ${COMPILE_PART2} ;; \ + *_darwin_[1-6][0-9]) \ + echo Not building MT tsalvaged for ${SYS_NAME} ;; \ + *_darwin_*) \ + ${COMPILE_PART1} tsalvaged ${COMPILE_PART2} ;; \ + *) \ + echo Not building MT tsalvaged for ${SYS_NAME} ;; \ + esac \ + else \ + echo skipping tsalvaged ; \ + fi + + vlserver: cmd comerr vol audit vlserver_depinstall ${COMPILE_PART1} vlserver ${COMPILE_PART2} -viced: cmd comerr vlserver audit +tvlserver: cmd comerr vol audit tubik libafsrpc libafsauthent tvlserver_depinstall + case ${SYS_NAME} in \ + alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*|*[of]bsd*|*nbsd[234]*) \ + ${COMPILE_PART1} tvlserver ${COMPILE_PART2} ;; \ + *_darwin_[1-6][0-9]) \ + echo Not building MT tvlserver for ${SYS_NAME} ;; \ + *_darwin_*) \ + ${COMPILE_PART1} tvlserver ${COMPILE_PART2} ;; \ + *) \ + echo Not building MT tvlserver for ${SYS_NAME} ;; \ + esac + + +viced: cmd comerr vlserver tvlserver audit ${COMPILE_PART1} viced ${COMPILE_PART2} -tviced: cmd comerr viced vlserver libafsrpc libafsauthent +tviced: cmd comerr viced vlserver tvlserver libafsrpc libafsauthent case ${SYS_NAME} in \ alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*|*[of]bsd*|*nbsd[234]*) \ ${COMPILE_PART1} tviced ${COMPILE_PART2} ;; \ @@ -368,6 +428,9 @@ ubik_depinstall: pinstall comerr rxgen vlserver_depinstall: pinstall rxgen ubik_depinstall auth_depinstall ${COMPILE_PART1} vlserver ${COMPILE_DEPINSTALL} +tvlserver_depinstall: pinstall rxgen ubik_depinstall auth_depinstall + ${COMPILE_PART1} tvlserver ${COMPILE_DEPINSTALL} + auth_depinstall: pinstall comerr ${COMPILE_PART1} auth ${COMPILE_DEPINSTALL} @@ -395,6 +458,9 @@ kauth_depinstall: pinstall rxgen comerr ptserver_depinstall: pinstall rxgen comerr ${COMPILE_PART1} ptserver ${COMPILE_DEPINSTALL} +${DEST}/bin/dedebug: dedebug + ${INSTALL} $? $@ + # # libafs build targets @@ -402,11 +468,11 @@ ptserver_depinstall: pinstall rxgen comerr libafs_setup: config export src/config/config src/libafs/MakefileProto.${MKAFS_OSTYPE} src/libafs/Makefile ${SYS_NAME} -libafs: libafs_setup lwp_depinstall rx_depinstall vlserver_depinstall rxkad_depinstall fsint_depinstall \ +libafs: libafs_setup lwp_depinstall rx_depinstall vlserver_depinstall tvlserver_depinstall rxkad_depinstall fsint_depinstall \ libacl_depinstall afs_depinstall dir_depinstall rxstat_depinstall sys_depinstall ${COMPILE_PART1} libafs ${COMPILE_PART2} -libafs_tree: libafs_setup lwp_depinstall rx_depinstall vlserver_depinstall rxkad_depinstall fsint_depinstall \ +libafs_tree: libafs_setup lwp_depinstall rx_depinstall vlserver_depinstall tvlserver_depinstall rxkad_depinstall fsint_depinstall \ libacl_depinstall afs_depinstall dir_depinstall rxstat_depinstall sys_depinstall ${TOP_SRCDIR}/config/make_libafs_tree.pl \ -sn $(SYS_NAME) \ @@ -426,7 +492,7 @@ UKERNELDIR= \ libuafs_setup: config export src/config/config src/libuafs/MakefileProto.${MKAFS_OSTYPE} src/libuafs/Makefile ${SYS_NAME} -libuafs: libuafs_setup vlserver_depinstall rx_depinstall fsint_depinstall \ +libuafs: libuafs_setup vlserver_depinstall tvlserver_depinstall rx_depinstall fsint_depinstall \ auth_depinstall dir_depinstall libacl_depinstall rxkad_depinstall \ ubik_depinstall afs_depinstall kauth_depinstall ptserver_depinstall \ rxstat_depinstall lwp_depinstall sys_depinstall des @@ -473,6 +539,18 @@ tbutc: cmd comerr bubasics butm budb bucoord cmd butc libadmin budb: cmd comerr bubasics uss ${COMPILE_PART1} budb ${COMPILE_PART2} +tbudb: budb + case ${SYS_NAME} in \ + alpha_dux*|sgi_*|sun*_5*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*|*[of]bsd*|*nbsd[234]*) \ + ${COMPILE_PART1} tbudb ${COMPILE_PART2} ;; \ + *_darwin_[1-6][0-9]) \ + echo Not building MT budb for ${SYS_NAME} ;; \ + *_darwin_*) \ + ${COMPILE_PART1} tbudb ${COMPILE_PART2} ;; \ + *) \ + echo Not building MT budb for ${SYS_NAME} ;; \ + esac + bucoord: cmd comerr bubasics budb volser ${COMPILE_PART1} bucoord ${COMPILE_PART2} @@ -512,8 +590,6 @@ libafsauthent: ubik auth kauth libafsrpc # pthread based user space RX library shlibafsrpc: rx rxkad des case ${SYS_NAME} in \ - amd64_linux24) \ - echo Skipping shlibafsrpc for amd64_linux24 ;; \ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*) \ ${COMPILE_PART1} shlibafsrpc ${COMPILE_PART2} ;; \ *) \ @@ -522,8 +598,6 @@ shlibafsrpc: rx rxkad des shlibafsauthent: ubik auth kauth shlibafsrpc case ${SYS_NAME} in \ - amd64_linux24) \ - echo Skipping shlibafsauthent for amd64_linux24 ;; \ alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*) \ ${COMPILE_PART1} shlibafsauthent ${COMPILE_PART2} ;; \ *) \ @@ -568,15 +642,15 @@ jafs: libjafs jafsadm: libjafsadm -finale: project cmd comerr afsd butc tbutc @ENABLE_KERNEL_MODULE@ libuafs audit kauth log package \ - ptserver scout bu_utils ubik uss bozo vfsck volser tvolser \ +finale: project cmd comerr afsd butc tbutc tbudb @ENABLE_KERNEL_MODULE@ libuafs audit kauth log package \ + ptserver tptserver scout bu_utils ubik tubik uss bozo vfsck volser tvolser tsalvaged \ venus update xstat afsmonitor dauth rxdebug libafsrpc \ libafsauthent shlibafsrpc shlibafsauthent libadmin login man-pages \ platform ${COMPILE_PART1} finale ${COMPILE_PART2} -finale_nolibafs: project cmd comerr afsd butc tbutc libuafs audit kauth log package \ - ptserver scout bu_utils ubik uss bozo vfsck volser tvolser \ +finale_nolibafs: project cmd comerr afsd butc tbutc tbudb libuafs audit kauth log package \ + ptserver tptserver scout bu_utils ubik tubik uss bozo vfsck volser tvolser tsalvaged \ venus update xstat afsmonitor dauth rxdebug libafsrpc \ libafsauthent shlibafsrpc shlibafsauthent libadmin login man-pages \ platform @@ -624,17 +698,21 @@ clean2: -${COMPILE_PART1} rxkad ${COMPILE_CLEAN} -${COMPILE_PART1} auth ${COMPILE_CLEAN} -${COMPILE_PART1} ubik ${COMPILE_CLEAN} + -${COMPILE_PART1} tubik ${COMPILE_CLEAN} -${COMPILE_PART1} ptserver ${COMPILE_CLEAN} + -${COMPILE_PART1} tptserver ${COMPILE_CLEAN} -${COMPILE_PART1} kauth ${COMPILE_CLEAN} -${COMPILE_PART1} dauth ${COMPILE_CLEAN} -${COMPILE_PART1} libacl ${COMPILE_CLEAN} -${COMPILE_PART1} dir ${COMPILE_CLEAN} -${COMPILE_PART1} vol ${COMPILE_CLEAN} -${COMPILE_PART1} vlserver ${COMPILE_CLEAN} + -${COMPILE_PART1} tvlserver ${COMPILE_CLEAN} -${COMPILE_PART1} viced ${COMPILE_CLEAN} -${COMPILE_PART1} tviced ${COMPILE_CLEAN} -${COMPILE_PART1} volser ${COMPILE_CLEAN} -${COMPILE_PART1} tvolser ${COMPILE_CLEAN} + -${COMPILE_PART1} tsalvaged ${COMPILE_CLEAN} -${COMPILE_PART1} venus ${COMPILE_CLEAN} -${COMPILE_PART1} venus/test ${COMPILE_CLEAN} -${COMPILE_PART1} afsd ${COMPILE_CLEAN} @@ -661,6 +739,7 @@ clean2: -${COMPILE_PART1} butc ${COMPILE_CLEAN} -${COMPILE_PART1} tbutc ${COMPILE_CLEAN} -${COMPILE_PART1} budb ${COMPILE_CLEAN} + -${COMPILE_PART1} tbudb ${COMPILE_CLEAN} -${COMPILE_PART1} bucoord ${COMPILE_CLEAN} -${COMPILE_PART1} xstat ${COMPILE_CLEAN} -${COMPILE_PART1} afsmonitor ${COMPILE_CLEAN} @@ -714,6 +793,7 @@ distclean: clean src/bubasics/Makefile \ src/bucoord/Makefile \ src/budb/Makefile \ + src/tbudb/Makefile \ src/butc/Makefile \ src/butm/Makefile \ src/cmd/test/Makefile \ @@ -776,6 +856,7 @@ distclean: clean src/procmgmt/Makefile \ src/procmgmt/test/Makefile \ src/ptserver/Makefile \ + src/tptserver/Makefile \ src/rx/Makefile \ src/rx/bulk.example/Makefile \ src/rx/bulktest/Makefile \ @@ -796,10 +877,12 @@ distclean: clean src/tbutc/Makefile \ src/tests/Makefile \ src/tests/run-tests \ + src/tsalvaged/Makefile \ src/tsm41/Makefile \ src/tviced/Makefile \ src/tvolser/Makefile \ src/ubik/Makefile \ + src/tubik/Makefile \ src/update/Makefile \ src/usd/test/Makefile \ src/usd/Makefile \ @@ -811,6 +894,7 @@ distclean: clean src/vfsck/Makefile \ src/viced/Makefile \ src/vlserver/Makefile \ + src/tvlserver/Makefile \ src/vol/Makefile \ src/vol/test/Makefile \ src/volser/Makefile \ diff --git a/README b/README index 5c263db1d..d0c430a4c 100644 --- a/README +++ b/README @@ -17,10 +17,10 @@ in /usr/src/linux. Otherwise, please read on. -Building OpenAFS on UNIX and LINUX +Building OpenAFS on UNIX and Linux ---------------------------------- -A. Creating the proper directory structure. +A Configuring Uncompress the source into a directory of your choice. A directory in afs space is also valid. In the directory that you uncompressed the @@ -30,78 +30,94 @@ A. Creating the proper directory structure. A directory will be automatically created for binaries to be written into with this name when you build. - alpha_dux40 - alpha_dux50 (only tested on 5.0A, does not work with 5.1) + alpha_dux40, alpha_dux50, alpha_dux51 + alpha_linux22, alpha_linux24, alpha_linux26 + alpha_nbsd15, alpha_nbsd16 + amd64_fbsd_53 (client does not work) + amd64_linux24, amd64_linux26 + amd64_nbsd20, amd64_nbsd30, amd64_nbsd40 + arm_linux24, arm_linux26 + hp_ux11i, hp_ux110, hp_ux1123 (See notes below for information on + getting missing header) + hp_ux102 (Client port possible, but db servers and utilities work) i386_fbsd_42, i386_fbsd_43, i386_fbsd_44, i386_fbsd_45, i386_fbsd_46, i386_fbsd_47, i386_fbsd_50, i386_fbsd_51, - i386_fbsd_52, i386_fbsd_53, i386_fbsd_60 + i386_fbsd_52, i386_fbsd_53, i386_fbsd_60, i386_fbsd_61, + i386_fbsd_62, i386_fbsd_70 + (client does not work) i386_linux22, i386_linux24, i386_linux26 - i386_umlinux22, i386_umlinux24 + i386_nbsd15, i386_nbsd16, i386_nbsd20, i386_nbsd21, i386_nbsd30, + i386_nbsd40 i386_obsd31, i386_obsd32, i386_obsd33, i386_obsd34, i386_obsd35, - i386_obsd36, i386_obsd37, i386_obsd38 - rs_aix42 - sgi_65 (file server not tested) - sun4_413 (No client support, no fileserver support, db servers only) - sun4x_56, sun4x_57, sun4x_58, sun4x_59, sun4x_510, - sunx86_57, sunx86_58, sunx86_59, sunx86_510 (logging UFS not supported - for mixed-use partitions containing client cache) - ppc_darwin_70 - ppc_linux22, ppc_linux24 - alpha_linux22, alpha_linux24 + i386_obsd36, i386_obsd37, i386_obsd38, i386_obsd39, i386_obsd40, + i386_obsd41 + i386_umlinux22, i386_umlinux24, i386_umlinux26 + ia64_hpux1122, ia64_hpux1123 ia64_linux24, ia64_linux26 + parisc_linux24 + ppc64_linux24, ppc64_linux26 + ppc_darwin_12, ppc_darwin_13, ppc_darwin_14, ppc_darwin_60, + ppc_darwin_70, ppc_darwin_80, ppc_darwin_90 + ppc_linux22, ppc_linux24, ppc_linux26 + ppc_nbsd16, ppc_nbsd20 + rs_aix42, rs_aix51, rs_aix52, rs_aix53 + s390_linux22, s390_linux24, s390_linux26 + s390x_linux24, s390x_linux26 + sgi_62, sgi_63, sgi_64, sgi_65 (file server not tested) + sparc64_linux22, sparc64_linux24, sparc64_linux26 sparc_linux22, sparc_linux24 - sparc64_linux22, sparc64_linux24 - hp_ux11i, hp_ux110 (See notes below for information on getting - missing header) - hp_ux102 (Client port possible, but db servers and utilities work) + sun4_413 (No client support, no fileserver support, db servers only) + sun4x_56, sun4x_57, sun4x_58, sun4x_59, sun4x_510, sun4x_511 + (logging UFS not supported for mixed-use partitions containing + client cache) + sunx86_57, sunx86_58, sunx86_59, sunx86_510, sunx86_511 + (logging UFS not supported for mixed-use partitions containing + client cache) + x86_darwin_80, x86_darwin90 2. Using configure in the top level directory, configure for your AFS system type, providing the necessary flags: % ./configure --with-afs-sysname=sun4x_58 --enable-transarc-paths + If you do not have the "configure" script, or if you modify the + source files, you can re-create it by running regen.sh. You will + need autoconf to do this. + For some systems you need also provide the path in which your kernel headers for your configured kernel can be found. See the - system-specific Notes sections below for details. - - Be prepared to provide the switches --enable-obsolete and - --enable-insecure if you require the use of any bundled but obsolete - or insecure software included with OpenAFS. See README.obsolete and - README.insecure for more details. - - There is an option to control whether or not binaries are stripped - of their symbol table information. All binaries, except for the - 'fileserver' and 'volserver' executables, are stripped by default. - - To prevent stripping, specify the '--disable-strip-binaries' option on - the ./configure command line. - - This option works alongside the existing --enable-debug option to - control how binaries are produced. When --enable-debug is specified, - binaries will not be stripped. This behavior can be modified by - using different combinations of --enable-debug and --enable (or - --disable)-strip-binaries. One can, for example, compile binaries for - debug and strip them anyway. Alternatively, one can compile without - debug and force the binaries to not be stripped. Note that these - combinations are not necessarily useful. - - If neither of these options is specified, the default will be to build - non-debug binaries that are stripped (with the exceptions noted above, - which are never stripped at present). Specifying --enable-debug also - turns on --disable-strip-binaries. These are the most useful settings. - - The two binaries noted above, 'fileserver' and 'volserver' will never - be stripped, regardless of any options given to configure. - - There are two modes for directory path handling: "Transarc mode" and "default mode": - - In Transarc mode, we retain compatibility with Transarc/IBM AFS tools - by putting client configuaration files in /usr/vice/etc, and server - files in /usr/afs under the traditional directory layout. - - In default mode, files are located in standardized locations, usually - under $(prefix). - - Client programs, libraries, and related files always go in standard - directories under $(prefix). This rule covers things that would go - into $(bindir), $(includedir), $(libdir), $(mandir), and $(sbindir). - - Other files get located in the following places: + system-specific Notes sections below for details. If you want to + build only the user-space programs and servers and not the kernel + module, specify the --disable-kernel-module option on the + ./configure command line. + + All binaries, except for the 'fileserver' and 'volserver' + executables, are stripped of their symbol table information by + default. To enable a debugging build, specify the --enable-debug + option on the ./configure command line. This builds with debugging + compiler options and disables stripping of binaries. + + You can also use different combinations of --enable-debug and + --enable (or --disable)-strip-binaries for finer control. One can, + for example, compile binaries for debug and strip them anyway. + Alternatively, one can compile without debug and force the binaries + to not be stripped. Note that these combinations are not + necessarily useful. + + The two binaries noted above, 'fileserver' and 'volserver' will + never be stripped, regardless of any options given to configure. + + There are two modes for directory path handling: "Transarc mode" and + "default mode": + + - In Transarc mode, we retain compatibility with Transarc/IBM AFS tools + by putting client configuaration files in /usr/vice/etc, and server + files in /usr/afs under the traditional directory layout. + - In default mode, files are located in standardized locations, usually + under $(prefix). + - Client programs, libraries, and related files always go in standard + directories under $(prefix). This rule covers things that would go + into $(bindir), $(includedir), $(libdir), $(mandir), and $(sbindir). + - Other files get located in the following places: Directory Transarc Mode Default Mode ============ ========================= ============================== @@ -114,6 +130,14 @@ A. Creating the proper directory structure. afsbosconfig $(afslocaldir)/BosConfig $(afsconfdir)/BosConfig afsbosserver $(afsbindir)/bosserver $(sbindir)/bosserver + The Demand Attach Fileserver (DAFS), is built by providing the + --enable-demand-attach-fs argument to configure. Note that the + bosserver must be built with DAFS in order to be able to create the + dafs instance, which will be used in place of the fs instance. In + addition, the fileserver, volserver, salvager, salvage, and + salvageserver binaries must be built for DAFS. + + For additional options, see section H below. B Building @@ -151,7 +175,8 @@ D Linux Notes be the path of the directory containing a child directory named "include". So if your version file was /usr/src/linux/include/linux/version.h you would invoke: - % ./configure --with-afs-sysname=i386_linux24 --with-linux-kernel-headers=/usr/src/linux + % ./configure --with-afs-sysname=i386_linux24 \ + --with-linux-kernel-headers=/usr/src/linux Currently you can build for only one Linux kernel at a time, and the version is extracted from the kernel headers in the root @@ -159,7 +184,8 @@ D Linux Notes To build for another Linux kernel version: the system type defined in step A1. - % ./configure --with-afs-sysname=i386_linux24 --with-linux-kernel-headers=/usr/src/linux-2.2.19-i686 + % ./configure --with-afs-sysname=i386_linux24 \ + --with-linux-kernel-headers=/usr/src/linux-2.2.19-i686 % make Your dest tree will now include an additional kernel module for your @@ -170,54 +196,144 @@ D Linux Notes E HP-UX 11.0 Notes - HP-UX 11.0 requires a header called vfs_vm.h which HP has provided on their - web site: http://h21007.www2.hp.com/dspp/tech/tech_TechSoftwareDetailPage_IDX/1,1703,687,00.html - To navigate down from the top level of the portal, one would do - - www.hp.com/dspp -> i want to... -> download software -> operating systems - - to get to the same page. + HP-UX 11.0 requires a header called vfs_vm.h which HP has provided on + their web site. Go to http://www.hp.com/dspp, choose Software + downloads from the side menu, and select Software: HP operating systems + and then Operating systems: HP-UX from the select boxes. The last + select box will have an option for downloading vfs_vm.h. F OpenBSD Notes + If you need to run regen.sh to make the configure script, you should + first install autoconf-2.59, then setenv AUTOCONF_VERSION 2.59. + You need kernel source installed to build OpenAFS. Use the - --with-bsd-kernel-headers= configure option if your kernel source is not - in /usr/src/sys. + --with-bsd-kernel-headers= configure option if your kernel source is + not in /usr/src/sys. - There is a package builder in src/packaging/OpenBSD. "sh buildpkg.sh" - should make a package for the client. Use pkg_add to install. The - package will install using transarc-paths, regardless of how you - configured. The package builder does not work on OpenBSD 3.5 and later - due to the incompatible re-write of pkg_create. + If you want to build src/aklog, add the following options to your + configure. Note that you shouldn't need aklog because heimdal afslog + does (almost) the same thing. + --with-krb5 KRB5CFLAGS=-I/usr/include/kerberosV KRB5LIBS=-lcrypto - There is no server package, but I am told that "make install" will put - server binaries in /usr/afs. + src/packaging/OpenBSD/buildpkg.sh will make a tar file for installing + the client. There is no server package, but I am told that "make + install" will put server binaries in /usr/afs. - Your kernel may panic when you try to shutdown after running the OpenAFS - client. To prevent this, change the "dangling vnode" panic in + Your kernel may panic when you try to shutdown after running the + OpenAFS client. To prevent this, change the "dangling vnode" panic in sys/kern/vfs_syscalls.c to a printf and build a new kernel. You can't run arla and OpenAFS at the same time. G FreeBSD Notes - The FreeBSD client is very new and untested. Do not trust it for - production work. + The FreeBSD client does not currently work. The remaining problems + mostly have to do with locking, vnode refcounting, and packaging. The + server should work. You need kernel source installed to build OpenAFS. Use the - --with-bsd-kernel-headers= configure option if your kernel source is not - in /usr/src/sys. + --with-bsd-kernel-headers= configure option if your kernel source is + not in /usr/src/sys. You also need access to your kernel build directory for the opt_global.h include file. Use the --with-bsd-kernel-build= configure option if your kernel build is not GENERIC in the standard place. - There is a package builder in src/packaging/OpenBSD. "sh buildpkg.sh" - should make a package for the client. Use pkg_add to install. The - package will install using transarc-paths, regardless of how you - configured. The builder uses an old version of the /usr/vice/etc/rc file - that probably won't work. You might be able to replace it with something - like "kldload libafs.ko; /usr/vice/etc/afsd". - There is no server package, but I am told that "make install" will put server binaries in /usr/afs. + + You can't run arla and OpenAFS at the same time. + +H Other configure options + + AFS has a ton of other optional features that must be enabled using + configure options. Here is a summary: + + --enable-bitmap-later + Speeds the startup of the fileserver by deferring reading volume + bitmaps until necessary. Demand attach is a better solution to the + same problem. + + --enable-bos-new-config + A bosserver built with this option will look for BosConfig.new when + it restarts and, if present, replace BosConfig with that file + before reading its configuration. + + --enable-bos-restricted-mode + Enables support for restricted mode in the bosserver. This mode + can be enabled or disabled via a command-line switch and a signal + and can be enabled (but not disabled) remotely. When enabled, + bosserver will not permit any operations that change the local file + system (install, uninstall, prune), run commands on the server + (exec, create, delete), or view files (getlog). + + --enable-demand-attach-fs + Enable Demand Attach file servers. Demand Attach is an extensive + re-engineering of the file server that avoids the long startup and + shutdown delays of the traditional file server by enabling + persistance of file server state to disk. It is still very new, + but is expected to become the default in a future version of + OpenAFS. + + --enable-disconnected + Enable disconnected support in the cache manager (EXPERIMENTAL). + + --enable-fast-restart + When restarting the fileserver, don't salvage volumes. Instead, + assume all volumes are okay and only take them off-line if that + assumption is incorrect. Using this option safely requires + scanning the fileserver log for error messages when volumes are + taken off-line and salvaging them manually. Not recommended; use + demand attach instead. + + --enable-icmp-pmtu-discovery + Enable path MTU discovery in the Rx libraries by decoding ICMP + unreachable packets. + + --enable-namei-fileserver + Forces the namei fileserver on platforms (like Solaris) where the + inode fileserver is the default. + + --enable-obsolete + Enables building and installation of mpp and package, utilities + that historically shipped with AFS but are not supported by OpenAFS + and will be removed entirely in a later release. + + --enable-pthreaded-ubik + Enable the threaded version of Ubik and install the threaded + versions of Ubik servers. (EXPERIMENTAL) + + --enable-supergroups + Enables support of nested groups in the ptserver. WARNING: Once + you make use of this option by nesting one group inside another, + the resulting PTS database cannot be correctly and safely used by a + ptserver built without this option. + + --enable-tivoli-tsm + Build with the Tivoli TSM API libraries for butc support of the + Tivoli backup system. + + --enable-unix-sockets + Enable use of UNIX domain sockets for fssync. + + It's also possible to disable some standard features. None of these + options are recommended but may be useful in unusual circumstances: + + --disable-afsdb + Disable AFSDB DNS record support in the cache manager, normally + used to find cell VLDB servers. + + --disable-full-vos-listvol-switch + Removes support for the -format option to vos listvol and also + suppresses some additional fields that were added to vos examine + output but may confuse older software. + + --disable-largefile-fileserver + Disable large file (>2GB) support in the fileserver. + + --disable-pam + Do not build the AFS PAM modules. Normally building them is + harmless, but the PAM modules that come with OpenAFS are deprecated + and should not be used unless you're still using the OpenAFS + kaserver (which is itself deprecated and should not be used). diff --git a/README-NT b/README-NT index cf7176203..b2d9166f2 100644 --- a/README-NT +++ b/README-NT @@ -5,23 +5,35 @@ directory or on-line at http://www.openafs.org/dl/license10.html The document now provides a step by step procedure that takes the user from a basic Windows 2000/XP/2003 workstation to an OpenAFS development environment. Details are provided so that a 'beginning' windows -developer can build an OpenAFS installable package for Windows 2000/XP/2003. +developer can build an OpenAFS installable package for Windows +2000/XP/2003/Vista/2008. NOTE 1: As of the OpenAFS 1.3 release series, Windows platforms released -prior to Windows 2000 are not being supported. The InstallShield -installer is still in the source tree but is no longer supported. -A new open source installer based on NSIS 2.07 replaces it. +prior to Windows 2000 are no longer supported. As of the OpenAFS 1.5 +series, the Windows 9x components are being removed from the source tree. -*********** Windows 2000/XP/2003 Build Process **************** +*********** Windows 2000/XP/2003/Vista/2008 Build Process ************* Building OpenAFS for Windows requires configuring a Windows development system by installing compilation tools and header files. -Open AFS Software development can be done on Windows 2000 or XP. The -target system, where OpenAFS will be installed, should be either -Windows 2000, Windows XP, or Windows 2003. The building process is -controlled by a nmake file that generates the necessary binaries and -binds them into an install package. +Open AFS Software development can be done on Windows 2000, XP, 2003, +or Vista. The target system, where OpenAFS will be installed, can be +one of: + + * Windows 2000 + * Windows XP + * Windows XP SP2 + * Windows 2003 + * Windows 2003 SP1 + * Windows XP 64 + * Windows 2003 64 + * Windows 2003 R2 (32 or 64) + * Windows Vista (32 or 64) + * Windows 2008 (32 or 64) + +The build process is controlled by a nmake file that generates the +necessary binaries and binds them into an install package. The following steps describe how to configure Windows 2000/XP: @@ -30,10 +42,10 @@ The following steps describe how to configure Windows 2000/XP: C. Install SDK header files D. Configure NTBUILD.BAT E. Set program version Level - F. Build Win2000 binaries - G. Install NSIS 2.07 + F. Build the binaries + G. Install NSIS 2.30 H. Build NSIS Install Package - I. Install Wix 2.0 + I. Install Wix 2.0.5325 J. Build Wix MSI Install Package K. Final Results L. Optional Items @@ -45,15 +57,18 @@ versions are supported: Microsoft Visual Studio .NET available via a MSDN subscription - Microsoft Visual Studio .NET 2003 (recommended) + Microsoft Visual Studio .NET 2003 available via a MSDN subscription - Microsoft Visual Studio .NET 2005 (do not use for production) + Microsoft Visual Studio .NET 2005 available via a MSDN subscription + (recommended - required for 64-bit builds) + + Microsoft Visual Studio 2008 is not supported The following Microsoft SDK is required: - Microsoft Platform SDK for Windows XP SP2 [Core, Data Access and Installer SDKs are required] + Microsoft Platform SDK for Windows XP SP2 or Server 2003 SP1 or Vista or 2008 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/downlevel.htm [IE required] http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm @@ -63,17 +78,25 @@ The following Microsoft DDK is required: available via a MSDN subscription or via free CD http://www.microsoft.com/whdc/devtools/ddk/orderddkcd.mspx +The Microsoft HTML Help Workshop is required: + + http://www.microsoft.com/downloads/details.aspx?familyid=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en + +The Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1 is required: + + http://www.microsoft.com/downloads/details.aspx?FamilyId=AD6158D7-DDBA-416A-9109-07607425A815&displaylang=en + The NSIS installer requires about 14 MB of storage. The following version is supported: - Nullsoft Scriptable Installation System 2.07 + Nullsoft Scriptable Installation System 2.30 http://nsis.sourceforge.net/home/ The WiX installer requires about 18 MB of storage. The following version is supported: - Wix 2.0.2217.0 - http://prdownloads.sourceforge.net/wix/sources-2.0.2217.0.zip + Wix 2.0.5325.0 + http://prdownloads.sourceforge.net/wix/sources-2.0.5325.0.zip The InstallShield scripts (although not supported) require version 5.5 of InstallShiled. Version 6.0 or higher of InstallShield are not @@ -119,7 +142,7 @@ base directory (aka %AFSROOT%): copy src\ntbuild.bat . -The AFS base directory should look something like the following: +The OpenAFS base directory should look something like the following: c:\OpenAFS\OpenAFS-1.3.74\ NTMakefile @@ -143,9 +166,9 @@ and remove all but the following Options: STEP C. Install SDK header files. -Files from Microsoft's Platform SDK for Windows XP SP2 is required to -complete a build on Windows 2000/XP/2003. You can install the "Core, Data -Access and Installer SDKs" from +Files from Microsoft's Platform SDK for Windows XP SP2 or Server 2003 are +required to complete a build on Windows 2000/XP/2003. You can install +the "Core, Data Access and Installer SDKs" from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ @@ -154,11 +177,12 @@ If you do not which to use IE a complete SDK package is available from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm -The header files that are required are found from a Microsoft SDK are: +The header files that are required from a Microsoft SDK/DDK are: npapi.h (Windows 2000,XP,2003 builds) netcfgx.h (NSIS Loopback Adapter installer - Windows 2000,XP,2003 builds) netcfgn.h (NSIS Loopback Adapter installer - Windows 2000,XP,2003 builds) + normalization.h (AFS Cache Manager) These files come from the following Microsoft DDKs/SDKs: @@ -169,6 +193,9 @@ These files come from the following Microsoft DDKs/SDKs: Windows XP/2003 DDK - inc/wxp/ + normalization.h: + Microsoft IDN Mitigation APIs 1.1 - include/ + STEP D. Configure NTBUILD.BAT. The NTBUILD.BAT file copied to the OpenAFS base directory must be @@ -183,14 +210,26 @@ must be defined to match your configuration: MSVCDIR: Set to the short name version of the directory into which the visual C++ compiler was installed regardless of version + MSVCDIR64: On AMD64 systems, set to the 64-bit visual C++ compiler + MSSDKDIR: Set to the short name of the directory into which the Platform SDK was installed - NTDDKDIR: Set the short name of the directory containing the npapi.h file + NTDDKDIR: Set to the short name of the INC\WNET DDK directory + + NTDDKDIR2: Set to the short name of the INC\CRT DDK directory AFSROOT: Set to the short name of the OpenAFS Base directory. This cannot be set to a UNC path. + SYS_NAME: One of "i386_w2k" or "amd64_w2k" + + APPVER: 0x500 for Windows 2000 and above; 0x502 for AMD64 systems + + _WIN32_IE: Must match APPVER + + MSVCVer: Set to 8.0 if using Visual Studio 8 + STEP E. Set version and installation options (optional) @@ -233,7 +272,7 @@ STEP F. Begin the build (3) Configure the environment variables: - For a release build: + For a release build (SMB version): (a) Execute the VCVARS32.BAT or VSVARS32.BAT file which part of the Visual Studio environment you installed. @@ -242,7 +281,7 @@ STEP F. Begin the build (c) Execute the NTBUILD.BAT file with the parameter "free" - For a debug build: + For a debug build (SMB version): (a) Execute the VCVARS32.BAT or VSVARS32.BAT file which part of the Visual Studio environment you installed. @@ -265,26 +304,20 @@ process doesn't terminate with an error ("nmake.exe return code 0x2") and it displays 'Build Finished Successfully'. -STEP G. Install NSIS 2.07 (optional). +STEP G. Install NSIS 2.30 (optional). -Download the Nullsoft Scriptable Installation System (NSIS) 2.07 from +Download the Nullsoft Scriptable Installation System (NSIS) 2.30 from http://nsis.sourceforge.net/home/ -Run the nsis20.exe installer. +Run the nsis-2.30.exe installer and install to "C:\Program Files\NSIS". +Then download the large strings build zip file and replace the installed +files with the versions from the zip file. These versions increase +the maximum string length from 1024 characters to 8192 characters. +This is necessary for installation on systems with long PATH environment +strings. -NOTE: The NSIS installer may be rebuilt from source files - - C:\Program Files\NSIS\Source - -to enable options not built into the default configuration. The -OpenAFS installers are built using a modified version of the NSIS -sources. The following changes were made to exehead\config.h. - - NSIS_MAX_STRLEN set to 4096 - NSIS_CONFIG_LOG defined - NSIS_CONFIG_LOG_ODS defined - +Note: The NSIS installer can only be used to produce 32-bit installers. STEP H. Build OpenAFS NSIS install package @@ -295,119 +328,9 @@ From the %AFSROOT% directory execute: STEP I. Install Wix MSI Installer -Download the Wix 2.0.2217.0 installer from - - http://prdownloads.sourceforge.net/wix/sources-2.0.2217.0.zip - -Apply the following patches to the source tree and execute - - make ship - -from the \src\wix directory. - -Index: src/wix/Common.cs -=================================================================== -RCS file: /cvsroot/wix/wix/src/wix/Common.cs,v -retrieving revision 1.7 -diff -w -r1.7 Common.cs -140a141,146 -> public static long GetFileTimeFromDateTime(string dateTime) -> { -> System.DateTime sdt = System.Xml.XmlConvert.ToDateTime(dateTime); -> return sdt.ToFileTime(); -> } -> -Index: src/wix/Compiler.cs -=================================================================== -RCS file: /cvsroot/wix/wix/src/wix/Compiler.cs,v -retrieving revision 1.14 -diff -w -r1.14 Compiler.cs -847c847 -< this.AddRegistryKey(sourceLineNumbers, null, MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[!", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context ---- -> this.AddRegistryKey(sourceLineNumbers, null, MsiInterop.MsidbRegistryRootClassesRoot, String.Concat("CLSID\\", classId, "\\", context[i]), String.Empty, String.Concat("\"[#", fileServer, "]", argument == null ? String.Empty : " ", argument, "\""), componentId); // ClassId context -2352a2353,2358 -> // if a Value attribute was given by itself, make this a type 19 custom action -> if( sourceBits == 0 && targetBits == MsiInterop.MsidbCustomActionTypeTextData ) -> { -> sourceBits = MsiInterop.MsidbCustomActionTypeSourceFile; -> } -> -3881c3887 -< minDate = attrib.Value; ---- -> minDate = Common.GetFileTimeFromDateTime( attrib.Value ).ToString(); -3884c3890 -< maxDate = attrib.Value; ---- -> maxDate = Common.GetFileTimeFromDateTime( attrib.Value ).ToString(); -8187a8194,8207 -> case "Delete": -> switch (attrib.Value) -> { -> case "install": -> events |= MsiInterop.MsidbServiceControlEventDelete; -> break; -> case "uninstall": -> events |= MsiInterop.MsidbServiceControlEventUninstallDelete; -> break; -> case "both": -> events |= MsiInterop.MsidbServiceControlEventDelete | MsiInterop.MsidbServiceControlEventUninstallDelete; -> break; -> } -> break; -9685a9706 -> -Index: src/wix/Preprocessor.cs -=================================================================== -RCS file: /cvsroot/wix/wix/src/wix/Preprocessor.cs,v -retrieving revision 1.6 -diff -w -r1.6 Preprocessor.cs -274c274 -< context = new IfContext(context.IsTrue & context.Active, this.variables.ContainsKey(reader.Value.Trim()), IfState.If); ---- -> context = new IfContext(context.IsTrue & context.Active, this.IsDefined(reader.Value.Trim()), IfState.If); -279c279 -< context = new IfContext(context.IsTrue & context.Active, !this.variables.ContainsKey(reader.Value.Trim()), IfState.If); ---- -> context = new IfContext(context.IsTrue & context.Active, !this.IsDefined(reader.Value.Trim()), IfState.If); -360a361,362 -> case "error": -> throw new WixPreprocessorException(this.GetCurrentSourceLineNumbers(), this.PreprocessVariables(reader.Value)); -419a422,437 -> /// Returns true if the symbol exists. -> /// -> /// symbol name to check -> /// true if symbol is defined -> private bool IsDefined(string symbol) -> { -> if( symbol.StartsWith("env.") ) -> return Environment.GetEnvironmentVariable(symbol.Substring(4)) != null; -> if( symbol.StartsWith("var.") ) -> return this.variables.ContainsKey(symbol.Substring(4)); -> if( symbol.StartsWith("sys.") ) -> return this.systemVariables.ContainsKey(symbol.Substring(4)); -> return this.variables.ContainsKey(symbol); -> } -> -> /// -Index: src/wix/wix.csproj -=================================================================== -RCS file: /cvsroot/wix/wix/src/wix/wix.csproj,v -retrieving revision 1.4 -diff -w -r1.4 wix.csproj -661a662,666 -> RelPath = "Xsd\wix.xsx" -> DependentUpon = "wix.xsd" -> BuildAction = "None" -> /> -> RelPath = "Xsd\wixloc.xsx" -> DependentUpon = "wixloc.xsd" -> BuildAction = "None" -> /> +Download the Wix 2.0.5325.0 installer from + + http://prdownloads.sourceforge.net/wix/sources-2.0.5325.0.zip STEP J. Build Wix MSI install package diff --git a/README-WIN9X b/README-WIN9X deleted file mode 100644 index a1a28debb..000000000 --- a/README-WIN9X +++ /dev/null @@ -1,200 +0,0 @@ -Copyright 2000, International Business Machines Corporation and others. -All Rights Reserved. - -This software has been released under the terms of the IBM Public -License. For details, see the LICENSE file in the top-level source -directory or online at http://www.openafs.org/dl/license10.html - -NOTE: As of the OpenAFS 1.3 release series, Windows 9x platforms are no -longer officially supported. It is not clear whether or not the source -tree will build successfully or not. As far as we know, no one has tried -in a very long time. - -Building Open AFS on Win 95 ---------------------------- - -The Windows 95 Open AFS client consists of two main components: the client -program afsd.exe, which is compiled with the DJGPP compiler and runs in a -DOS virtual machine; and the utility programs, which are built on Windows -NT or 9x using the Microsoft Visual C++ compiler V6.0. - -afsd.exe --------- - -afsd.exe is built using the DJGPP cross-compiler, executed from Linux. -It should also be possible to build it using the native DOS DJGPP compiler, -but we did not try this. You will need to install the following packages -from DJGPP and the Coda project. - -ftp://ftp.coda.cs.cmu.edu/pub/tools/djgpp-2.01_0.93_glibc-1.i386.rpm -ftp://ftp.coda.cs.cmu.edu/pub/tools/djgpp-win95ext-2.01_0.93_glibc-1.i386.rpm -ftp://ftp.coda.cs.cmu.edu/pub/tools/gdb-djgpp-4.16-2.i386.rpm - -You will also need the MMAP.VXD and SOCK.VXD from the Coda project. Source -is available here: -ftp://ftp.coda.cs.cmu.edu/pub/coda/src/win95-coda-5.2.0.zip - -Follow the Coda instructions to build these VXD's, which you can read here: -http://www.coda.cs.cmu.edu/doc/html/coda-howto-6.html#ss6.4 - -Once you have the necessary tools installed, set the following environment -variables: -SYS_NAME: set to i386_djgpp -LINUX_SYS: set to the sysname of the Linux version you are using, e.g., - i386_linux22 - -The makefile expects to build into a platform directory with symlinks -into the source directory. The Perl script "mkdest.pl" in this dir. will -set this up for you. To use it, create a directory under the top-level -dir. (the directory above src) called "i386_djgpp". Then cd to that -directory and type "../src/mkdest.pl " - -Then execute "make -f Makefile.djgpp" from the top-level directory. -(You can create a symlink to src/Makefile.djgpp from this dir.) -The afsd.exe will be built into i386_djgpp/dest/bin. - -Build notes: - - The Makefile.djgpp actually builds Linux versions of the utilities - rxgen, install, compile_et, and util.a. It uses the Linux version - of param.h which it copies to the afs subdirectory of the above - components. You will need to set SYS_NAME to your Linux system name - manually if you want to build these utilities separately. - -Utilities and GUI programs --------------------------- - -The rest of the support programs are built as Win32 executables from a -Windows 9x or NT system. You will need to set the following environment -variables: - -set SYS_NAME=i386_win95 -set AFSDEV_BUILDTYPE=CHECKED (or FREE if you want to skip debugging info.) -set AFSDEV_INCLUDE= -set AFSDEV_LIB= -set AFSDEV_BIN=. -set AFSROOT= - e.g. AFSROOT\SRC is source directory of the build tree -SET _WIN32_IE=0x400 -set OBJ=src or obj, see below -set MSSDK=, see below - -If you are building on a Unix directory exported to Windows through Samba -or AFS, you can create a platform directory named "i386_win95" using the -"mkdest.pl" script as described above (run from a Unix system). This will -only work on a file system that supports symbolic links. If you are using -a platform directory, set the OBJ environment var. to "obj" and create -a symlink "obj" in the top-level dir. that points to "i386_win95/obj". -Otherwise, set OBJ to "src" to build the objects with the sources. - -The environment variable AFSROOT points to the parent of the AFS src -directory. Executables will be built by default in AFSROOT\dest. - -Copy the file src\NTMake9x to the parent of the src directory. You only -need to do this once. If you are building on a local drive, copy -AFSROOT\src\symlink.bat to AFSROOT\. - -Follow the NT build instructions in file "README-NT" to perform the build. -You will be using "NTMake9x" as the top-level makefile, instead of -"NTMakefile". Most of the instructions in "README-NT" apply to the Win9x -build as well. - -Build Notes: - -1) If you are building the Windows 9x AFS Client Control Panel - (win9xpanel), it requires shlwapi.h. This file can be found in the - header files associated with the Windows SDK (95/98 NT or W2000). - -2) You can build the Windows 9x client from a Windows NT or W2000 system. - This requires you to edit AFSROOT\config\NTMakefile.i386_win95. - Change line: DEL = $(AFSROOT)\src\rmbat - to: DEL = -del /q /f - -3) If you build the W2000 client, then switch to building the Windows 95 - client (or vice versa), you should clean the previous build by either: - nmake -f ntmakefile clean -or nmake -f ntmake9x clean - -4) When building the "comerr" component, the makefile now uses the - existing error_table_nt.c file (and touches it so it will be up to date - by default.) If you make changes to the lex or yacc source files and want - to rebuild error_table_nt.c, you can simply delete it and rerun make, - which will cause the file to be built using lex and yacc. Make sure - you have these utilities on your system. - -5) Required DLL's for redistribution - - The AFS Control Panel for Win95/98 requires Microsoft DLL's that can - be installed using: - VC6RedistSetup_enu.exe - This is located at: - http://support.microsoft.com/support/kb/articles/Q259/4/03.ASP - Two Microsoft DLL's must be included at DEST\WinInstall\Config\. - SHLWAPI.DLL - WININET.DLL - These DLL's will not be left on the target machine, there are only - used for installation and removed after installation is complete. - -6) Required changes to configuration file .\src\config\NTMakefile.i386_win95 - -AFSPRODUCT_VERSION - Product version -CELLNAME_DEFAULT - The default AFS cell name -CELLSERVDB_INSTALL - The default name for the CellServDB included in the install script -CELLSERVDB_WEB - The default web address to obtain CellServDB - -For Example: - - .\src\config\NTMakefile.i386_win95 - AFSPRODUCT_VERSION=1.1.1a - CELLNAME_DEFAULT=openafs.org - CELLSERVDB_INSTALL=CellServDB.GrandCentral - CELLSERVDB_WEB=http://grand.central.org/dl/cellservdb/CellServDB - -Version level may be specified in different formats, for example the following -forms all have the same version level; however will be displayed differently: - -AFSPRODUCT_VERSION=1.1.1a -AFSPRODUCT_VERSION=1.1.1 a -AFSPRODUCT_VERSION=1.1.1.1 -AFSPRODUCT_VERSION=1.1.101 - -6) Installation - - First, execute "nmake /f ntmake9x media" to copy all the client - executables and other files to DEST\WinInstall. - - You can then install the client onto a target Windows 9x machine by - executing: - install.bat - For example, - install.bat DEST\WinInstall\ c: \afscli almaden.ibm.com 40000 - - If you do not wish to use the batch file, you can install the client - manually by performing the following steps. - - 1. On the target machine, copy all the files from DEST\WinInstall to the - install location (usually c:\afscli). - 2. Add entries to the target's AUTOEXEC.BAT file as follows: - set AFSCONF=c:\afscli (replace with your install dir.) - path %path%;c:\afscli - 3. Copy the template.reg file to afscli.reg. Replace any references - to c: and afscli with your install location. Double click on the - afscli.reg file to add the registry entries to the target system. - 4. Create the following AFS configuration files in the install dir.: - - ThisCell: - containing the name of your home cell - - cache.info: - containing your cache configuration. For example, - to configure a cache of 40,000 1KB blocks with a disk cache - location of c:\afscache, you would enter in this file: - /afs:c:\afscache;40000 - (The cache location has no effect unless you have enabled - the experimental disk cache support.) - - CellServDB: - the cell server database. You can get the latest version from AFS: - /afs/transarc.com/service/etc/CellServDB.export - 5. Reboot the target machine. - 6. You can now start the client by executing the program WinAfsLoad.exe - from the install directory. - - diff --git a/README.CVS b/README.CVS index 5f3533d73..73790bc7f 100644 --- a/README.CVS +++ b/README.CVS @@ -35,6 +35,7 @@ Step-by-step When prompted for the password, use the password listed above. % cvs checkout openafs + % ./regen.sh After this command completes there will be an openafs subdirectory with the latest sources. diff --git a/README.DEVEL b/README.DEVEL index ea5dfcbbc..3c3d2b970 100644 --- a/README.DEVEL +++ b/README.DEVEL @@ -1,13 +1,15 @@ Notes on Coding Standards/Requirements for OpenAFS Source --------------------------------------------------------- +We have an official style. Please use it. If you have gnu indent 2.2.9 or +later you can reformat for this style with the following option: + +-npro -nbad -bap -nbc -bbo -br -ce -cdw -brs -ncdb -cp1 -ncs -di2 -ndj -nfc1 +-nfca -i4 -lp -npcs -nprs -psl -sc -nsob -ts8 + Do not use $< in any cross-platform dir as it requires a reasonable make that is not available on all systems. -Be careful with prototypes/ANSI-C in code that will be compiled for -kernel source. In general, avoid them until we have figured out -exactly when/where they can be used safely. - Do not have build rules that build multiple targets. Make doesn't seem able to handle this, and it interferes with -j builds. (In particular, build the rxgen targets individually and not using the flags for building all the files @@ -68,6 +70,9 @@ Compiles on gcc-using machines should strive to handle using Routines shall be defined in source prior to use if possible, and prototyped in block at top of file if static. +API documentation in the code should be done using Qt-style Doxygen +comments. + If you make a routine or variable static, be sure and remove it from the AIX .exp files. diff --git a/acinclude.m4 b/acinclude.m4 index 231ca5a3f..872644fe3 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -10,81 +10,206 @@ AC_CANONICAL_HOST SRCDIR_PARENT=`pwd` #BOZO_SAVE_CORES pam sia -AC_ARG_WITH(afs-sysname, -[ --with-afs-sysname=sys use sys for the afs sysname] -) -AC_ARG_ENABLE( obsolete, -[ --enable-obsolete enable obsolete portions of AFS (mpp and package)],, enable_obsolete="no") -AC_ARG_ENABLE( afsdb, -[ --disable-afsdb disable AFSDB RR support],, enable_afsdb="yes") -AC_ARG_ENABLE( pam, -[ --disable-pam disable PAM support],, enable_pam="yes") -AC_ARG_ENABLE( bos-restricted-mode, -[ --enable-bos-restricted-mode enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no") -AC_ARG_ENABLE( bos-new-config, -[ --enable-bos-new-config enable bosserver pickup of BosConfig.new on restarts],, enable_bos_new_config="no") -AC_ARG_ENABLE( largefile-fileserver, -[ --disable-largefile-fileserver disable large file support in fileserver],, enable_largefile_fileserver="yes") -AC_ARG_ENABLE( namei-fileserver, -[ --enable-namei-fileserver force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no") -AC_ARG_ENABLE( supergroups, -[ --enable-supergroups enable support for nested pts groups],, enable_supergroups="no") -AC_ARG_ENABLE( fast-restart, -[ --enable-fast-restart enable fast startup of file server without salvaging],, enable_fast_restart="no") -AC_ARG_ENABLE( bitmap-later, -[ --enable-bitmap-later enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no") -AC_ARG_ENABLE( unix-sockets, -[ --enable-unix-sockets enable use of unix domain sockets for fssync],, enable_unix_sockets="yes") -AC_ARG_ENABLE( full-vos-listvol-switch, -[ --disable-full-vos-listvol-switch disable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="yes") -AC_ARG_WITH(dux-kernel-headers, -[ --with-dux-kernel-headers=path use the kernel headers found at path(optional, defaults to first match in /usr/sys)] -) -AC_ARG_WITH(linux-kernel-headers, -[ --with-linux-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/linux-2.4, then /usr/src/linux)] -) -AC_ARG_WITH(bsd-kernel-headers, -[ --with-bsd-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/sys)] -) -AC_ARG_WITH(bsd-kernel-build, -[ --with-bsd-kernel-build=path use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC)] -) -AC_ARG_ENABLE(kernel-module, -[ --disable-kernel-module disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes" -) -AC_ARG_ENABLE(redhat-buildsys, -[ --enable-redhat-buildsys enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no" -) -AC_ARG_ENABLE(transarc-paths, -[ --enable-transarc-paths Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no" -) -AC_ARG_ENABLE(tivoli-tsm, -[ --enable-tivoli-tsm Enable use of the Tivoli TSM API libraries for butc support],, enable_tivoli_tsm="no" -) -AC_ARG_ENABLE(debug-kernel, -[ --enable-debug-kernel enable compilation of the kernel module with debugging information (defaults to disabled)],, enable_debug_kernel="no" -) -AC_ARG_ENABLE(optimize-kernel, -[ --disable-optimize-kernel disable compilation of the kernel module with optimization (defaults based on platform)],, enable_optimize_kernel="yes" -) -AC_ARG_ENABLE(debug, -[ --enable-debug enable compilation of the user space code with debugging information (defaults to disabled)],, enable_debug="no" -) -AC_ARG_ENABLE(strip-binaries, -[ --disable-strip-binaries disable stripping of symbol information from binaries (defaults to enabled)],, enable_strip_binaries="maybe" -) -AC_ARG_ENABLE(optimize, -[ --disable-optimize disable optimization for compilation of the user space code (defaults to enabled)],, enable_optimize="yes" -) -AC_ARG_ENABLE(debug-lwp, -[ --enable-debug-lwp enable compilation of the LWP code with debugging information (defaults to disabled)],, enable_debug_lwp="no" -) -AC_ARG_ENABLE(optimize-lwp, -[ --disable-optimize-lwp disable optimization for compilation of the LWP code (defaults to enabled)],, enable_optimize_lwp="yes" -) -AC_ARG_ENABLE(warnings, -[ --enable-warnings enable compilation warnings when building with gcc (defaults to disabled)],, enable_warnings="no" -) + +dnl System identity. +AC_ARG_WITH([afs-sysname], + [AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])]) + +dnl General feature options. +AC_ARG_ENABLE([afsdb], + [AS_HELP_STRING([--disable-afsdb], [disable AFSDB DNS RR support])], + , + [enable_afsdb="yes"]) +AC_ARG_ENABLE([obsolete], + [AC_HELP_STRING([--enable-obsolete], + [enable obsolete portions of AFS (mpp and package)])], + , + [enable_obsolete="no"]) +AC_ARG_ENABLE([pam], + [AS_HELP_STRING([--disable-pam], [disable PAM support])], + , + [enable_pam="yes"]) +AC_ARG_ENABLE([bos-restricted-mode], + [AS_HELP_STRING([--enable-bos-restricted-mode], + [enable bosserver restricted mode which disables certain bosserver + functionality])], + , + [enable_bos_restricted_mode="no"]) +AC_ARG_ENABLE([bos-new-config], + [AS_HELP_STRING([--enable-bos-new-config], + [enable bosserver pickup of BosConfig.new on restarts])], + , + [enable_bos_new_config="no"]) +AC_ARG_ENABLE([largefile-fileserver], + [AS_HELP_STRING([--disable-largefile-fileserver], + [disable large file support in fileserver])], + , + [enable_largefile_fileserver="yes"]) +AC_ARG_ENABLE([namei-fileserver], + [AS_HELP_STRING([--enable-namei-fileserver], + [force compilation of namei fileserver in preference to inode + fileserver])], + , + [enable_namei_fileserver="no"]) +AC_ARG_ENABLE([supergroups], + [AS_HELP_STRING([--enable-supergroups], + [enable support for nested pts groups])], + , + [enable_supergroups="no"]) +AC_ARG_ENABLE([fast-restart], + [AS_HELP_STRING([--enable-fast-restart], + [enable fast startup of file server without salvaging])], + , + [enable_fast_restart="no"]) +AC_ARG_ENABLE([bitmap-later], + [AS_HELP_STRING([--enable-bitmap-later], + [enable fast startup of file server by not reading bitmap till + needed])], + , + [enable_bitmap_later="no"]) +AC_ARG_ENABLE([demand-attach-fs], + [AS_HELP_STRING([--enable-demand-attach-fs], + [enable Demand Attach Fileserver (please see documentation)])], + , + [enable_demand_attach_fs="no"]) +AC_ARG_ENABLE([disconnected], + [AS_HELP_STRING([--enable-disconnected], + [enable disconnected support in cache manager (experimental)])], + , + [enable_disconnected="no"]) +AC_ARG_ENABLE([unix-sockets], + [AS_HELP_STRING([--enable-unix-sockets], + [enable use of unix domain sockets for fssync])], + , + [enable_unix_sockets="yes"]) +AC_ARG_ENABLE([full-vos-listvol-switch], + [AS_HELP_STRING([--disable-full-vos-listvol-switch], + [disable vos full listvol switch for formatted output])], + , + [enable_full_vos_listvol_switch="yes"]) +AC_ARG_ENABLE([icmp-pmtu-discovery], + [AS_HELP_STRING([--enable-icmp-pmtu-discovery], + [enable path MTU discovery by decoding ICMP unreachable replies])], + , + [enable_icmp_pmtu_discovery="no"]) +AC_ARG_ENABLE([tivoli-tsm], + [AS_HELP_STRING([--enable-tivoli-tsm], + [enable use of the Tivoli TSM API libraries for butc support])], + , + [enable_tivoli_tsm="no"]) +AC_ARG_ENABLE([pthreaded-ubik], + [AS_HELP_STRING([--enable-pthreaded-ubik], + [enable installation of pthreaded ubik applications (defaults to + disabled)])], + , + [enable_pthreaded_ubik="no"]) + +dnl Kernel module build options. +AC_ARG_WITH([dux-kernel-headers], + [AS_HELP_STRING([--with-dux-kernel-headers=path], + [use the kernel headers found at path (optional, defaults to first + match in /usr/sys)])]) +AC_ARG_WITH([linux-kernel-headers], + [AS_HELP_STRING([--with-linux-kernel-headers=path], + [use the kernel headers found at path (optional, defaults to + /usr/src/linux-2.4, then /usr/src/linux)])]) +AC_ARG_WITH([bsd-kernel-headers], + [AS_HELP_STRING([--with-bsd-kernel-headers=path], + [use the kernel headers found at path (optional, defaults to + /usr/src/sys)])]) +AC_ARG_WITH([bsd-kernel-build], + [AS_HELP_STRING([--with-bsd-kernel-build=path], + [use the kernel build found at path (optional, defaults to + KSRC/i386/compile/GENERIC)])]) +AC_ARG_WITH([linux-kernel-packaging], + [AS_HELP_STRING([--with-linux-kernel-packaging], + [use standard naming conventions to aid Linux kernel build packaging + (disables MPS, sets the kernel module name to openafs.ko, and + installs kernel modules into the standard Linux location)])], + [AC_SUBST(LINUX_KERNEL_PACKAGING, "yes") + AC_SUBST(LINUX_LIBAFS_NAME, "openafs")], + [AC_SUBST(LINUX_LIBAFS_NAME, "libafs")]) +AC_ARG_ENABLE([kernel-module], + [AS_HELP_STRING([--disable-kernel-module], + [disable compilation of the kernel module (defaults to enabled)])], + , + [enable_kernel_module="yes"]) +AC_ARG_ENABLE([redhat-buildsys], + [AS_HELP_STRING([--enable-redhat-buildsys], + [enable compilation of the redhat build system kernel (defaults to + disabled)])], + , + [enable_redhat_buildsys="no"]) + +dnl Installation locations. +AC_ARG_ENABLE([transarc-paths], + [AS_HELP_STRING([--enable-transarc-paths], + [use Transarc style paths like /usr/afs and /usr/vice])], + , + [enable_transarc_paths="no"]) + +dnl Optimization and debugging flags. +AC_ARG_ENABLE([strip-binaries], + [AS_HELP_STRING([--disable-strip-binaries], + [disable stripping of symbol information from binaries (defaults to + enabled)])], + , + [enable_strip_binaries="maybe"]) +AC_ARG_ENABLE([debug], + [AS_HELP_STRING([--enable-debug], + [enable compilation of the user space code with debugging information + (defaults to disabled)])], + , + [enable_debug="no"]) +AC_ARG_ENABLE([optimize], + [AS_HELP_STRING([--disable-optimize], + [disable optimization for compilation of the user space code (defaults + to enabled)])], + , + [enable_optimize="yes"]) +AC_ARG_ENABLE([warnings], + [AS_HELP_STRING([--enable-warnings], + [enable compilation warnings when building with gcc (defaults to + disabled)])], + , + [enable_warnings="no"]) +AC_ARG_ENABLE([debug-kernel], + [AS_HELP_STRING([--enable-debug-kernel], + [enable compilation of the kernel module with debugging information + (defaults to disabled)])], + , + [enable_debug_kernel="no"]) +AC_ARG_ENABLE([optimize-kernel], + [AS_HELP_STRING([--disable-optimize-kernel], + [disable compilation of the kernel module with optimization (defaults + based on platform)])], + , + [enable_optimize_kernel="yes"]) +AC_ARG_ENABLE([debug-lwp], + [AS_HELP_STRING([--enable-debug-lwp], + [enable compilation of the LWP code with debugging information + (defaults to disabled)])], + , + [enable_debug_lwp="no"]) +AC_ARG_ENABLE([optimize-lwp], + [AS_HELP_STRING([--disable-optimize-lwp], + [disable optimization for compilation of the LWP code (defaults to + enabled)])], + , + [enable_optimize_lwp="yes"]) +AC_ARG_ENABLE([debug-pam], + [AS_HELP_STRING([--enable-debug-pam], + [enable compilation of the PAM code with debugging information + (defaults to disabled)])], + , + [enable_debug_pam="no"]) +AC_ARG_ENABLE([optimize-pam], + [AS_HELP_STRING([--disable-optimize-pam], + [disable optimization for compilation of the PAM code (defaults to + enabled)])], + , + [enable_optimize_pam="yes"]) + enable_login="no" @@ -262,6 +387,12 @@ else vm=${v#*.} AFS_SYSNAME="i386_obsd${vM}${vm}" ;; + sparc64-*-openbsd?.?) + v=${host#*openbsd} + vM=${v%.*} + vm=${v#*.} + AFS_SYSNAME="sparc64_obsd${vM}${vm}" + ;; i?86-*-freebsd?.*) v=${host#*freebsd} vM=${v%.*} @@ -418,7 +549,7 @@ else powerpc-apple-darwin7.5*) AFS_SYSNAME="ppc_darwin_70" ;; - powerpc-apple-darwin8*) + powerpc-apple-darwin8.0*) AFS_SYSNAME="ppc_darwin_80" ;; powerpc-apple-darwin8.*) @@ -600,12 +731,17 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) LINUX_KBUILD_USES_EXTRA_CFLAGS LINUX_KERNEL_COMPILE_WORKS + LINUX_EXPORTS_FIND_TASK_BY_PID + LINUX_EXPORTS_PROC_ROOT_FS LINUX_HAVE_CURRENT_KERNEL_TIME LINUX_KMEM_CACHE_INIT LINUX_HAVE_KMEM_CACHE_T LINUX_KMEM_CACHE_CREATE_TAKES_DTOR + LINUX_D_PATH_TAKES_STRUCT_PATH + LINUX_NEW_EXPORT_OPS LINUX_CONFIG_H_EXISTS LINUX_COMPLETION_H_EXISTS + LINUX_EXPORTFS_H_EXISTS LINUX_DEFINES_FOR_EACH_PROCESS LINUX_DEFINES_PREV_TASK LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE @@ -641,6 +777,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) LINUX_KERNEL_SELINUX LINUX_KERNEL_SOCK_CREATE LINUX_KERNEL_PAGE_FOLLOW_LINK + LINUX_KERNEL_HLIST_UNHASHED LINUX_KEY_TYPE_H_EXISTS LINUX_NEED_RHCONFIG LINUX_RECALC_SIGPENDING_ARG_TYPE @@ -659,6 +796,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) LINUX_GET_SB_HAS_STRUCT_VFSMOUNT LINUX_STATFS_TAKES_DENTRY LINUX_FREEZER_H_EXISTS + LINUX_HAVE_SVC_ADDR_IN if test "x$ac_cv_linux_freezer_h_exists" = "xyes" ; then AC_DEFINE(FREEZER_H_EXISTS, 1, [define if you have linux/freezer.h]) fi @@ -678,7 +816,11 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) LINUX_EXPORTS_SYS_OPEN LINUX_EXPORTS_SYS_WAIT4 LINUX_EXPORTS_RCU_READ_LOCK - LINUX_WHICH_MODULES + if test "x$with_linux_kernel_packaging" = "xno" ; then + LINUX_WHICH_MODULES + else + AC_SUBST(MPS,'SP') + fi if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported]) ac_cv_linux_exports_sys_call_table=no @@ -746,6 +888,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) if test "x$ac_cv_linux_config_h_exists" = "xyes" ; then AC_DEFINE(CONFIG_H_EXISTS, 1, [define if config.h exists]) fi + if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then + AC_DEFINE(EXPORTFS_H_EXISTS, 1, [define if linux/exportfs.h exists]) + fi if test "x$ac_cv_linux_key_type_h_exists" = "xyes" ; then AC_DEFINE(KEY_TYPE_H_EXISTS, 1, [define if key-type.h exists]) fi @@ -815,6 +960,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" ; then AC_DEFINE(HAVE_KERNEL_PAGE_FOLLOW_LINK, 1, [define if your linux kernel provides page_follow_link]) fi + if test "x$ac_cv_linux_kernel_hlist_unhashed" = "xyes" ; then + AC_DEFINE(HAVE_KERNEL_HLIST_UNHASHED, 1, [define if your linux kernel provides hlist_unhashed]) + fi if test "x$ac_linux_syscall" = "xyes" ; then AC_DEFINE(HAVE_KERNEL_LINUX_SYSCALL_H, 1, [define if your linux kernel has linux/syscall.h]) fi @@ -928,6 +1076,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) else AC_MSG_WARN([your kernel does not have a usable symlink cache API]) fi + if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then + AC_DEFINE(HAVE_SVC_ADDR_IN, 1, [define if svc_add_in exists]) + fi : fi esac @@ -1054,9 +1205,27 @@ else fi +AC_CACHE_VAL(ac_cv_setsockopt_iprecverr, +[ +AC_MSG_CHECKING([for setsockopt(, SOL_IP, IP_RECVERR)]) +AC_TRY_COMPILE( [#include +#include +#include ], +[int on=1; +setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));], ac_cv_setsockopt_iprecverr=yes, ac_cv_setsockopt_iprecverr=no) +AC_MSG_RESULT($ac_cv_setsockopt_iprecverr)]) +if test "$ac_cv_setsockopt_iprecverr" = "yes"; then + AC_DEFINE(ADAPT_PMTU_RECVERR, 1, [define if asynchronous socket errors can be received]) +fi + PTHREAD_LIBS=error -AC_CHECK_LIB(pthread, pthread_attr_init, - PTHREAD_LIBS="-lpthread") +if test "x$MKAFS_OSTYPE" = OBSD; then + PTHREAD_LIBS="-pthread" +fi +if test "x$PTHREAD_LIBS" = xerror; then + AC_CHECK_LIB(pthread, pthread_attr_init, + PTHREAD_LIBS="-lpthread") +fi if test "x$PTHREAD_LIBS" = xerror; then AC_CHECK_LIB(pthreads, pthread_attr_init, PTHREAD_LIBS="-lpthreads") @@ -1083,6 +1252,8 @@ if test "$enable_obsolete" = "yes"; then WITH_OBSOLETE=YES fi +HOST_CPU="$host_cpu" + if test "x$with_bsd_kernel_headers" != "x"; then BSD_KERNEL_PATH="$with_bsd_kernel_headers" else @@ -1093,11 +1264,11 @@ if test "x$with_bsd_kernel_build" != "x"; then BSD_KERNEL_BUILD="$with_bsd_kernel_build" else case $AFS_SYSNAME in - i386_fbsd_4?) + *_fbsd_4?) BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC" ;; - i386_fbsd_5?) - BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/i386/compile/GENERIC" + *_fbsd_*) + BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC" ;; esac fi @@ -1115,18 +1286,42 @@ if test "$enable_bitmap_later" = "yes"; then AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later]) fi +if test "$enable_demand_attach_fs" = "yes"; then + AC_DEFINE(DEMAND_ATTACH_ENABLE, 1, [define if you want the demand attach fileserver]) + DEMAND_ATTACH="yes" +else + DEMAND_ATTACH="no" +fi +AC_SUBST(DEMAND_ATTACH) + +if test "$enable_disconnected" = "yes"; then + AC_DEFINE(AFS_DISCON_ENV, 1, [define if you want support for disconnected operation]) +fi + if test "$enable_unix_sockets" = "yes"; then - AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.]) - USE_UNIX_SOCKETS="yes" + AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.]) + USE_UNIX_SOCKETS="yes" else - USE_UNIX_SOCKETS="no" + USE_UNIX_SOCKETS="no" fi AC_SUBST(USE_UNIX_SOCKETS) +if test "$enable_fast_restart" = "yes" && + test "$enable_demand_attach_fs" = "yes" ; then + AC_MSG_ERROR([The Demand Attach and Fast Restart extensions are mutually exclusive. Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless.]) + exit 1 +fi + if test "$enable_full_vos_listvol_switch" = "yes"; then AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch]) fi +if test "$enable_icmp_pmtu_discovery" = "yes"; then + if test "$ac_cv_setsockopt_iprecverr" = "yes"; then + AC_DEFINE(ADAPT_PMTU, 1, [define if you want to decode icmp unreachable packets to discover path mtu]) + fi +fi + if test "$enable_bos_restricted_mode" = "yes"; then AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode]) fi @@ -1154,31 +1349,45 @@ XBSA_CFLAGS="" if test "$enable_tivoli_tsm" = "yes"; then XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen + XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample + XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample if test -r "$XBSADIR1/xbsa.h"; then XBSA_CFLAGS="-Dxbsa -I$XBSADIR1" + XBSA_XLIBS="" AC_MSG_RESULT([yes, $XBSA_CFLAGS]) elif test -r "$XBSADIR2/xbsa.h"; then XBSA_CFLAGS="-Dxbsa -I$XBSADIR2" + XBSA_XLIBS="" + AC_MSG_RESULT([yes, $XBSA_CFLAGS]) + elif test -r "$XBSADIR3/dsmapifp.h"; then + XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3" + XBSA_XLIBS="-ldl" + AC_MSG_RESULT([yes, $XBSA_CFLAGS]) + elif test -r "$XBSADIR4/dsmapifp.h"; then + XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4" + XBSA_XLIBS="-ldl" AC_MSG_RESULT([yes, $XBSA_CFLAGS]) else - AC_MSG_RESULT([no, missing xbsa.h header file]) + AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files]) fi else AC_MSG_RESULT([no]) fi AC_SUBST(XBSA_CFLAGS) +AC_SUBST(XBSA_XLIBS) dnl checks for header files. AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_HEADER_DIRENT -AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h) +AC_CHECK_HEADERS(stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h) AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h) AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h) AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h poll.h) AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h) -AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h) +AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h) +AC_CHECK_HEADERS(linux/errqueue.h,,,[#include ]) if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then HAVE_PAM="yes" @@ -1273,11 +1482,17 @@ if test "x$enable_kernel_module" = "xyes"; then ENABLE_KERNEL_MODULE=libafs fi +if test "x$enable_pthreaded_ubik" = "xyes"; then +ENABLE_PTHREADED_UBIK=yes +fi + AC_SUBST(AFS_SYSNAME) AC_SUBST(AFS_PARAM_COMMON) AC_SUBST(ENABLE_KERNEL_MODULE) +AC_SUBST(ENABLE_PTHREADED_UBIK) AC_SUBST(LIB_AFSDB) AC_SUBST(LINUX_KERNEL_PATH) +AC_SUBST(HOST_CPU) AC_SUBST(BSD_KERNEL_PATH) AC_SUBST(BSD_KERNEL_BUILD) AC_SUBST(LINUX_VERSION) diff --git a/config.sub b/config.sub old mode 100755 new mode 100644 diff --git a/configure b/configure index c0707b9e6..f4d3056d7 100755 --- a/configure +++ b/configure @@ -675,7 +675,7 @@ AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE -CPP +PATH_CPP build build_cpu build_vendor @@ -684,6 +684,9 @@ host host_cpu host_vendor host_os +LINUX_KERNEL_PACKAGING +LINUX_LIBAFS_NAME +CPP GREP EGREP LN_S @@ -700,8 +703,10 @@ RHCONFIG_SP RHCONFIG_MP MPS PTHREAD_LIBS +DEMAND_ATTACH USE_UNIX_SOCKETS XBSA_CFLAGS +XBSA_XLIBS HAVE_PAM BUILD_LOGIN afsconfdir @@ -718,8 +723,10 @@ afsbosconfigdir AFS_SYSNAME AFS_PARAM_COMMON ENABLE_KERNEL_MODULE +ENABLE_PTHREADED_UBIK LIB_AFSDB LINUX_KERNEL_PATH +HOST_CPU BSD_KERNEL_PATH BSD_KERNEL_BUILD LINUX_VERSION @@ -767,6 +774,8 @@ NO_STRIP_KRB OPTMZ PAM_CFLAGS PAM_LIBS +PAM_DBG +PAM_OPTMZ PINSTALL_LIBS REGEX_OBJ SHLIB_CFLAGS @@ -1380,48 +1389,92 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors - --enable-obsolete enable obsolete portions of AFS (mpp and package) - --disable-afsdb disable AFSDB RR support - --disable-pam disable PAM support - --enable-bos-restricted-mode enable bosserver restricted mode which disables certain bosserver functionality - --enable-bos-new-config enable bosserver pickup of BosConfig.new on restarts - --disable-largefile-fileserver disable large file support in fileserver - --enable-namei-fileserver force compilation of namei fileserver in preference to inode fileserver - --enable-supergroups enable support for nested pts groups - --enable-fast-restart enable fast startup of file server without salvaging - --enable-bitmap-later enable fast startup of file server by not reading bitmap till needed - --enable-unix-sockets enable use of unix domain sockets for fssync - --disable-full-vos-listvol-switch disable vos full listvol switch for formatted output - --disable-kernel-module disable compilation of the kernel module (defaults to enabled) - --enable-redhat-buildsys enable compilation of the redhat build system kernel (defaults to disabled) - --enable-transarc-paths Use Transarc style paths like /usr/afs and /usr/vice - --enable-tivoli-tsm Enable use of the Tivoli TSM API libraries for butc support - --enable-debug-kernel enable compilation of the kernel module with debugging information (defaults to disabled) - --disable-optimize-kernel disable compilation of the kernel module with optimization (defaults based on platform) - --enable-debug enable compilation of the user space code with debugging information (defaults to disabled) - --disable-strip-binaries disable stripping of symbol information from binaries (defaults to enabled) - --disable-optimize disable optimization for compilation of the user space code (defaults to enabled) - --enable-debug-lwp enable compilation of the LWP code with debugging information (defaults to disabled) - --disable-optimize-lwp disable optimization for compilation of the LWP code (defaults to enabled) - --enable-warnings enable compilation warnings when building with gcc (defaults to disabled) - --enable-bigendian the target is big endian - --enable-littleendian the target is little endian + --disable-afsdb disable AFSDB DNS RR support + --enable-obsolete enable obsolete portions of AFS (mpp and package) + --disable-pam disable PAM support + --enable-bos-restricted-mode + enable bosserver restricted mode which disables + certain bosserver functionality + --enable-bos-new-config enable bosserver pickup of BosConfig.new on restarts + --disable-largefile-fileserver + disable large file support in fileserver + --enable-namei-fileserver + force compilation of namei fileserver in preference + to inode fileserver + --enable-supergroups enable support for nested pts groups + --enable-fast-restart enable fast startup of file server without salvaging + --enable-bitmap-later enable fast startup of file server by not reading + bitmap till needed + --enable-demand-attach-fs + enable Demand Attach Fileserver (please see + documentation) + --enable-disconnected enable disconnected support in cache manager + (experimental) + --enable-unix-sockets enable use of unix domain sockets for fssync + --disable-full-vos-listvol-switch + disable vos full listvol switch for formatted output + --enable-icmp-pmtu-discovery + enable path MTU discovery by decoding ICMP + unreachable replies + --enable-tivoli-tsm enable use of the Tivoli TSM API libraries for butc + support + --enable-pthreaded-ubik enable installation of pthreaded ubik applications + (defaults to disabled) + --disable-kernel-module disable compilation of the kernel module (defaults + to enabled) + --enable-redhat-buildsys + enable compilation of the redhat build system kernel + (defaults to disabled) + --enable-transarc-paths use Transarc style paths like /usr/afs and /usr/vice + --disable-strip-binaries + disable stripping of symbol information from + binaries (defaults to enabled) + --enable-debug enable compilation of the user space code with + debugging information (defaults to disabled) + --disable-optimize disable optimization for compilation of the user + space code (defaults to enabled) + --enable-warnings enable compilation warnings when building with gcc + (defaults to disabled) + --enable-debug-kernel enable compilation of the kernel module with + debugging information (defaults to disabled) + --disable-optimize-kernel + disable compilation of the kernel module with + optimization (defaults based on platform) + --enable-debug-lwp enable compilation of the LWP code with debugging + information (defaults to disabled) + --disable-optimize-lwp disable optimization for compilation of the LWP code + (defaults to enabled) + --enable-debug-pam enable compilation of the PAM code with debugging + information (defaults to disabled) + --disable-optimize-pam disable optimization for compilation of the PAM code + (defaults to enabled) + --enable-bigendian the target is big endian + --enable-littleendian the target is little endian Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-afs-sysname=sys use sys for the afs sysname - - --with-dux-kernel-headers=path use the kernel headers found at path(optional, defaults to first match in /usr/sys) - - --with-linux-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/linux-2.4, then /usr/src/linux) - - --with-bsd-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/sys) - - --with-bsd-kernel-build=path use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC) - ---with-krb5-conf=krb5-config-location Use a krb5-config script to configure Kerberos ---with-krb5 Support for Kerberos 5 (manual configuration) + --with-afs-sysname=sys use sys for the afs sysname + --with-dux-kernel-headers=path + use the kernel headers found at path (optional, + defaults to first match in /usr/sys) + --with-linux-kernel-headers=path + use the kernel headers found at path (optional, + defaults to /usr/src/linux-2.4, then /usr/src/linux) + --with-bsd-kernel-headers=path + use the kernel headers found at path (optional, + defaults to /usr/src/sys) + --with-bsd-kernel-build=path + use the kernel build found at path (optional, + defaults to KSRC/i386/compile/GENERIC) + --with-linux-kernel-packaging + use standard naming conventions to aid Linux kernel + build packaging (disables MPS, sets the kernel + module name to openafs.ko, and installs kernel + modules into the standard Linux location) + --with-krb5-conf=[krb5-config-location] + use a krb5-config script to configure Kerberos + --with-krb5 support for Kerberos 5 (manual configuration) Some influential environment variables: CC C compiler command @@ -2176,7 +2229,7 @@ fi # Define the identity of the package. PACKAGE=openafs - VERSION=1.4.7 + VERSION=1.5.50 cat >>confdefs.h <<_ACEOF @@ -2324,8 +2377,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers src/config/afsconfig.h" -MACOS_VERSION=1.4.7 -LINUX_PKGVER=1.4.7 +MACOS_VERSION=1.5.50 +LINUX_PKGVER=1.5.50 #LINUX_PKGREL=0.pre0 LINUX_PKGREL=1.1 @@ -3507,27 +3560,29 @@ else fi -for ac_prog in /lib/cpp /usr/bin/cpp /usr/ccs/lib/cpp cpp +for ac_prog in cpp do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CPP+set}" = set; then +if test "${ac_cv_path_PATH_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$CPP"; then - ac_cv_prog_CPP="$CPP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/" + case $PATH_CPP in + [\\/]* | ?:[\\/]*) + ac_cv_path_PATH_CPP="$PATH_CPP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/lib:/usr/ccs/lib" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CPP="$ac_prog" + ac_cv_path_PATH_CPP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -3535,21 +3590,23 @@ done done IFS=$as_save_IFS + ;; +esac fi -fi -CPP=$ac_cv_prog_CPP -if test -n "$CPP"; then - { echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +PATH_CPP=$ac_cv_path_PATH_CPP +if test -n "$PATH_CPP"; then + { echo "$as_me:$LINENO: result: $PATH_CPP" >&5 +echo "${ECHO_T}$PATH_CPP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi - test -n "$CPP" && break + test -n "$PATH_CPP" && break done + # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 @@ -4679,17 +4736,12 @@ SRCDIR_PARENT=`pwd` #BOZO_SAVE_CORES pam sia + # Check whether --with-afs-sysname was given. if test "${with_afs_sysname+set}" = set; then withval=$with_afs_sysname; fi -# Check whether --enable-obsolete was given. -if test "${enable_obsolete+set}" = set; then - enableval=$enable_obsolete; -else - enable_obsolete="no" -fi # Check whether --enable-afsdb was given. if test "${enable_afsdb+set}" = set; then @@ -4698,6 +4750,13 @@ else enable_afsdb="yes" fi +# Check whether --enable-obsolete was given. +if test "${enable_obsolete+set}" = set; then + enableval=$enable_obsolete; +else + enable_obsolete="no" +fi + # Check whether --enable-pam was given. if test "${enable_pam+set}" = set; then enableval=$enable_pam; @@ -4754,6 +4813,20 @@ else enable_bitmap_later="no" fi +# Check whether --enable-demand-attach-fs was given. +if test "${enable_demand_attach_fs+set}" = set; then + enableval=$enable_demand_attach_fs; +else + enable_demand_attach_fs="no" +fi + +# Check whether --enable-disconnected was given. +if test "${enable_disconnected+set}" = set; then + enableval=$enable_disconnected; +else + enable_disconnected="no" +fi + # Check whether --enable-unix-sockets was given. if test "${enable_unix_sockets+set}" = set; then enableval=$enable_unix_sockets; @@ -4768,6 +4841,28 @@ else enable_full_vos_listvol_switch="yes" fi +# Check whether --enable-icmp-pmtu-discovery was given. +if test "${enable_icmp_pmtu_discovery+set}" = set; then + enableval=$enable_icmp_pmtu_discovery; +else + enable_icmp_pmtu_discovery="no" +fi + +# Check whether --enable-tivoli-tsm was given. +if test "${enable_tivoli_tsm+set}" = set; then + enableval=$enable_tivoli_tsm; +else + enable_tivoli_tsm="no" +fi + +# Check whether --enable-pthreaded-ubik was given. +if test "${enable_pthreaded_ubik+set}" = set; then + enableval=$enable_pthreaded_ubik; +else + enable_pthreaded_ubik="no" +fi + + # Check whether --with-dux-kernel-headers was given. if test "${with_dux_kernel_headers+set}" = set; then @@ -4792,12 +4887,23 @@ if test "${with_bsd_kernel_build+set}" = set; then withval=$with_bsd_kernel_build; fi + +# Check whether --with-linux-kernel-packaging was given. +if test "${with_linux_kernel_packaging+set}" = set; then + withval=$with_linux_kernel_packaging; LINUX_KERNEL_PACKAGING="yes" + + LINUX_LIBAFS_NAME="openafs" + +else + LINUX_LIBAFS_NAME="libafs" + +fi + # Check whether --enable-kernel-module was given. if test "${enable_kernel_module+set}" = set; then enableval=$enable_kernel_module; else enable_kernel_module="yes" - fi # Check whether --enable-redhat-buildsys was given. @@ -4805,39 +4911,22 @@ if test "${enable_redhat_buildsys+set}" = set; then enableval=$enable_redhat_buildsys; else enable_redhat_buildsys="no" - fi + # Check whether --enable-transarc-paths was given. if test "${enable_transarc_paths+set}" = set; then enableval=$enable_transarc_paths; else enable_transarc_paths="no" - -fi - -# Check whether --enable-tivoli-tsm was given. -if test "${enable_tivoli_tsm+set}" = set; then - enableval=$enable_tivoli_tsm; -else - enable_tivoli_tsm="no" - fi -# Check whether --enable-debug-kernel was given. -if test "${enable_debug_kernel+set}" = set; then - enableval=$enable_debug_kernel; -else - enable_debug_kernel="no" - -fi -# Check whether --enable-optimize-kernel was given. -if test "${enable_optimize_kernel+set}" = set; then - enableval=$enable_optimize_kernel; +# Check whether --enable-strip-binaries was given. +if test "${enable_strip_binaries+set}" = set; then + enableval=$enable_strip_binaries; else - enable_optimize_kernel="yes" - + enable_strip_binaries="maybe" fi # Check whether --enable-debug was given. @@ -4845,15 +4934,6 @@ if test "${enable_debug+set}" = set; then enableval=$enable_debug; else enable_debug="no" - -fi - -# Check whether --enable-strip-binaries was given. -if test "${enable_strip_binaries+set}" = set; then - enableval=$enable_strip_binaries; -else - enable_strip_binaries="maybe" - fi # Check whether --enable-optimize was given. @@ -4861,7 +4941,27 @@ if test "${enable_optimize+set}" = set; then enableval=$enable_optimize; else enable_optimize="yes" +fi + +# Check whether --enable-warnings was given. +if test "${enable_warnings+set}" = set; then + enableval=$enable_warnings; +else + enable_warnings="no" +fi +# Check whether --enable-debug-kernel was given. +if test "${enable_debug_kernel+set}" = set; then + enableval=$enable_debug_kernel; +else + enable_debug_kernel="no" +fi + +# Check whether --enable-optimize-kernel was given. +if test "${enable_optimize_kernel+set}" = set; then + enableval=$enable_optimize_kernel; +else + enable_optimize_kernel="yes" fi # Check whether --enable-debug-lwp was given. @@ -4869,7 +4969,6 @@ if test "${enable_debug_lwp+set}" = set; then enableval=$enable_debug_lwp; else enable_debug_lwp="no" - fi # Check whether --enable-optimize-lwp was given. @@ -4877,18 +4976,24 @@ if test "${enable_optimize_lwp+set}" = set; then enableval=$enable_optimize_lwp; else enable_optimize_lwp="yes" - fi -# Check whether --enable-warnings was given. -if test "${enable_warnings+set}" = set; then - enableval=$enable_warnings; +# Check whether --enable-debug-pam was given. +if test "${enable_debug_pam+set}" = set; then + enableval=$enable_debug_pam; else - enable_warnings="no" + enable_debug_pam="no" +fi +# Check whether --enable-optimize-pam was given. +if test "${enable_optimize_pam+set}" = set; then + enableval=$enable_optimize_pam; +else + enable_optimize_pam="yes" fi + enable_login="no" @@ -5751,6 +5856,7 @@ if test "${enable_littleendian+set}" = set; then enableval=$enable_littleendian; openafs_cv_c_bigendian=no fi + { echo "$as_me:$LINENO: checking whether byte order is known at compile time" >&5 echo $ECHO_N "checking whether byte order is known at compile time... $ECHO_C" >&6; } if test "${openafs_cv_c_bigendian_compile+set}" = set; then @@ -6387,6 +6493,12 @@ echo $ECHO_N "checking your AFS sysname... $ECHO_C" >&6; } vm=${v#*.} AFS_SYSNAME="i386_obsd${vM}${vm}" ;; + sparc64-*-openbsd?.?) + v=${host#*openbsd} + vM=${v%.*} + vm=${v#*.} + AFS_SYSNAME="sparc64_obsd${vM}${vm}" + ;; i?86-*-freebsd?.*) v=${host#*freebsd} vM=${v%.*} @@ -6543,7 +6655,7 @@ echo $ECHO_N "checking your AFS sysname... $ECHO_C" >&6; } powerpc-apple-darwin7.5*) AFS_SYSNAME="ppc_darwin_70" ;; - powerpc-apple-darwin8*) + powerpc-apple-darwin8.0*) AFS_SYSNAME="ppc_darwin_80" ;; powerpc-apple-darwin8.*) @@ -7411,9 +7523,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } - { echo "$as_me:$LINENO: checking for current_kernel_time()" >&5 -echo $ECHO_N "checking for current_kernel_time()... $ECHO_C" >&6; } - if test "${ac_cv_linux_have_current_kernel_time+set}" = set; then + { echo "$as_me:$LINENO: checking if find_task_by_pid is usable" >&5 +echo $ECHO_N "checking if find_task_by_pid is usable... $ECHO_C" >&6; } + if test "${ac_cv_linux_exports_find_task_by_pid+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7436,11 +7548,12 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -struct timespec s = current_kernel_time(); +pid_t p; +find_task_by_pid(p); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7448,14 +7561,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_have_current_kernel_time=yes + then ac_cv_linux_exports_find_task_by_pid=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_have_current_kernel_time=no + ac_cv_linux_exports_find_task_by_pid=no fi; rm -fr conftest.err conftest.dir else @@ -7469,11 +7582,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -struct timespec s = current_kernel_time(); +pid_t p; +find_task_by_pid(p); ; return 0; } @@ -7512,12 +7626,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_have_current_kernel_time=yes + ac_cv_linux_exports_find_task_by_pid=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_have_current_kernel_time=no + ac_cv_linux_exports_find_task_by_pid=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7525,12 +7639,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_have_current_kernel_time" >&5 -echo "${ECHO_T}$ac_cv_linux_have_current_kernel_time" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_find_task_by_pid" >&5 +echo "${ECHO_T}$ac_cv_linux_exports_find_task_by_pid" >&6; } + if test "x$ac_cv_linux_exports_find_task_by_pid" = "xyes"; then - { echo "$as_me:$LINENO: checking for new kmem_cache init function parameters" >&5 -echo $ECHO_N "checking for new kmem_cache init function parameters... $ECHO_C" >&6; } - if test "${ac_cv_linux_kmem_cache_init+set}" = set; then +cat >>confdefs.h <<\_ACEOF +#define EXPORTED_FIND_TASK_BY_PID 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking if proc_root_fs is defined and exported" >&5 +echo $ECHO_N "checking if proc_root_fs is defined and exported... $ECHO_C" >&6; } + if test "${ac_cv_linux_exports_proc_root_fs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7553,14 +7674,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, - unsigned long, - void (*)(struct kmem_cache *, void *)); -return; +struct proc_dir_entry *p = proc_root_fs; } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7568,14 +7686,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kmem_cache_init=yes + then ac_cv_linux_exports_proc_root_fs=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kmem_cache_init=no + ac_cv_linux_exports_proc_root_fs=no fi; rm -fr conftest.err conftest.dir else @@ -7589,14 +7707,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, - unsigned long, - void (*)(struct kmem_cache *, void *)); -return; +struct proc_dir_entry *p = proc_root_fs; ; return 0; } @@ -7635,12 +7750,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kmem_cache_init=yes + ac_cv_linux_exports_proc_root_fs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kmem_cache_init=no + ac_cv_linux_exports_proc_root_fs=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7648,12 +7763,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_init" >&5 -echo "${ECHO_T}$ac_cv_linux_kmem_cache_init" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_proc_root_fs" >&5 +echo "${ECHO_T}$ac_cv_linux_exports_proc_root_fs" >&6; } + if test "x$ac_cv_linux_exports_proc_root_fs" = "xyes"; then - { echo "$as_me:$LINENO: checking whether kmem_cache_t exists" >&5 -echo $ECHO_N "checking whether kmem_cache_t exists... $ECHO_C" >&6; } - if test "${ac_cv_linux_have_kmem_cache_t+set}" = set; then +cat >>confdefs.h <<\_ACEOF +#define EXPORTED_PROC_ROOT_FS 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking for current_kernel_time()" >&5 +echo $ECHO_N "checking for current_kernel_time()... $ECHO_C" >&6; } + if test "${ac_cv_linux_have_current_kernel_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7676,11 +7798,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -kmem_cache_t *k; +struct timespec s = current_kernel_time(); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7688,14 +7810,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_have_kmem_cache_t=yes + then ac_cv_linux_have_current_kernel_time=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_have_kmem_cache_t=no + ac_cv_linux_have_current_kernel_time=no fi; rm -fr conftest.err conftest.dir else @@ -7709,11 +7831,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -kmem_cache_t *k; +struct timespec s = current_kernel_time(); ; return 0; } @@ -7752,12 +7874,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_have_kmem_cache_t=yes + ac_cv_linux_have_current_kernel_time=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_have_kmem_cache_t=no + ac_cv_linux_have_current_kernel_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7765,12 +7887,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_have_kmem_cache_t" >&5 -echo "${ECHO_T}$ac_cv_linux_have_kmem_cache_t" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_have_current_kernel_time" >&5 +echo "${ECHO_T}$ac_cv_linux_have_current_kernel_time" >&6; } - { echo "$as_me:$LINENO: checking whether kmem_cache_create takes a destructor argument" >&5 -echo $ECHO_N "checking whether kmem_cache_create takes a destructor argument... $ECHO_C" >&6; } - if test "${ac_cv_linux_kmem_cache_create_takes_dtor+set}" = set; then + { echo "$as_me:$LINENO: checking for new kmem_cache init function parameters" >&5 +echo $ECHO_N "checking for new kmem_cache init function parameters... $ECHO_C" >&6; } + if test "${ac_cv_linux_kmem_cache_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7797,7 +7919,10 @@ _ACEOF void conftest(void) { -kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); +extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, + unsigned long, + void (*)(struct kmem_cache *, void *)); +return; } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7805,14 +7930,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kmem_cache_create_takes_dtor=yes + then ac_cv_linux_kmem_cache_init=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kmem_cache_create_takes_dtor=no + ac_cv_linux_kmem_cache_init=no fi; rm -fr conftest.err conftest.dir else @@ -7830,7 +7955,10 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); +extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, + unsigned long, + void (*)(struct kmem_cache *, void *)); +return; ; return 0; } @@ -7869,12 +7997,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kmem_cache_create_takes_dtor=yes + ac_cv_linux_kmem_cache_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kmem_cache_create_takes_dtor=no + ac_cv_linux_kmem_cache_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7882,12 +8010,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_create_takes_dtor" >&5 -echo "${ECHO_T}$ac_cv_linux_kmem_cache_create_takes_dtor" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_init" >&5 +echo "${ECHO_T}$ac_cv_linux_kmem_cache_init" >&6; } - { echo "$as_me:$LINENO: checking for linux/config.h existance" >&5 -echo $ECHO_N "checking for linux/config.h existance... $ECHO_C" >&6; } - if test "${ac_cv_linux_config_h_exists+set}" = set; then + { echo "$as_me:$LINENO: checking whether kmem_cache_t exists" >&5 +echo $ECHO_N "checking whether kmem_cache_t exists... $ECHO_C" >&6; } + if test "${ac_cv_linux_have_kmem_cache_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7910,11 +8038,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -return; +kmem_cache_t *k; } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7922,14 +8050,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_config_h_exists=yes + then ac_cv_linux_have_kmem_cache_t=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_config_h_exists=no + ac_cv_linux_have_kmem_cache_t=no fi; rm -fr conftest.err conftest.dir else @@ -7943,11 +8071,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -return; +kmem_cache_t *k; ; return 0; } @@ -7986,12 +8114,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_config_h_exists=yes + ac_cv_linux_have_kmem_cache_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_config_h_exists=no + ac_cv_linux_have_kmem_cache_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7999,11 +8127,497 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_config_h_exists" >&5 -echo "${ECHO_T}$ac_cv_linux_config_h_exists" >&6; } - if test "x$ac_cv_linux_config_h_exists" = "xyes"; then + { echo "$as_me:$LINENO: result: $ac_cv_linux_have_kmem_cache_t" >&5 +echo "${ECHO_T}$ac_cv_linux_have_kmem_cache_t" >&6; } -cat >>confdefs.h <<\_ACEOF + { echo "$as_me:$LINENO: checking whether kmem_cache_create takes a destructor argument" >&5 +echo $ECHO_N "checking whether kmem_cache_create takes a destructor argument... $ECHO_C" >&6; } + if test "${ac_cv_linux_kmem_cache_create_takes_dtor+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_kmem_cache_create_takes_dtor=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_kmem_cache_create_takes_dtor=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_kmem_cache_create_takes_dtor=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_kmem_cache_create_takes_dtor=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_create_takes_dtor" >&5 +echo "${ECHO_T}$ac_cv_linux_kmem_cache_create_takes_dtor" >&6; } + + { echo "$as_me:$LINENO: checking if d_path() takes a struct path argument" >&5 +echo $ECHO_N "checking if d_path() takes a struct path argument... $ECHO_C" >&6; } + if test "${ac_cv_linux_d_path_takes_struct_path+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +struct path *p; +d_path(p, NULL, 0); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_d_path_takes_struct_path=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_d_path_takes_struct_path=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +struct path *p; +d_path(p, NULL, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_d_path_takes_struct_path=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_d_path_takes_struct_path=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_d_path_takes_struct_path" >&5 +echo "${ECHO_T}$ac_cv_linux_d_path_takes_struct_path" >&6; } + if test "x$ac_cv_linux_d_path_takes_struct_path" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define D_PATH_TAKES_STRUCT_PATH 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking if kernel uses new export ops" >&5 +echo $ECHO_N "checking if kernel uses new export ops... $ECHO_C" >&6; } + if test "${ac_cv_linux_new_export_ops+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +struct export_operations _eops; +_eops.fh_to_parent(NULL, NULL, 0, 0); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_new_export_ops=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_new_export_ops=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +struct export_operations _eops; +_eops.fh_to_parent(NULL, NULL, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_new_export_ops=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_new_export_ops=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_new_export_ops" >&5 +echo "${ECHO_T}$ac_cv_linux_new_export_ops" >&6; } + if test "x$ac_cv_linux_new_export_ops" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define NEW_EXPORT_OPS 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking for linux/config.h existance" >&5 +echo $ECHO_N "checking for linux/config.h existance... $ECHO_C" >&6; } + if test "${ac_cv_linux_config_h_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +return; +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_config_h_exists=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_config_h_exists=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +return; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_config_h_exists=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_config_h_exists=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_config_h_exists" >&5 +echo "${ECHO_T}$ac_cv_linux_config_h_exists" >&6; } + if test "x$ac_cv_linux_config_h_exists" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF #define CONFIG_H_EXISTS 1 _ACEOF @@ -8134,6 +8748,123 @@ fi { echo "$as_me:$LINENO: result: $ac_cv_linux_completion_h_exists" >&5 echo "${ECHO_T}$ac_cv_linux_completion_h_exists" >&6; } + { echo "$as_me:$LINENO: checking for linux/exportfs.h existence" >&5 +echo $ECHO_N "checking for linux/exportfs.h existence... $ECHO_C" >&6; } + if test "${ac_cv_linux_exportfs_h_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +return; +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_exportfs_h_exists=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_exportfs_h_exists=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +return; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_exportfs_h_exists=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_exportfs_h_exists=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_exportfs_h_exists" >&5 +echo "${ECHO_T}$ac_cv_linux_exportfs_h_exists" >&6; } + { echo "$as_me:$LINENO: checking for defined for_each_process" >&5 echo $ECHO_N "checking for defined for_each_process... $ECHO_C" >&6; } if test "${ac_cv_linux_defines_for_each_process+set}" = set; then @@ -11861,16 +12592,135 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_is_selinux" >&5 -echo "${ECHO_T}$ac_cv_linux_kernel_is_selinux" >&6; } -CPPFLAGS="$save_CPPFLAGS" +{ echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_is_selinux" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_is_selinux" >&6; } +CPPFLAGS="$save_CPPFLAGS" + + { echo "$as_me:$LINENO: checking for 5th argument in sock_create found in some SELinux kernels" >&5 +echo $ECHO_N "checking for 5th argument in sock_create found in some SELinux kernels... $ECHO_C" >&6; } + if test "${ac_cv_linux_kernel_sock_create_v+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +sock_create(0,0,0,0,0); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_kernel_sock_create_v=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_kernel_sock_create_v=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +sock_create(0,0,0,0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_kernel_sock_create_v=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_kernel_sock_create_v=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_sock_create_v" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_sock_create_v" >&6; } - { echo "$as_me:$LINENO: checking for 5th argument in sock_create found in some SELinux kernels" >&5 -echo $ECHO_N "checking for 5th argument in sock_create found in some SELinux kernels... $ECHO_C" >&6; } - if test "${ac_cv_linux_kernel_sock_create_v+set}" = set; then + { echo "$as_me:$LINENO: checking for page_follow_link_light vs page_follow_link" >&5 +echo $ECHO_N "checking for page_follow_link_light vs page_follow_link... $ECHO_C" >&6; } + if test "${ac_cv_linux_kernel_page_follow_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration" if test $AFS_SYSKVERS -ge 26 ; then rm -fr conftest.dir @@ -11890,11 +12740,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -sock_create(0,0,0,0,0); +page_follow_link(0,0); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -11902,14 +12752,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kernel_sock_create_v=yes + then ac_cv_linux_kernel_page_follow_link=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kernel_sock_create_v=no + ac_cv_linux_kernel_page_follow_link=no fi; rm -fr conftest.err conftest.dir else @@ -11923,11 +12773,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -sock_create(0,0,0,0,0); +page_follow_link(0,0); ; return 0; } @@ -11966,25 +12816,26 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kernel_sock_create_v=yes + ac_cv_linux_kernel_page_follow_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kernel_sock_create_v=no + ac_cv_linux_kernel_page_follow_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS="$ac_save_CPPFLAGS" fi + CPPFLAGS="$save_CPPFLAGS" fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_sock_create_v" >&5 -echo "${ECHO_T}$ac_cv_linux_kernel_sock_create_v" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_page_follow_link" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_page_follow_link" >&6; } - { echo "$as_me:$LINENO: checking for page_follow_link_light vs page_follow_link" >&5 -echo $ECHO_N "checking for page_follow_link_light vs page_follow_link... $ECHO_C" >&6; } - if test "${ac_cv_linux_kernel_page_follow_link+set}" = set; then + { echo "$as_me:$LINENO: checking for hlist_unhashed" >&5 +echo $ECHO_N "checking for hlist_unhashed... $ECHO_C" >&6; } + if test "${ac_cv_linux_kernel_hlist_unhashed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -12009,11 +12860,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -page_follow_link(0,0); +hlist_unhashed(0); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -12021,14 +12872,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kernel_page_follow_link=yes + then ac_cv_linux_kernel_hlist_unhashed=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kernel_page_follow_link=no + ac_cv_linux_kernel_hlist_unhashed=no fi; rm -fr conftest.err conftest.dir else @@ -12042,11 +12893,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -page_follow_link(0,0); +hlist_unhashed(0); ; return 0; } @@ -12085,12 +12936,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kernel_page_follow_link=yes + ac_cv_linux_kernel_hlist_unhashed=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kernel_page_follow_link=no + ac_cv_linux_kernel_hlist_unhashed=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -12099,8 +12950,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_page_follow_link" >&5 -echo "${ECHO_T}$ac_cv_linux_kernel_page_follow_link" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_hlist_unhashed" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_hlist_unhashed" >&6; } { echo "$as_me:$LINENO: checking for linux/key-type.h existance" >&5 echo $ECHO_N "checking for linux/key-type.h existance... $ECHO_C" >&6; } @@ -14168,6 +15019,123 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi + + { echo "$as_me:$LINENO: checking whether svc_addr_in exists" >&5 +echo $ECHO_N "checking whether svc_addr_in exists... $ECHO_C" >&6; } + if test "${ac_cv_linux_have_svc_addr_in+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +svc_addr_in(NULL); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_have_svc_addr_in=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_have_svc_addr_in=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +svc_addr_in(NULL); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_have_svc_addr_in=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_have_svc_addr_in=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_have_svc_addr_in" >&5 +echo "${ECHO_T}$ac_cv_linux_have_svc_addr_in" >&6; } if test "x$ac_cv_linux_freezer_h_exists" = "xyes" ; then cat >>confdefs.h <<\_ACEOF @@ -16151,6 +17119,7 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi + if test "x$with_linux_kernel_packaging" = "xno" ; then if test "x$enable_redhat_buildsys" = "xyes"; then MPS=Default @@ -16301,6 +17270,10 @@ echo "${ECHO_T}$MPS" >&6; } fi + else + MPS='SP' + + fi if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then { echo "$as_me:$LINENO: WARNING: Cannot determine sys_call_table status. assuming it isn't exported" >&5 echo "$as_me: WARNING: Cannot determine sys_call_table status. assuming it isn't exported" >&2;} @@ -16895,6 +17868,13 @@ _ACEOF cat >>confdefs.h <<\_ACEOF #define CONFIG_H_EXISTS 1 +_ACEOF + + fi + if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define EXPORTFS_H_EXISTS 1 _ACEOF fi @@ -17056,6 +18036,13 @@ _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_PAGE_FOLLOW_LINK 1 +_ACEOF + + fi + if test "x$ac_cv_linux_kernel_hlist_unhashed" = "xyes" ; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_KERNEL_HLIST_UNHASHED 1 _ACEOF fi @@ -17321,6 +18308,13 @@ _ACEOF { echo "$as_me:$LINENO: WARNING: your kernel does not have a usable symlink cache API" >&5 echo "$as_me: WARNING: your kernel does not have a usable symlink cache API" >&2;} fi + if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SVC_ADDR_IN 1 +_ACEOF + + fi : fi esac @@ -18384,8 +19378,91 @@ echo "${ECHO_T}yes" >&6; } fi +if test "${ac_cv_setsockopt_iprecverr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +{ echo "$as_me:$LINENO: checking for setsockopt(, SOL_IP, IP_RECVERR)" >&5 +echo $ECHO_N "checking for setsockopt(, SOL_IP, IP_RECVERR)... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +int +main () +{ +int on=1; +setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_setsockopt_iprecverr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_setsockopt_iprecverr=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_cv_setsockopt_iprecverr" >&5 +echo "${ECHO_T}$ac_cv_setsockopt_iprecverr" >&6; } +fi + +if test "$ac_cv_setsockopt_iprecverr" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ADAPT_PMTU_RECVERR 1 +_ACEOF + +fi + PTHREAD_LIBS=error -{ echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthread" >&5 +if test "x$MKAFS_OSTYPE" = OBSD; then + PTHREAD_LIBS="-pthread" +fi +if test "x$PTHREAD_LIBS" = xerror; then + { echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthread" >&5 echo $ECHO_N "checking for pthread_attr_init in -lpthread... $ECHO_C" >&6; } if test "${ac_cv_lib_pthread_pthread_attr_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -18466,6 +19543,7 @@ if test $ac_cv_lib_pthread_pthread_attr_init = yes; then PTHREAD_LIBS="-lpthread" fi +fi if test "x$PTHREAD_LIBS" = xerror; then { echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthreads" >&5 echo $ECHO_N "checking for pthread_attr_init in -lpthreads... $ECHO_C" >&6; } @@ -18830,6 +19908,8 @@ if test "$enable_obsolete" = "yes"; then WITH_OBSOLETE=YES fi +HOST_CPU="$host_cpu" + if test "x$with_bsd_kernel_headers" != "x"; then BSD_KERNEL_PATH="$with_bsd_kernel_headers" else @@ -18840,11 +19920,11 @@ if test "x$with_bsd_kernel_build" != "x"; then BSD_KERNEL_BUILD="$with_bsd_kernel_build" else case $AFS_SYSNAME in - i386_fbsd_4?) + *_fbsd_4?) BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC" ;; - i386_fbsd_5?) - BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/i386/compile/GENERIC" + *_fbsd_*) + BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC" ;; esac fi @@ -18853,23 +19933,43 @@ fi if test "$enable_supergroups" = "yes"; then cat >>confdefs.h <<\_ACEOF -#define SUPERGROUPS 1 +#define SUPERGROUPS 1 +_ACEOF + +fi + +if test "$enable_fast_restart" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define FAST_RESTART 1 +_ACEOF + +fi + +if test "$enable_bitmap_later" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define BITMAP_LATER 1 _ACEOF fi -if test "$enable_fast_restart" = "yes"; then +if test "$enable_demand_attach_fs" = "yes"; then cat >>confdefs.h <<\_ACEOF -#define FAST_RESTART 1 +#define DEMAND_ATTACH_ENABLE 1 _ACEOF + DEMAND_ATTACH="yes" +else + DEMAND_ATTACH="no" fi -if test "$enable_bitmap_later" = "yes"; then + +if test "$enable_disconnected" = "yes"; then cat >>confdefs.h <<\_ACEOF -#define BITMAP_LATER 1 +#define AFS_DISCON_ENV 1 _ACEOF fi @@ -18880,12 +19980,20 @@ cat >>confdefs.h <<\_ACEOF #define USE_UNIX_SOCKETS 1 _ACEOF - USE_UNIX_SOCKETS="yes" + USE_UNIX_SOCKETS="yes" else - USE_UNIX_SOCKETS="no" + USE_UNIX_SOCKETS="no" fi +if test "$enable_fast_restart" = "yes" && + test "$enable_demand_attach_fs" = "yes" ; then + { { echo "$as_me:$LINENO: error: The Demand Attach and Fast Restart extensions are mutually exclusive. Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless." >&5 +echo "$as_me: error: The Demand Attach and Fast Restart extensions are mutually exclusive. Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless." >&2;} + { (exit 1); exit 1; }; } + exit 1 +fi + if test "$enable_full_vos_listvol_switch" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -18894,6 +20002,16 @@ _ACEOF fi +if test "$enable_icmp_pmtu_discovery" = "yes"; then + if test "$ac_cv_setsockopt_iprecverr" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ADAPT_PMTU 1 +_ACEOF + + fi +fi + if test "$enable_bos_restricted_mode" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -18941,18 +20059,32 @@ XBSA_CFLAGS="" if test "$enable_tivoli_tsm" = "yes"; then XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen + XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample + XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample if test -r "$XBSADIR1/xbsa.h"; then XBSA_CFLAGS="-Dxbsa -I$XBSADIR1" + XBSA_XLIBS="" { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } elif test -r "$XBSADIR2/xbsa.h"; then XBSA_CFLAGS="-Dxbsa -I$XBSADIR2" + XBSA_XLIBS="" + { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 +echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } + elif test -r "$XBSADIR3/dsmapifp.h"; then + XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3" + XBSA_XLIBS="-ldl" + { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 +echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } + elif test -r "$XBSADIR4/dsmapifp.h"; then + XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4" + XBSA_XLIBS="-ldl" { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } else - { echo "$as_me:$LINENO: result: no, missing xbsa.h header file" >&5 -echo "${ECHO_T}no, missing xbsa.h header file" >&6; } + { echo "$as_me:$LINENO: result: no, missing xbsa.h and dsmapifp.h header files" >&5 +echo "${ECHO_T}no, missing xbsa.h and dsmapifp.h header files" >&6; } fi else { echo "$as_me:$LINENO: result: no" >&5 @@ -18960,6 +20092,7 @@ echo "${ECHO_T}no" >&6; } fi + { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then @@ -19531,7 +20664,8 @@ fi -for ac_header in stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h + +for ac_header in stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -20372,7 +21506,8 @@ done -for ac_header in security/pam_modules.h siad.h usersec.h ucontext.h regex.h + +for ac_header in security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -20536,6 +21671,81 @@ fi done +for ac_header in linux/errqueue.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then HAVE_PAM="yes" else @@ -22139,6 +23349,11 @@ if test "x$enable_kernel_module" = "xyes"; then ENABLE_KERNEL_MODULE=libafs fi +if test "x$enable_pthreaded_ubik" = "xyes"; then +ENABLE_PTHREADED_UBIK=yes +fi + + @@ -22159,21 +23374,25 @@ fi + +CFLAGS= XCFLAGS='${DBG} ${OPTMZ}' SHLIB_SUFFIX="so" CC="cc" CCOBJ="cc" MT_CC="cc" -XLIBS="${LIB_AFSDB}" +XLIBS="${LIB_AFSDB} ${XBSA_XLIBS}" KERN_DBG=-g KERN_OPTMZ=-O DBG=-g OPTMZ=-O LWP_DBG=-g -LWP_OPTMZ=-O NO_STRIP_BIN=-ns NO_STRIP_KRB=-ns +LWP_OPTMZ=-O +PAM_DBG=-g +PAM_OPTMZ= if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. @@ -22622,7 +23841,7 @@ case $AFS_SYSNAME in LEX="lex" CSTATIC="-non_shared" DBG="-g3" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -22633,7 +23852,7 @@ case $AFS_SYSNAME in LEX="flex -l" DBG="-g3" CSTATIC="-non_shared" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -22645,7 +23864,7 @@ case $AFS_SYSNAME in DBG="-g3" CSTATIC="-non_shared" LWP_OPTMZ="-O2" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -22655,13 +23874,14 @@ case $AFS_SYSNAME in alpha_linux_22) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22670,13 +23890,14 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22685,13 +23906,14 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22736,7 +23958,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="-O" MT_CC="/opt/ansic/bin/cc -Ae" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-L/opt/dce/lib -ldce" MV="/bin/mv" OPTMZ="-O" @@ -22765,7 +23987,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="-O" MT_CC="$CC" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" MV="/bin/mv" OPTMZ="-O" @@ -22782,7 +24004,6 @@ case $AFS_SYSNAME in XCFLAGS="${XCFLAGS0} +DA1.0" XLIBELFA="-lelf" #XLIBS="${LIB_AFSDB} -lnsl" - XLIBS="${LIB_AFSDB}" YACC="/opt/langtools/bin/yacc" SHLIB_LINKER="ld -b" ;; @@ -22797,7 +24018,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="" MT_CC="$CC" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" MV="/bin/mv" OPTMZ="-O" @@ -22814,32 +24035,33 @@ case $AFS_SYSNAME in XCFLAGS="${XCFLAGS0}" XLIBELFA="-lelf" #XLIBS="${LIB_AFSDB} -lnsl" - XLIBS="${LIB_AFSDB}" YACC="/opt/langtools/bin/yacc" SHLIB_LINKER="ld -b" ;; *fbsd_*) LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-pthread" - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="-lncurses" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="byacc" ;; *nbsd2*|*nbsd3*|*nbsd4*) LEX="flex -l" - MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -D_REENTRANT ' + MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ' MT_LIBS="-lpthread" # XXX -pthread soon - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.so" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="yacc" ;; @@ -22847,24 +24069,26 @@ case $AFS_SYSNAME in LEX="flex -l" MT_CFLAGS='${XCFLAGS}' MT_LIBS="" - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.so" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="bison -y" ;; ia64_linux24|ia64_linux26) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -G0" + XCFLAGS="-D_LARGEFILE64_SOURCE -G0" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22872,39 +24096,42 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; ppc64_linux24) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" - SHLIB_CFLAGS="-fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" + SHLIB_CFLAGS="-fPIC" TXLIBS="/usr/lib64/libncurses.so" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; ppc64_linux26) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_CFLAGS="-fPIC" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -fPIC" + XCFLAGS="-D_LARGEFILE64_SOURCE -fPIC" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22915,13 +24142,14 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22932,18 +24160,18 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22953,18 +24181,19 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22974,18 +24203,19 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22993,27 +24223,29 @@ case $AFS_SYSNAME in KRB5CFLAGS="-I/usr/include/kerberosV" KRB5LIBS="-lkrb5 -lcrypto" LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-pthread" - PAM_CFLAGS="-O2 -pipe -fpic" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fpic" SHLIB_CFLAGS="-fpic" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.a" - XCFLAGS="-O2" + XCFLAGS= YACC="yacc" ;; parisc_linux24) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23061,7 +24293,7 @@ case $AFS_SYSNAME in ppc_darwin_70) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' LWP_OPTMZ="-O2" @@ -23076,7 +24308,7 @@ case $AFS_SYSNAME in *_darwin_80) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' KERN_OPTMZ="-Os" @@ -23093,7 +24325,7 @@ case $AFS_SYSNAME in *_darwin_90) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' LD="cc" @@ -23111,13 +24343,14 @@ case $AFS_SYSNAME in ppc_linux*) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23127,7 +24360,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23143,7 +24376,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23158,7 +24391,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23173,7 +24406,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23190,13 +24423,15 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" + OPTMZ=-O + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23208,13 +24443,14 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23226,13 +24462,15 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x -Xlinker -Bsymbolic" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE -D__s390x__" + OPTMZ=-O + XCFLAGS="-D_LARGEFILE64_SOURCE -D__s390x__" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23242,7 +24480,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-64 -mips3" @@ -23257,7 +24495,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-D_BSD_COMPAT -64 -mips3" @@ -23271,7 +24509,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib32/libdwarf.a /usr/lib32/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-D_BSD_COMPAT -64 -mips3" @@ -23289,7 +24527,7 @@ case $AFS_SYSNAME in LD="/usr/bin/ld" LEX="lex" MT_CC="/usr/bin/cc" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-64 -mips3" @@ -23299,36 +24537,23 @@ case $AFS_SYSNAME in SHLIB_LINKER="${CC} -shared" ;; - sparc64_linux*) + sparc*_linux*) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" - XCFLAGS64="-O2 -D_LARGEFILE64_SOURCE -m64" + XCFLAGS="-D_LARGEFILE64_SOURCE" + XCFLAGS64="-D_LARGEFILE64_SOURCE -m64" XLDFLAGS64="-m64" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; - sparc_linux22) - KERN_OPTMZ=-O2 - LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' - MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" - SHLIB_CFLAGS="-fPIC" - SHLIB_LDFLAGS="-shared -Xlinker -x" - TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" - YACC="bison -y" - SHLIB_LINKER="${MT_CC} -shared" - ;; - sun4_413) CCXPG2="/usr/xpg2bin/cc" CC="gcc" @@ -23348,7 +24573,7 @@ case $AFS_SYSNAME in CCOBJ="/opt/SUNWspro/bin/cc" LEX="lex" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" SHLIB_CFLAGS="-KPIC" TXLIBS="-lcurses" @@ -23366,7 +24591,7 @@ case $AFS_SYSNAME in CCOBJ="/opt/SUNWspro/bin/cc" LEX="lex" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23388,7 +24613,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23410,7 +24635,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23432,7 +24657,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23454,14 +24679,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -xarch=v9' + XCFLAGS64='${XCFLAGS} -m64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23476,14 +24701,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -m64' + XCFLAGS64='${XCFLAGS} -xarch=v9' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23498,7 +24723,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23519,7 +24744,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23540,7 +24765,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23561,14 +24786,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -xarch=amd64' + XCFLAGS64='${XCFLAGS} -m64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23582,14 +24807,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -m64' + XCFLAGS64='${XCFLAGS} -xarch=amd64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23716,6 +24941,15 @@ echo "${ECHO_T}$ac_cv_irix_sys_systm_h_has_mem_funcs" >&6; } ;; esac + + +case $AFS_SYSNAME in + *linux*) + MT_CFLAGS="${MT_CFLAGS} -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" + ;; +esac + + if test "x$enable_debug_kernel" = "xno"; then KERN_DBG= fi @@ -23808,6 +25042,8 @@ fi + + @@ -23816,6 +25052,7 @@ if test "${with_krb5_conf+set}" = set; then withval=$with_krb5_conf; fi + if test X$with_krb5_conf != X; then conf_krb5=YES if test X$with_krb5_conf = Xyes; then @@ -24960,7 +26197,7 @@ else MAN_MAKEFILE= fi -ac_config_files="$ac_config_files Makefile ${MAN_MAKEFILE} src/afs/Makefile src/afsd/Makefile src/afsmonitor/Makefile src/afsweb/Makefile src/aklog/Makefile src/audit/Makefile src/auth/Makefile src/auth/test/Makefile src/bozo/Makefile src/bozo/test/Makefile src/bu_utils/Makefile src/bubasics/Makefile src/bucoord/Makefile src/budb/Makefile src/butc/Makefile src/butm/Makefile src/cmd/Makefile src/cmd/test/Makefile src/comerr/Makefile src/comerr/test/Makefile src/config/Makefile src/config/Makefile.config src/config/Makefile.version-NOCML src/dauth/Makefile src/des/Makefile src/des/test/Makefile src/des_stub/Makefile src/dir/Makefile src/dir/test/Makefile src/export/Makefile src/finale/Makefile src/fsint/Makefile src/fsprobe/Makefile src/gtx/Makefile src/JAVA/libjafs/Makefile src/kauth/Makefile src/kauth/test/Makefile src/libacl/Makefile src/libacl/test/Makefile src/libadmin/Makefile src/libadmin/adminutil/Makefile src/libadmin/bos/Makefile src/libadmin/cfg/Makefile src/libadmin/cfg/test/Makefile src/libadmin/client/Makefile src/libadmin/kas/Makefile src/libadmin/pts/Makefile src/libadmin/samples/Makefile src/libadmin/test/Makefile src/libadmin/vos/Makefile src/libafs/Makefile.common src/libafs/MakefileProto.${MKAFS_OSTYPE} ${DARWIN_PLIST} src/libafsauthent/Makefile src/libafsrpc/Makefile src/libuafs/Makefile.common src/libuafs/MakefileProto.${MKAFS_OSTYPE} src/log/Makefile src/log/test/Makefile src/login/Makefile src/lwp/Makefile src/lwp/test/Makefile src/mpp/Makefile src/null/Makefile src/package/Makefile src/packaging/MacOS/OpenAFS.Info.plist src/packaging/MacOS/OpenAFS.info src/packaging/MacOS/buildpkg.sh src/packaging/RedHat/openafs.spec src/pam/Makefile src/pinstall/Makefile src/pinstall/test/Makefile src/platform/Makefile src/platform/${MKAFS_OSTYPE}/Makefile src/procmgmt/Makefile src/procmgmt/test/Makefile src/ptserver/Makefile src/rx/Makefile src/rx/bulk.example/Makefile src/rx/bulktest/Makefile src/rx/multi.example/Makefile src/rx/simple.example/Makefile src/rx/test/Makefile src/rxdebug/Makefile src/rxgen/Makefile src/rxkad/Makefile src/rxkad/test/Makefile src/rxstat/Makefile src/scout/Makefile src/sgistuff/Makefile src/shlibafsauthent/Makefile src/shlibafsrpc/Makefile src/sia/Makefile src/sys/Makefile src/tbutc/Makefile src/tests/Makefile src/tests/run-tests src/tsm41/Makefile src/tviced/Makefile src/tvolser/Makefile src/ubik/Makefile src/update/Makefile src/usd/Makefile src/usd/test/Makefile src/uss/Makefile src/util/Makefile src/util/test/Makefile src/venus/Makefile src/venus/test/Makefile src/vfsck/Makefile src/viced/Makefile src/vlserver/Makefile src/vol/Makefile src/vol/test/Makefile src/volser/Makefile src/wsadmin.src/Makefile src/xstat/Makefile src/helper-splint.sh" +ac_config_files="$ac_config_files Makefile ${MAN_MAKEFILE} src/afs/Makefile src/afsd/Makefile src/afsmonitor/Makefile src/afsweb/Makefile src/aklog/Makefile src/audit/Makefile src/auth/Makefile src/auth/test/Makefile src/bozo/Makefile src/bozo/test/Makefile src/bu_utils/Makefile src/bubasics/Makefile src/bucoord/Makefile src/budb/Makefile src/tbudb/Makefile src/butc/Makefile src/butm/Makefile src/cmd/Makefile src/cmd/test/Makefile src/comerr/Makefile src/comerr/test/Makefile src/config/Makefile src/config/Makefile.config src/config/Makefile.version-NOCML src/dauth/Makefile src/des/Makefile src/des/test/Makefile src/des_stub/Makefile src/dir/Makefile src/dir/test/Makefile src/export/Makefile src/finale/Makefile src/fsint/Makefile src/fsprobe/Makefile src/gtx/Makefile src/JAVA/libjafs/Makefile src/kauth/Makefile src/kauth/test/Makefile src/libacl/Makefile src/libacl/test/Makefile src/libadmin/Makefile src/libadmin/adminutil/Makefile src/libadmin/bos/Makefile src/libadmin/cfg/Makefile src/libadmin/cfg/test/Makefile src/libadmin/client/Makefile src/libadmin/kas/Makefile src/libadmin/pts/Makefile src/libadmin/samples/Makefile src/libadmin/test/Makefile src/libadmin/vos/Makefile src/libafs/Makefile.common src/libafs/MakefileProto.${MKAFS_OSTYPE} ${DARWIN_PLIST} src/libafsauthent/Makefile src/libafsrpc/Makefile src/libuafs/Makefile.common src/libuafs/MakefileProto.${MKAFS_OSTYPE} src/log/Makefile src/log/test/Makefile src/login/Makefile src/lwp/Makefile src/lwp/test/Makefile src/mpp/Makefile src/null/Makefile src/package/Makefile src/packaging/Debian/rules src/packaging/MacOS/OpenAFS.Info.plist src/packaging/MacOS/OpenAFS.info src/packaging/MacOS/buildpkg.sh src/packaging/RedHat/openafs.spec src/pam/Makefile src/pinstall/Makefile src/pinstall/test/Makefile src/platform/Makefile src/platform/${MKAFS_OSTYPE}/Makefile src/procmgmt/Makefile src/procmgmt/test/Makefile src/ptserver/Makefile src/tptserver/Makefile src/rx/Makefile src/rx/bulk.example/Makefile src/rx/bulktest/Makefile src/rx/multi.example/Makefile src/rx/simple.example/Makefile src/rx/test/Makefile src/rxdebug/Makefile src/rxgen/Makefile src/rxkad/Makefile src/rxkad/test/Makefile src/rxstat/Makefile src/scout/Makefile src/sgistuff/Makefile src/shlibafsauthent/Makefile src/shlibafsrpc/Makefile src/sia/Makefile src/sys/Makefile src/tbutc/Makefile src/tests/Makefile src/tests/run-tests src/tsalvaged/Makefile src/tsm41/Makefile src/tviced/Makefile src/tvolser/Makefile src/ubik/Makefile src/tubik/Makefile src/update/Makefile src/usd/Makefile src/usd/test/Makefile src/uss/Makefile src/util/Makefile src/util/test/Makefile src/venus/Makefile src/venus/test/Makefile src/vfsck/Makefile src/viced/Makefile src/vlserver/Makefile src/tvlserver/Makefile src/vol/Makefile src/vol/test/Makefile src/volser/Makefile src/wsadmin.src/Makefile src/xstat/Makefile src/helper-splint.sh" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -25543,6 +26780,7 @@ do "src/bubasics/Makefile") CONFIG_FILES="$CONFIG_FILES src/bubasics/Makefile" ;; "src/bucoord/Makefile") CONFIG_FILES="$CONFIG_FILES src/bucoord/Makefile" ;; "src/budb/Makefile") CONFIG_FILES="$CONFIG_FILES src/budb/Makefile" ;; + "src/tbudb/Makefile") CONFIG_FILES="$CONFIG_FILES src/tbudb/Makefile" ;; "src/butc/Makefile") CONFIG_FILES="$CONFIG_FILES src/butc/Makefile" ;; "src/butm/Makefile") CONFIG_FILES="$CONFIG_FILES src/butm/Makefile" ;; "src/cmd/Makefile") CONFIG_FILES="$CONFIG_FILES src/cmd/Makefile" ;; @@ -25594,6 +26832,7 @@ do "src/mpp/Makefile") CONFIG_FILES="$CONFIG_FILES src/mpp/Makefile" ;; "src/null/Makefile") CONFIG_FILES="$CONFIG_FILES src/null/Makefile" ;; "src/package/Makefile") CONFIG_FILES="$CONFIG_FILES src/package/Makefile" ;; + "src/packaging/Debian/rules") CONFIG_FILES="$CONFIG_FILES src/packaging/Debian/rules" ;; "src/packaging/MacOS/OpenAFS.Info.plist") CONFIG_FILES="$CONFIG_FILES src/packaging/MacOS/OpenAFS.Info.plist" ;; "src/packaging/MacOS/OpenAFS.info") CONFIG_FILES="$CONFIG_FILES src/packaging/MacOS/OpenAFS.info" ;; "src/packaging/MacOS/buildpkg.sh") CONFIG_FILES="$CONFIG_FILES src/packaging/MacOS/buildpkg.sh" ;; @@ -25606,6 +26845,7 @@ do "src/procmgmt/Makefile") CONFIG_FILES="$CONFIG_FILES src/procmgmt/Makefile" ;; "src/procmgmt/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/procmgmt/test/Makefile" ;; "src/ptserver/Makefile") CONFIG_FILES="$CONFIG_FILES src/ptserver/Makefile" ;; + "src/tptserver/Makefile") CONFIG_FILES="$CONFIG_FILES src/tptserver/Makefile" ;; "src/rx/Makefile") CONFIG_FILES="$CONFIG_FILES src/rx/Makefile" ;; "src/rx/bulk.example/Makefile") CONFIG_FILES="$CONFIG_FILES src/rx/bulk.example/Makefile" ;; "src/rx/bulktest/Makefile") CONFIG_FILES="$CONFIG_FILES src/rx/bulktest/Makefile" ;; @@ -25626,10 +26866,12 @@ do "src/tbutc/Makefile") CONFIG_FILES="$CONFIG_FILES src/tbutc/Makefile" ;; "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;; "src/tests/run-tests") CONFIG_FILES="$CONFIG_FILES src/tests/run-tests" ;; + "src/tsalvaged/Makefile") CONFIG_FILES="$CONFIG_FILES src/tsalvaged/Makefile" ;; "src/tsm41/Makefile") CONFIG_FILES="$CONFIG_FILES src/tsm41/Makefile" ;; "src/tviced/Makefile") CONFIG_FILES="$CONFIG_FILES src/tviced/Makefile" ;; "src/tvolser/Makefile") CONFIG_FILES="$CONFIG_FILES src/tvolser/Makefile" ;; "src/ubik/Makefile") CONFIG_FILES="$CONFIG_FILES src/ubik/Makefile" ;; + "src/tubik/Makefile") CONFIG_FILES="$CONFIG_FILES src/tubik/Makefile" ;; "src/update/Makefile") CONFIG_FILES="$CONFIG_FILES src/update/Makefile" ;; "src/usd/Makefile") CONFIG_FILES="$CONFIG_FILES src/usd/Makefile" ;; "src/usd/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/usd/test/Makefile" ;; @@ -25641,6 +26883,7 @@ do "src/vfsck/Makefile") CONFIG_FILES="$CONFIG_FILES src/vfsck/Makefile" ;; "src/viced/Makefile") CONFIG_FILES="$CONFIG_FILES src/viced/Makefile" ;; "src/vlserver/Makefile") CONFIG_FILES="$CONFIG_FILES src/vlserver/Makefile" ;; + "src/tvlserver/Makefile") CONFIG_FILES="$CONFIG_FILES src/tvlserver/Makefile" ;; "src/vol/Makefile") CONFIG_FILES="$CONFIG_FILES src/vol/Makefile" ;; "src/vol/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/vol/test/Makefile" ;; "src/volser/Makefile") CONFIG_FILES="$CONFIG_FILES src/volser/Makefile" ;; @@ -25786,7 +27029,7 @@ AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim CCDEPMODE!$CCDEPMODE$ac_delim am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -CPP!$CPP$ac_delim +PATH_CPP!$PATH_CPP$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim @@ -25795,6 +27038,9 @@ host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim +LINUX_KERNEL_PACKAGING!$LINUX_KERNEL_PACKAGING$ac_delim +LINUX_LIBAFS_NAME!$LINUX_LIBAFS_NAME$ac_delim +CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim LN_S!$LN_S$ac_delim @@ -25803,9 +27049,6 @@ YACC!$YACC$ac_delim YFLAGS!$YFLAGS$ac_delim LEX!$LEX$ac_delim LEXLIB!$LEXLIB$ac_delim -LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim -HEADER_RT!$HEADER_RT$ac_delim -P5PLUS_KOPTS!$P5PLUS_KOPTS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then @@ -25847,13 +27090,18 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim +HEADER_RT!$HEADER_RT$ac_delim +P5PLUS_KOPTS!$P5PLUS_KOPTS$ac_delim LINUX_GCC_KOPTS!$LINUX_GCC_KOPTS$ac_delim RHCONFIG_SP!$RHCONFIG_SP$ac_delim RHCONFIG_MP!$RHCONFIG_MP$ac_delim MPS!$MPS$ac_delim PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim +DEMAND_ATTACH!$DEMAND_ATTACH$ac_delim USE_UNIX_SOCKETS!$USE_UNIX_SOCKETS$ac_delim XBSA_CFLAGS!$XBSA_CFLAGS$ac_delim +XBSA_XLIBS!$XBSA_XLIBS$ac_delim HAVE_PAM!$HAVE_PAM$ac_delim BUILD_LOGIN!$BUILD_LOGIN$ac_delim afsconfdir!$afsconfdir$ac_delim @@ -25870,8 +27118,10 @@ afsbosconfigdir!$afsbosconfigdir$ac_delim AFS_SYSNAME!$AFS_SYSNAME$ac_delim AFS_PARAM_COMMON!$AFS_PARAM_COMMON$ac_delim ENABLE_KERNEL_MODULE!$ENABLE_KERNEL_MODULE$ac_delim +ENABLE_PTHREADED_UBIK!$ENABLE_PTHREADED_UBIK$ac_delim LIB_AFSDB!$LIB_AFSDB$ac_delim LINUX_KERNEL_PATH!$LINUX_KERNEL_PATH$ac_delim +HOST_CPU!$HOST_CPU$ac_delim BSD_KERNEL_PATH!$BSD_KERNEL_PATH$ac_delim BSD_KERNEL_BUILD!$BSD_KERNEL_BUILD$ac_delim LINUX_VERSION!$LINUX_VERSION$ac_delim @@ -25919,6 +27169,8 @@ NO_STRIP_KRB!$NO_STRIP_KRB$ac_delim OPTMZ!$OPTMZ$ac_delim PAM_CFLAGS!$PAM_CFLAGS$ac_delim PAM_LIBS!$PAM_LIBS$ac_delim +PAM_DBG!$PAM_DBG$ac_delim +PAM_OPTMZ!$PAM_OPTMZ$ac_delim PINSTALL_LIBS!$PINSTALL_LIBS$ac_delim REGEX_OBJ!$REGEX_OBJ$ac_delim SHLIB_CFLAGS!$SHLIB_CFLAGS$ac_delim @@ -25935,6 +27187,47 @@ XLIBELFA!$XLIBELFA$ac_delim XLIBKVM!$XLIBKVM$ac_delim XLIBS!$XLIBS$ac_delim KRB5_CONFIG!$KRB5_CONFIG$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF BUILD_KRB5!$BUILD_KRB5$ac_delim KRB5CFLAGS!$KRB5CFLAGS$ac_delim KRB5LIBS!$KRB5LIBS$ac_delim @@ -25944,7 +27237,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 95; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -25962,7 +27255,7 @@ if test -n "$ac_eof"; then fi cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' @@ -26225,7 +27518,7 @@ s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && diff --git a/configure-libafs b/configure-libafs index 66972e31e..a99dab068 100755 --- a/configure-libafs +++ b/configure-libafs @@ -683,6 +683,8 @@ host host_cpu host_vendor host_os +LINUX_KERNEL_PACKAGING +LINUX_LIBAFS_NAME CPP GREP EGREP @@ -700,8 +702,10 @@ RHCONFIG_SP RHCONFIG_MP MPS PTHREAD_LIBS +DEMAND_ATTACH USE_UNIX_SOCKETS XBSA_CFLAGS +XBSA_XLIBS HAVE_PAM BUILD_LOGIN afsconfdir @@ -718,8 +722,10 @@ afsbosconfigdir AFS_SYSNAME AFS_PARAM_COMMON ENABLE_KERNEL_MODULE +ENABLE_PTHREADED_UBIK LIB_AFSDB LINUX_KERNEL_PATH +HOST_CPU BSD_KERNEL_PATH BSD_KERNEL_BUILD LINUX_VERSION @@ -767,6 +773,8 @@ NO_STRIP_KRB OPTMZ PAM_CFLAGS PAM_LIBS +PAM_DBG +PAM_OPTMZ PINSTALL_LIBS REGEX_OBJ SHLIB_CFLAGS @@ -1380,48 +1388,92 @@ Optional Features: --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors - --enable-obsolete enable obsolete portions of AFS (mpp and package) - --disable-afsdb disable AFSDB RR support - --disable-pam disable PAM support - --enable-bos-restricted-mode enable bosserver restricted mode which disables certain bosserver functionality - --enable-bos-new-config enable bosserver pickup of BosConfig.new on restarts - --disable-largefile-fileserver disable large file support in fileserver - --enable-namei-fileserver force compilation of namei fileserver in preference to inode fileserver - --enable-supergroups enable support for nested pts groups - --enable-fast-restart enable fast startup of file server without salvaging - --enable-bitmap-later enable fast startup of file server by not reading bitmap till needed - --enable-unix-sockets enable use of unix domain sockets for fssync - --disable-full-vos-listvol-switch disable vos full listvol switch for formatted output - --disable-kernel-module disable compilation of the kernel module (defaults to enabled) - --enable-redhat-buildsys enable compilation of the redhat build system kernel (defaults to disabled) - --enable-transarc-paths Use Transarc style paths like /usr/afs and /usr/vice - --enable-tivoli-tsm Enable use of the Tivoli TSM API libraries for butc support - --enable-debug-kernel enable compilation of the kernel module with debugging information (defaults to disabled) - --disable-optimize-kernel disable compilation of the kernel module with optimization (defaults based on platform) - --enable-debug enable compilation of the user space code with debugging information (defaults to disabled) - --disable-strip-binaries disable stripping of symbol information from binaries (defaults to enabled) - --disable-optimize disable optimization for compilation of the user space code (defaults to enabled) - --enable-debug-lwp enable compilation of the LWP code with debugging information (defaults to disabled) - --disable-optimize-lwp disable optimization for compilation of the LWP code (defaults to enabled) - --enable-warnings enable compilation warnings when building with gcc (defaults to disabled) - --enable-bigendian the target is big endian - --enable-littleendian the target is little endian + --disable-afsdb disable AFSDB DNS RR support + --enable-obsolete enable obsolete portions of AFS (mpp and package) + --disable-pam disable PAM support + --enable-bos-restricted-mode + enable bosserver restricted mode which disables + certain bosserver functionality + --enable-bos-new-config enable bosserver pickup of BosConfig.new on restarts + --disable-largefile-fileserver + disable large file support in fileserver + --enable-namei-fileserver + force compilation of namei fileserver in preference + to inode fileserver + --enable-supergroups enable support for nested pts groups + --enable-fast-restart enable fast startup of file server without salvaging + --enable-bitmap-later enable fast startup of file server by not reading + bitmap till needed + --enable-demand-attach-fs + enable Demand Attach Fileserver (please see + documentation) + --enable-disconnected enable disconnected support in cache manager + (experimental) + --enable-unix-sockets enable use of unix domain sockets for fssync + --disable-full-vos-listvol-switch + disable vos full listvol switch for formatted output + --enable-icmp-pmtu-discovery + enable path MTU discovery by decoding ICMP + unreachable replies + --enable-tivoli-tsm enable use of the Tivoli TSM API libraries for butc + support + --enable-pthreaded-ubik enable installation of pthreaded ubik applications + (defaults to disabled) + --disable-kernel-module disable compilation of the kernel module (defaults + to enabled) + --enable-redhat-buildsys + enable compilation of the redhat build system kernel + (defaults to disabled) + --enable-transarc-paths use Transarc style paths like /usr/afs and /usr/vice + --disable-strip-binaries + disable stripping of symbol information from + binaries (defaults to enabled) + --enable-debug enable compilation of the user space code with + debugging information (defaults to disabled) + --disable-optimize disable optimization for compilation of the user + space code (defaults to enabled) + --enable-warnings enable compilation warnings when building with gcc + (defaults to disabled) + --enable-debug-kernel enable compilation of the kernel module with + debugging information (defaults to disabled) + --disable-optimize-kernel + disable compilation of the kernel module with + optimization (defaults based on platform) + --enable-debug-lwp enable compilation of the LWP code with debugging + information (defaults to disabled) + --disable-optimize-lwp disable optimization for compilation of the LWP code + (defaults to enabled) + --enable-debug-pam enable compilation of the PAM code with debugging + information (defaults to disabled) + --disable-optimize-pam disable optimization for compilation of the PAM code + (defaults to enabled) + --enable-bigendian the target is big endian + --enable-littleendian the target is little endian Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-afs-sysname=sys use sys for the afs sysname - - --with-dux-kernel-headers=path use the kernel headers found at path(optional, defaults to first match in /usr/sys) - - --with-linux-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/linux-2.4, then /usr/src/linux) - - --with-bsd-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/sys) - - --with-bsd-kernel-build=path use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC) - ---with-krb5-conf=krb5-config-location Use a krb5-config script to configure Kerberos ---with-krb5 Support for Kerberos 5 (manual configuration) + --with-afs-sysname=sys use sys for the afs sysname + --with-dux-kernel-headers=path + use the kernel headers found at path (optional, + defaults to first match in /usr/sys) + --with-linux-kernel-headers=path + use the kernel headers found at path (optional, + defaults to /usr/src/linux-2.4, then /usr/src/linux) + --with-bsd-kernel-headers=path + use the kernel headers found at path (optional, + defaults to /usr/src/sys) + --with-bsd-kernel-build=path + use the kernel build found at path (optional, + defaults to KSRC/i386/compile/GENERIC) + --with-linux-kernel-packaging + use standard naming conventions to aid Linux kernel + build packaging (disables MPS, sets the kernel + module name to openafs.ko, and installs kernel + modules into the standard Linux location) + --with-krb5-conf=[krb5-config-location] + use a krb5-config script to configure Kerberos + --with-krb5 support for Kerberos 5 (manual configuration) Some influential environment variables: CC C compiler command @@ -2176,7 +2228,7 @@ fi # Define the identity of the package. PACKAGE=openafs-libafs - VERSION=1.4.7 + VERSION=1.5.50 cat >>confdefs.h <<_ACEOF @@ -2324,8 +2376,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers src/config/afsconfig.h" -MACOS_VERSION=1.4.7 -LINUX_PKGVER=1.4.7 +MACOS_VERSION=1.5.50 +LINUX_PKGVER=1.5.50 #LINUX_PKGREL=0.pre0 LINUX_PKGREL=1.1 @@ -4637,17 +4689,12 @@ SRCDIR_PARENT=`pwd` #BOZO_SAVE_CORES pam sia + # Check whether --with-afs-sysname was given. if test "${with_afs_sysname+set}" = set; then withval=$with_afs_sysname; fi -# Check whether --enable-obsolete was given. -if test "${enable_obsolete+set}" = set; then - enableval=$enable_obsolete; -else - enable_obsolete="no" -fi # Check whether --enable-afsdb was given. if test "${enable_afsdb+set}" = set; then @@ -4656,6 +4703,13 @@ else enable_afsdb="yes" fi +# Check whether --enable-obsolete was given. +if test "${enable_obsolete+set}" = set; then + enableval=$enable_obsolete; +else + enable_obsolete="no" +fi + # Check whether --enable-pam was given. if test "${enable_pam+set}" = set; then enableval=$enable_pam; @@ -4712,6 +4766,20 @@ else enable_bitmap_later="no" fi +# Check whether --enable-demand-attach-fs was given. +if test "${enable_demand_attach_fs+set}" = set; then + enableval=$enable_demand_attach_fs; +else + enable_demand_attach_fs="no" +fi + +# Check whether --enable-disconnected was given. +if test "${enable_disconnected+set}" = set; then + enableval=$enable_disconnected; +else + enable_disconnected="no" +fi + # Check whether --enable-unix-sockets was given. if test "${enable_unix_sockets+set}" = set; then enableval=$enable_unix_sockets; @@ -4726,6 +4794,28 @@ else enable_full_vos_listvol_switch="yes" fi +# Check whether --enable-icmp-pmtu-discovery was given. +if test "${enable_icmp_pmtu_discovery+set}" = set; then + enableval=$enable_icmp_pmtu_discovery; +else + enable_icmp_pmtu_discovery="no" +fi + +# Check whether --enable-tivoli-tsm was given. +if test "${enable_tivoli_tsm+set}" = set; then + enableval=$enable_tivoli_tsm; +else + enable_tivoli_tsm="no" +fi + +# Check whether --enable-pthreaded-ubik was given. +if test "${enable_pthreaded_ubik+set}" = set; then + enableval=$enable_pthreaded_ubik; +else + enable_pthreaded_ubik="no" +fi + + # Check whether --with-dux-kernel-headers was given. if test "${with_dux_kernel_headers+set}" = set; then @@ -4750,12 +4840,23 @@ if test "${with_bsd_kernel_build+set}" = set; then withval=$with_bsd_kernel_build; fi + +# Check whether --with-linux-kernel-packaging was given. +if test "${with_linux_kernel_packaging+set}" = set; then + withval=$with_linux_kernel_packaging; LINUX_KERNEL_PACKAGING="yes" + + LINUX_LIBAFS_NAME="openafs" + +else + LINUX_LIBAFS_NAME="libafs" + +fi + # Check whether --enable-kernel-module was given. if test "${enable_kernel_module+set}" = set; then enableval=$enable_kernel_module; else enable_kernel_module="yes" - fi # Check whether --enable-redhat-buildsys was given. @@ -4763,39 +4864,22 @@ if test "${enable_redhat_buildsys+set}" = set; then enableval=$enable_redhat_buildsys; else enable_redhat_buildsys="no" - fi + # Check whether --enable-transarc-paths was given. if test "${enable_transarc_paths+set}" = set; then enableval=$enable_transarc_paths; else enable_transarc_paths="no" - -fi - -# Check whether --enable-tivoli-tsm was given. -if test "${enable_tivoli_tsm+set}" = set; then - enableval=$enable_tivoli_tsm; -else - enable_tivoli_tsm="no" - fi -# Check whether --enable-debug-kernel was given. -if test "${enable_debug_kernel+set}" = set; then - enableval=$enable_debug_kernel; -else - enable_debug_kernel="no" - -fi -# Check whether --enable-optimize-kernel was given. -if test "${enable_optimize_kernel+set}" = set; then - enableval=$enable_optimize_kernel; +# Check whether --enable-strip-binaries was given. +if test "${enable_strip_binaries+set}" = set; then + enableval=$enable_strip_binaries; else - enable_optimize_kernel="yes" - + enable_strip_binaries="maybe" fi # Check whether --enable-debug was given. @@ -4803,15 +4887,6 @@ if test "${enable_debug+set}" = set; then enableval=$enable_debug; else enable_debug="no" - -fi - -# Check whether --enable-strip-binaries was given. -if test "${enable_strip_binaries+set}" = set; then - enableval=$enable_strip_binaries; -else - enable_strip_binaries="maybe" - fi # Check whether --enable-optimize was given. @@ -4819,7 +4894,27 @@ if test "${enable_optimize+set}" = set; then enableval=$enable_optimize; else enable_optimize="yes" +fi + +# Check whether --enable-warnings was given. +if test "${enable_warnings+set}" = set; then + enableval=$enable_warnings; +else + enable_warnings="no" +fi + +# Check whether --enable-debug-kernel was given. +if test "${enable_debug_kernel+set}" = set; then + enableval=$enable_debug_kernel; +else + enable_debug_kernel="no" +fi +# Check whether --enable-optimize-kernel was given. +if test "${enable_optimize_kernel+set}" = set; then + enableval=$enable_optimize_kernel; +else + enable_optimize_kernel="yes" fi # Check whether --enable-debug-lwp was given. @@ -4827,7 +4922,6 @@ if test "${enable_debug_lwp+set}" = set; then enableval=$enable_debug_lwp; else enable_debug_lwp="no" - fi # Check whether --enable-optimize-lwp was given. @@ -4835,18 +4929,24 @@ if test "${enable_optimize_lwp+set}" = set; then enableval=$enable_optimize_lwp; else enable_optimize_lwp="yes" - fi -# Check whether --enable-warnings was given. -if test "${enable_warnings+set}" = set; then - enableval=$enable_warnings; +# Check whether --enable-debug-pam was given. +if test "${enable_debug_pam+set}" = set; then + enableval=$enable_debug_pam; else - enable_warnings="no" + enable_debug_pam="no" +fi +# Check whether --enable-optimize-pam was given. +if test "${enable_optimize_pam+set}" = set; then + enableval=$enable_optimize_pam; +else + enable_optimize_pam="yes" fi + enable_login="no" @@ -5709,6 +5809,7 @@ if test "${enable_littleendian+set}" = set; then enableval=$enable_littleendian; openafs_cv_c_bigendian=no fi + { echo "$as_me:$LINENO: checking whether byte order is known at compile time" >&5 echo $ECHO_N "checking whether byte order is known at compile time... $ECHO_C" >&6; } if test "${openafs_cv_c_bigendian_compile+set}" = set; then @@ -6345,6 +6446,12 @@ echo $ECHO_N "checking your AFS sysname... $ECHO_C" >&6; } vm=${v#*.} AFS_SYSNAME="i386_obsd${vM}${vm}" ;; + sparc64-*-openbsd?.?) + v=${host#*openbsd} + vM=${v%.*} + vm=${v#*.} + AFS_SYSNAME="sparc64_obsd${vM}${vm}" + ;; i?86-*-freebsd?.*) v=${host#*freebsd} vM=${v%.*} @@ -6501,7 +6608,7 @@ echo $ECHO_N "checking your AFS sysname... $ECHO_C" >&6; } powerpc-apple-darwin7.5*) AFS_SYSNAME="ppc_darwin_70" ;; - powerpc-apple-darwin8*) + powerpc-apple-darwin8.0*) AFS_SYSNAME="ppc_darwin_80" ;; powerpc-apple-darwin8.*) @@ -7368,9 +7475,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } - { echo "$as_me:$LINENO: checking for current_kernel_time()" >&5 -echo $ECHO_N "checking for current_kernel_time()... $ECHO_C" >&6; } - if test "${ac_cv_linux_have_current_kernel_time+set}" = set; then + { echo "$as_me:$LINENO: checking if find_task_by_pid is usable" >&5 +echo $ECHO_N "checking if find_task_by_pid is usable... $ECHO_C" >&6; } + if test "${ac_cv_linux_exports_find_task_by_pid+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7393,11 +7500,12 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -struct timespec s = current_kernel_time(); +pid_t p; +find_task_by_pid(p); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7405,14 +7513,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_have_current_kernel_time=yes + then ac_cv_linux_exports_find_task_by_pid=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_have_current_kernel_time=no + ac_cv_linux_exports_find_task_by_pid=no fi; rm -fr conftest.err conftest.dir else @@ -7426,11 +7534,12 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -struct timespec s = current_kernel_time(); +pid_t p; +find_task_by_pid(p); ; return 0; } @@ -7469,12 +7578,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_have_current_kernel_time=yes + ac_cv_linux_exports_find_task_by_pid=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_have_current_kernel_time=no + ac_cv_linux_exports_find_task_by_pid=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7482,12 +7591,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_have_current_kernel_time" >&5 -echo "${ECHO_T}$ac_cv_linux_have_current_kernel_time" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_find_task_by_pid" >&5 +echo "${ECHO_T}$ac_cv_linux_exports_find_task_by_pid" >&6; } + if test "x$ac_cv_linux_exports_find_task_by_pid" = "xyes"; then - { echo "$as_me:$LINENO: checking for new kmem_cache init function parameters" >&5 -echo $ECHO_N "checking for new kmem_cache init function parameters... $ECHO_C" >&6; } - if test "${ac_cv_linux_kmem_cache_init+set}" = set; then +cat >>confdefs.h <<\_ACEOF +#define EXPORTED_FIND_TASK_BY_PID 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking if proc_root_fs is defined and exported" >&5 +echo $ECHO_N "checking if proc_root_fs is defined and exported... $ECHO_C" >&6; } + if test "${ac_cv_linux_exports_proc_root_fs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7510,14 +7626,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, - unsigned long, - void (*)(struct kmem_cache *, void *)); -return; +struct proc_dir_entry *p = proc_root_fs; } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7525,14 +7638,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kmem_cache_init=yes + then ac_cv_linux_exports_proc_root_fs=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kmem_cache_init=no + ac_cv_linux_exports_proc_root_fs=no fi; rm -fr conftest.err conftest.dir else @@ -7546,14 +7659,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, - unsigned long, - void (*)(struct kmem_cache *, void *)); -return; +struct proc_dir_entry *p = proc_root_fs; ; return 0; } @@ -7592,12 +7702,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kmem_cache_init=yes + ac_cv_linux_exports_proc_root_fs=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kmem_cache_init=no + ac_cv_linux_exports_proc_root_fs=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7605,12 +7715,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_init" >&5 -echo "${ECHO_T}$ac_cv_linux_kmem_cache_init" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_proc_root_fs" >&5 +echo "${ECHO_T}$ac_cv_linux_exports_proc_root_fs" >&6; } + if test "x$ac_cv_linux_exports_proc_root_fs" = "xyes"; then - { echo "$as_me:$LINENO: checking whether kmem_cache_t exists" >&5 -echo $ECHO_N "checking whether kmem_cache_t exists... $ECHO_C" >&6; } - if test "${ac_cv_linux_have_kmem_cache_t+set}" = set; then +cat >>confdefs.h <<\_ACEOF +#define EXPORTED_PROC_ROOT_FS 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking for current_kernel_time()" >&5 +echo $ECHO_N "checking for current_kernel_time()... $ECHO_C" >&6; } + if test "${ac_cv_linux_have_current_kernel_time+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7633,11 +7750,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -kmem_cache_t *k; +struct timespec s = current_kernel_time(); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7645,14 +7762,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_have_kmem_cache_t=yes + then ac_cv_linux_have_current_kernel_time=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_have_kmem_cache_t=no + ac_cv_linux_have_current_kernel_time=no fi; rm -fr conftest.err conftest.dir else @@ -7666,11 +7783,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -kmem_cache_t *k; +struct timespec s = current_kernel_time(); ; return 0; } @@ -7709,12 +7826,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_have_kmem_cache_t=yes + ac_cv_linux_have_current_kernel_time=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_have_kmem_cache_t=no + ac_cv_linux_have_current_kernel_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7722,12 +7839,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_have_kmem_cache_t" >&5 -echo "${ECHO_T}$ac_cv_linux_have_kmem_cache_t" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_have_current_kernel_time" >&5 +echo "${ECHO_T}$ac_cv_linux_have_current_kernel_time" >&6; } - { echo "$as_me:$LINENO: checking whether kmem_cache_create takes a destructor argument" >&5 -echo $ECHO_N "checking whether kmem_cache_create takes a destructor argument... $ECHO_C" >&6; } - if test "${ac_cv_linux_kmem_cache_create_takes_dtor+set}" = set; then + { echo "$as_me:$LINENO: checking for new kmem_cache init function parameters" >&5 +echo $ECHO_N "checking for new kmem_cache init function parameters... $ECHO_C" >&6; } + if test "${ac_cv_linux_kmem_cache_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7754,7 +7871,10 @@ _ACEOF void conftest(void) { -kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); +extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, + unsigned long, + void (*)(struct kmem_cache *, void *)); +return; } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7762,14 +7882,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kmem_cache_create_takes_dtor=yes + then ac_cv_linux_kmem_cache_init=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kmem_cache_create_takes_dtor=no + ac_cv_linux_kmem_cache_init=no fi; rm -fr conftest.err conftest.dir else @@ -7787,7 +7907,10 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); +extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, + unsigned long, + void (*)(struct kmem_cache *, void *)); +return; ; return 0; } @@ -7826,12 +7949,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kmem_cache_create_takes_dtor=yes + ac_cv_linux_kmem_cache_init=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kmem_cache_create_takes_dtor=no + ac_cv_linux_kmem_cache_init=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7839,12 +7962,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_create_takes_dtor" >&5 -echo "${ECHO_T}$ac_cv_linux_kmem_cache_create_takes_dtor" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_init" >&5 +echo "${ECHO_T}$ac_cv_linux_kmem_cache_init" >&6; } - { echo "$as_me:$LINENO: checking for linux/config.h existance" >&5 -echo $ECHO_N "checking for linux/config.h existance... $ECHO_C" >&6; } - if test "${ac_cv_linux_config_h_exists+set}" = set; then + { echo "$as_me:$LINENO: checking whether kmem_cache_t exists" >&5 +echo $ECHO_N "checking whether kmem_cache_t exists... $ECHO_C" >&6; } + if test "${ac_cv_linux_have_kmem_cache_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7867,11 +7990,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -return; +kmem_cache_t *k; } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -7879,14 +8002,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_config_h_exists=yes + then ac_cv_linux_have_kmem_cache_t=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_config_h_exists=no + ac_cv_linux_have_kmem_cache_t=no fi; rm -fr conftest.err conftest.dir else @@ -7900,11 +8023,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -return; +kmem_cache_t *k; ; return 0; } @@ -7943,12 +8066,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_config_h_exists=yes + ac_cv_linux_have_kmem_cache_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_config_h_exists=no + ac_cv_linux_have_kmem_cache_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7956,19 +8079,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_config_h_exists" >&5 -echo "${ECHO_T}$ac_cv_linux_config_h_exists" >&6; } - if test "x$ac_cv_linux_config_h_exists" = "xyes"; then - -cat >>confdefs.h <<\_ACEOF -#define CONFIG_H_EXISTS 1 -_ACEOF - - fi + { echo "$as_me:$LINENO: result: $ac_cv_linux_have_kmem_cache_t" >&5 +echo "${ECHO_T}$ac_cv_linux_have_kmem_cache_t" >&6; } - { echo "$as_me:$LINENO: checking for linux/completion.h existance" >&5 -echo $ECHO_N "checking for linux/completion.h existance... $ECHO_C" >&6; } - if test "${ac_cv_linux_completion_h_exists+set}" = set; then + { echo "$as_me:$LINENO: checking whether kmem_cache_create takes a destructor argument" >&5 +echo $ECHO_N "checking whether kmem_cache_create takes a destructor argument... $ECHO_C" >&6; } + if test "${ac_cv_linux_kmem_cache_create_takes_dtor+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7991,8 +8107,501 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include -#include +#include + +void conftest(void) +{ +kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_kmem_cache_create_takes_dtor=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_kmem_cache_create_takes_dtor=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +kmem_cache_create(NULL, 0, 0, 0, NULL, NULL); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_kmem_cache_create_takes_dtor=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_kmem_cache_create_takes_dtor=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_kmem_cache_create_takes_dtor" >&5 +echo "${ECHO_T}$ac_cv_linux_kmem_cache_create_takes_dtor" >&6; } + + { echo "$as_me:$LINENO: checking if d_path() takes a struct path argument" >&5 +echo $ECHO_N "checking if d_path() takes a struct path argument... $ECHO_C" >&6; } + if test "${ac_cv_linux_d_path_takes_struct_path+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +struct path *p; +d_path(p, NULL, 0); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_d_path_takes_struct_path=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_d_path_takes_struct_path=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +struct path *p; +d_path(p, NULL, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_d_path_takes_struct_path=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_d_path_takes_struct_path=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_d_path_takes_struct_path" >&5 +echo "${ECHO_T}$ac_cv_linux_d_path_takes_struct_path" >&6; } + if test "x$ac_cv_linux_d_path_takes_struct_path" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define D_PATH_TAKES_STRUCT_PATH 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking if kernel uses new export ops" >&5 +echo $ECHO_N "checking if kernel uses new export ops... $ECHO_C" >&6; } + if test "${ac_cv_linux_new_export_ops+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +struct export_operations _eops; +_eops.fh_to_parent(NULL, NULL, 0, 0); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_new_export_ops=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_new_export_ops=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +struct export_operations _eops; +_eops.fh_to_parent(NULL, NULL, 0, 0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_new_export_ops=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_new_export_ops=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_new_export_ops" >&5 +echo "${ECHO_T}$ac_cv_linux_new_export_ops" >&6; } + if test "x$ac_cv_linux_new_export_ops" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define NEW_EXPORT_OPS 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking for linux/config.h existance" >&5 +echo $ECHO_N "checking for linux/config.h existance... $ECHO_C" >&6; } + if test "${ac_cv_linux_config_h_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +return; +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_config_h_exists=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_config_h_exists=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +return; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_config_h_exists=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_config_h_exists=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_config_h_exists" >&5 +echo "${ECHO_T}$ac_cv_linux_config_h_exists" >&6; } + if test "x$ac_cv_linux_config_h_exists" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define CONFIG_H_EXISTS 1 +_ACEOF + + fi + + { echo "$as_me:$LINENO: checking for linux/completion.h existance" >&5 +echo $ECHO_N "checking for linux/completion.h existance... $ECHO_C" >&6; } + if test "${ac_cv_linux_completion_h_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include +#include void conftest(void) { @@ -8091,6 +8700,123 @@ fi { echo "$as_me:$LINENO: result: $ac_cv_linux_completion_h_exists" >&5 echo "${ECHO_T}$ac_cv_linux_completion_h_exists" >&6; } + { echo "$as_me:$LINENO: checking for linux/exportfs.h existence" >&5 +echo $ECHO_N "checking for linux/exportfs.h existence... $ECHO_C" >&6; } + if test "${ac_cv_linux_exportfs_h_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +return; +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_exportfs_h_exists=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_exportfs_h_exists=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +return; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_exportfs_h_exists=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_exportfs_h_exists=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_exportfs_h_exists" >&5 +echo "${ECHO_T}$ac_cv_linux_exportfs_h_exists" >&6; } + { echo "$as_me:$LINENO: checking for defined for_each_process" >&5 echo $ECHO_N "checking for defined for_each_process... $ECHO_C" >&6; } if test "${ac_cv_linux_defines_for_each_process+set}" = set; then @@ -11818,16 +12544,135 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_is_selinux" >&5 -echo "${ECHO_T}$ac_cv_linux_kernel_is_selinux" >&6; } -CPPFLAGS="$save_CPPFLAGS" +{ echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_is_selinux" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_is_selinux" >&6; } +CPPFLAGS="$save_CPPFLAGS" + + { echo "$as_me:$LINENO: checking for 5th argument in sock_create found in some SELinux kernels" >&5 +echo $ECHO_N "checking for 5th argument in sock_create found in some SELinux kernels... $ECHO_C" >&6; } + if test "${ac_cv_linux_kernel_sock_create_v+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +sock_create(0,0,0,0,0); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_kernel_sock_create_v=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_kernel_sock_create_v=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +sock_create(0,0,0,0,0); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_kernel_sock_create_v=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_kernel_sock_create_v=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_sock_create_v" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_sock_create_v" >&6; } - { echo "$as_me:$LINENO: checking for 5th argument in sock_create found in some SELinux kernels" >&5 -echo $ECHO_N "checking for 5th argument in sock_create found in some SELinux kernels... $ECHO_C" >&6; } - if test "${ac_cv_linux_kernel_sock_create_v+set}" = set; then + { echo "$as_me:$LINENO: checking for page_follow_link_light vs page_follow_link" >&5 +echo $ECHO_N "checking for page_follow_link_light vs page_follow_link... $ECHO_C" >&6; } + if test "${ac_cv_linux_kernel_page_follow_link+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration" if test $AFS_SYSKVERS -ge 26 ; then rm -fr conftest.dir @@ -11847,11 +12692,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -sock_create(0,0,0,0,0); +page_follow_link(0,0); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -11859,14 +12704,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kernel_sock_create_v=yes + then ac_cv_linux_kernel_page_follow_link=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kernel_sock_create_v=no + ac_cv_linux_kernel_page_follow_link=no fi; rm -fr conftest.err conftest.dir else @@ -11880,11 +12725,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -sock_create(0,0,0,0,0); +page_follow_link(0,0); ; return 0; } @@ -11923,25 +12768,26 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kernel_sock_create_v=yes + ac_cv_linux_kernel_page_follow_link=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kernel_sock_create_v=no + ac_cv_linux_kernel_page_follow_link=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS="$ac_save_CPPFLAGS" fi + CPPFLAGS="$save_CPPFLAGS" fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_sock_create_v" >&5 -echo "${ECHO_T}$ac_cv_linux_kernel_sock_create_v" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_page_follow_link" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_page_follow_link" >&6; } - { echo "$as_me:$LINENO: checking for page_follow_link_light vs page_follow_link" >&5 -echo $ECHO_N "checking for page_follow_link_light vs page_follow_link... $ECHO_C" >&6; } - if test "${ac_cv_linux_kernel_page_follow_link+set}" = set; then + { echo "$as_me:$LINENO: checking for hlist_unhashed" >&5 +echo $ECHO_N "checking for hlist_unhashed... $ECHO_C" >&6; } + if test "${ac_cv_linux_kernel_hlist_unhashed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11966,11 +12812,11 @@ _ACEOF cat >>conftest.dir/conftest.c <<\_ACEOF && /* end confdefs.h */ #include -#include +#include void conftest(void) { -page_follow_link(0,0); +hlist_unhashed(0); } MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); @@ -11978,14 +12824,14 @@ _ACEOF echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 - then ac_cv_linux_kernel_page_follow_link=yes + then ac_cv_linux_kernel_hlist_unhashed=yes else sed '/^ *+/d' conftest.err >&5 echo "$as_me: failed using Makefile:" >&5 sed 's/^/| /' conftest.dir/Makefile >&5 echo "$as_me: and program was:" >&5 sed 's/^/| /' conftest.dir/conftest.c >&5 - ac_cv_linux_kernel_page_follow_link=no + ac_cv_linux_kernel_hlist_unhashed=no fi; rm -fr conftest.err conftest.dir else @@ -11999,11 +12845,11 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include +#include int main () { -page_follow_link(0,0); +hlist_unhashed(0); ; return 0; } @@ -12042,12 +12888,12 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_cv_linux_kernel_page_follow_link=yes + ac_cv_linux_kernel_hlist_unhashed=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_linux_kernel_page_follow_link=no + ac_cv_linux_kernel_hlist_unhashed=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -12056,8 +12902,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS="$save_CPPFLAGS" fi - { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_page_follow_link" >&5 -echo "${ECHO_T}$ac_cv_linux_kernel_page_follow_link" >&6; } + { echo "$as_me:$LINENO: result: $ac_cv_linux_kernel_hlist_unhashed" >&5 +echo "${ECHO_T}$ac_cv_linux_kernel_hlist_unhashed" >&6; } { echo "$as_me:$LINENO: checking for linux/key-type.h existance" >&5 echo $ECHO_N "checking for linux/key-type.h existance... $ECHO_C" >&6; } @@ -14125,6 +14971,123 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi + + { echo "$as_me:$LINENO: checking whether svc_addr_in exists" >&5 +echo $ECHO_N "checking whether svc_addr_in exists... $ECHO_C" >&6; } + if test "${ac_cv_linux_have_svc_addr_in+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +svc_addr_in(NULL); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_have_svc_addr_in=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_have_svc_addr_in=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +svc_addr_in(NULL); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_have_svc_addr_in=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_have_svc_addr_in=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_have_svc_addr_in" >&5 +echo "${ECHO_T}$ac_cv_linux_have_svc_addr_in" >&6; } if test "x$ac_cv_linux_freezer_h_exists" = "xyes" ; then cat >>confdefs.h <<\_ACEOF @@ -16108,6 +17071,7 @@ cat >>confdefs.h <<\_ACEOF _ACEOF fi + if test "x$with_linux_kernel_packaging" = "xno" ; then if test "x$enable_redhat_buildsys" = "xyes"; then MPS=Default @@ -16258,6 +17222,10 @@ echo "${ECHO_T}$MPS" >&6; } fi + else + MPS='SP' + + fi if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then { echo "$as_me:$LINENO: WARNING: Cannot determine sys_call_table status. assuming it isn't exported" >&5 echo "$as_me: WARNING: Cannot determine sys_call_table status. assuming it isn't exported" >&2;} @@ -16852,6 +17820,13 @@ _ACEOF cat >>confdefs.h <<\_ACEOF #define CONFIG_H_EXISTS 1 +_ACEOF + + fi + if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define EXPORTFS_H_EXISTS 1 _ACEOF fi @@ -17013,6 +17988,13 @@ _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_PAGE_FOLLOW_LINK 1 +_ACEOF + + fi + if test "x$ac_cv_linux_kernel_hlist_unhashed" = "xyes" ; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_KERNEL_HLIST_UNHASHED 1 _ACEOF fi @@ -17278,6 +18260,13 @@ _ACEOF { echo "$as_me:$LINENO: WARNING: your kernel does not have a usable symlink cache API" >&5 echo "$as_me: WARNING: your kernel does not have a usable symlink cache API" >&2;} fi + if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_SVC_ADDR_IN 1 +_ACEOF + + fi : fi esac @@ -18341,8 +19330,91 @@ echo "${ECHO_T}yes" >&6; } fi +if test "${ac_cv_setsockopt_iprecverr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +{ echo "$as_me:$LINENO: checking for setsockopt(, SOL_IP, IP_RECVERR)" >&5 +echo $ECHO_N "checking for setsockopt(, SOL_IP, IP_RECVERR)... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +int +main () +{ +int on=1; +setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_setsockopt_iprecverr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_setsockopt_iprecverr=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_cv_setsockopt_iprecverr" >&5 +echo "${ECHO_T}$ac_cv_setsockopt_iprecverr" >&6; } +fi + +if test "$ac_cv_setsockopt_iprecverr" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ADAPT_PMTU_RECVERR 1 +_ACEOF + +fi + PTHREAD_LIBS=error -{ echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthread" >&5 +if test "x$MKAFS_OSTYPE" = OBSD; then + PTHREAD_LIBS="-pthread" +fi +if test "x$PTHREAD_LIBS" = xerror; then + { echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthread" >&5 echo $ECHO_N "checking for pthread_attr_init in -lpthread... $ECHO_C" >&6; } if test "${ac_cv_lib_pthread_pthread_attr_init+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -18423,6 +19495,7 @@ if test $ac_cv_lib_pthread_pthread_attr_init = yes; then PTHREAD_LIBS="-lpthread" fi +fi if test "x$PTHREAD_LIBS" = xerror; then { echo "$as_me:$LINENO: checking for pthread_attr_init in -lpthreads" >&5 echo $ECHO_N "checking for pthread_attr_init in -lpthreads... $ECHO_C" >&6; } @@ -18787,6 +19860,8 @@ if test "$enable_obsolete" = "yes"; then WITH_OBSOLETE=YES fi +HOST_CPU="$host_cpu" + if test "x$with_bsd_kernel_headers" != "x"; then BSD_KERNEL_PATH="$with_bsd_kernel_headers" else @@ -18797,36 +19872,56 @@ if test "x$with_bsd_kernel_build" != "x"; then BSD_KERNEL_BUILD="$with_bsd_kernel_build" else case $AFS_SYSNAME in - i386_fbsd_4?) + *_fbsd_4?) BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC" ;; - i386_fbsd_5?) - BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/i386/compile/GENERIC" + *_fbsd_*) + BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC" ;; esac fi -# Fast restart -if test "$enable_supergroups" = "yes"; then +# Fast restart +if test "$enable_supergroups" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define SUPERGROUPS 1 +_ACEOF + +fi + +if test "$enable_fast_restart" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define FAST_RESTART 1 +_ACEOF + +fi + +if test "$enable_bitmap_later" = "yes"; then cat >>confdefs.h <<\_ACEOF -#define SUPERGROUPS 1 +#define BITMAP_LATER 1 _ACEOF fi -if test "$enable_fast_restart" = "yes"; then +if test "$enable_demand_attach_fs" = "yes"; then cat >>confdefs.h <<\_ACEOF -#define FAST_RESTART 1 +#define DEMAND_ATTACH_ENABLE 1 _ACEOF + DEMAND_ATTACH="yes" +else + DEMAND_ATTACH="no" fi -if test "$enable_bitmap_later" = "yes"; then + +if test "$enable_disconnected" = "yes"; then cat >>confdefs.h <<\_ACEOF -#define BITMAP_LATER 1 +#define AFS_DISCON_ENV 1 _ACEOF fi @@ -18837,12 +19932,20 @@ cat >>confdefs.h <<\_ACEOF #define USE_UNIX_SOCKETS 1 _ACEOF - USE_UNIX_SOCKETS="yes" + USE_UNIX_SOCKETS="yes" else - USE_UNIX_SOCKETS="no" + USE_UNIX_SOCKETS="no" fi +if test "$enable_fast_restart" = "yes" && + test "$enable_demand_attach_fs" = "yes" ; then + { { echo "$as_me:$LINENO: error: The Demand Attach and Fast Restart extensions are mutually exclusive. Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless." >&5 +echo "$as_me: error: The Demand Attach and Fast Restart extensions are mutually exclusive. Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless." >&2;} + { (exit 1); exit 1; }; } + exit 1 +fi + if test "$enable_full_vos_listvol_switch" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -18851,6 +19954,16 @@ _ACEOF fi +if test "$enable_icmp_pmtu_discovery" = "yes"; then + if test "$ac_cv_setsockopt_iprecverr" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define ADAPT_PMTU 1 +_ACEOF + + fi +fi + if test "$enable_bos_restricted_mode" = "yes"; then cat >>confdefs.h <<\_ACEOF @@ -18898,18 +20011,32 @@ XBSA_CFLAGS="" if test "$enable_tivoli_tsm" = "yes"; then XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen + XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample + XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample if test -r "$XBSADIR1/xbsa.h"; then XBSA_CFLAGS="-Dxbsa -I$XBSADIR1" + XBSA_XLIBS="" { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } elif test -r "$XBSADIR2/xbsa.h"; then XBSA_CFLAGS="-Dxbsa -I$XBSADIR2" + XBSA_XLIBS="" + { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 +echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } + elif test -r "$XBSADIR3/dsmapifp.h"; then + XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3" + XBSA_XLIBS="-ldl" + { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 +echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } + elif test -r "$XBSADIR4/dsmapifp.h"; then + XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4" + XBSA_XLIBS="-ldl" { echo "$as_me:$LINENO: result: yes, $XBSA_CFLAGS" >&5 echo "${ECHO_T}yes, $XBSA_CFLAGS" >&6; } else - { echo "$as_me:$LINENO: result: no, missing xbsa.h header file" >&5 -echo "${ECHO_T}no, missing xbsa.h header file" >&6; } + { echo "$as_me:$LINENO: result: no, missing xbsa.h and dsmapifp.h header files" >&5 +echo "${ECHO_T}no, missing xbsa.h and dsmapifp.h header files" >&6; } fi else { echo "$as_me:$LINENO: result: no" >&5 @@ -18917,6 +20044,7 @@ echo "${ECHO_T}no" >&6; } fi + { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then @@ -19488,7 +20616,8 @@ fi -for ac_header in stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h + +for ac_header in stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -20329,7 +21458,8 @@ done -for ac_header in security/pam_modules.h siad.h usersec.h ucontext.h regex.h + +for ac_header in security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -20493,6 +21623,81 @@ fi done +for ac_header in linux/errqueue.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then HAVE_PAM="yes" else @@ -22096,6 +23301,11 @@ if test "x$enable_kernel_module" = "xyes"; then ENABLE_KERNEL_MODULE=libafs fi +if test "x$enable_pthreaded_ubik" = "xyes"; then +ENABLE_PTHREADED_UBIK=yes +fi + + @@ -22116,21 +23326,25 @@ fi + +CFLAGS= XCFLAGS='${DBG} ${OPTMZ}' SHLIB_SUFFIX="so" CC="cc" CCOBJ="cc" MT_CC="cc" -XLIBS="${LIB_AFSDB}" +XLIBS="${LIB_AFSDB} ${XBSA_XLIBS}" KERN_DBG=-g KERN_OPTMZ=-O DBG=-g OPTMZ=-O LWP_DBG=-g -LWP_OPTMZ=-O NO_STRIP_BIN=-ns NO_STRIP_KRB=-ns +LWP_OPTMZ=-O +PAM_DBG=-g +PAM_OPTMZ= if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. @@ -22579,7 +23793,7 @@ case $AFS_SYSNAME in LEX="lex" CSTATIC="-non_shared" DBG="-g3" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -22590,7 +23804,7 @@ case $AFS_SYSNAME in LEX="flex -l" DBG="-g3" CSTATIC="-non_shared" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -22602,7 +23816,7 @@ case $AFS_SYSNAME in DBG="-g3" CSTATIC="-non_shared" LWP_OPTMZ="-O2" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -22612,13 +23826,14 @@ case $AFS_SYSNAME in alpha_linux_22) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22627,13 +23842,14 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22642,13 +23858,14 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22693,7 +23910,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="-O" MT_CC="/opt/ansic/bin/cc -Ae" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-L/opt/dce/lib -ldce" MV="/bin/mv" OPTMZ="-O" @@ -22722,7 +23939,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="-O" MT_CC="$CC" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" MV="/bin/mv" OPTMZ="-O" @@ -22739,7 +23956,6 @@ case $AFS_SYSNAME in XCFLAGS="${XCFLAGS0} +DA1.0" XLIBELFA="-lelf" #XLIBS="${LIB_AFSDB} -lnsl" - XLIBS="${LIB_AFSDB}" YACC="/opt/langtools/bin/yacc" SHLIB_LINKER="ld -b" ;; @@ -22754,7 +23970,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="" MT_CC="$CC" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" MV="/bin/mv" OPTMZ="-O" @@ -22771,32 +23987,33 @@ case $AFS_SYSNAME in XCFLAGS="${XCFLAGS0}" XLIBELFA="-lelf" #XLIBS="${LIB_AFSDB} -lnsl" - XLIBS="${LIB_AFSDB}" YACC="/opt/langtools/bin/yacc" SHLIB_LINKER="ld -b" ;; *fbsd_*) LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-pthread" - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="-lncurses" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="byacc" ;; *nbsd2*|*nbsd3*|*nbsd4*) LEX="flex -l" - MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -D_REENTRANT ' + MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ' MT_LIBS="-lpthread" # XXX -pthread soon - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.so" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="yacc" ;; @@ -22804,24 +24021,26 @@ case $AFS_SYSNAME in LEX="flex -l" MT_CFLAGS='${XCFLAGS}' MT_LIBS="" - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.so" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="bison -y" ;; ia64_linux24|ia64_linux26) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -G0" + XCFLAGS="-D_LARGEFILE64_SOURCE -G0" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22829,39 +24048,42 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; ppc64_linux24) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" - SHLIB_CFLAGS="-fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" + SHLIB_CFLAGS="-fPIC" TXLIBS="/usr/lib64/libncurses.so" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; ppc64_linux26) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_CFLAGS="-fPIC" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -fPIC" + XCFLAGS="-D_LARGEFILE64_SOURCE -fPIC" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22872,13 +24094,14 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22889,18 +24112,18 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22910,18 +24133,19 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22931,18 +24155,19 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -22950,27 +24175,29 @@ case $AFS_SYSNAME in KRB5CFLAGS="-I/usr/include/kerberosV" KRB5LIBS="-lkrb5 -lcrypto" LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-pthread" - PAM_CFLAGS="-O2 -pipe -fpic" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fpic" SHLIB_CFLAGS="-fpic" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.a" - XCFLAGS="-O2" + XCFLAGS= YACC="yacc" ;; parisc_linux24) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23018,7 +24245,7 @@ case $AFS_SYSNAME in ppc_darwin_70) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' LWP_OPTMZ="-O2" @@ -23033,7 +24260,7 @@ case $AFS_SYSNAME in *_darwin_80) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' KERN_OPTMZ="-Os" @@ -23050,7 +24277,7 @@ case $AFS_SYSNAME in *_darwin_90) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' LD="cc" @@ -23068,13 +24295,14 @@ case $AFS_SYSNAME in ppc_linux*) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23084,7 +24312,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23100,7 +24328,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23115,7 +24343,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23130,7 +24358,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -23147,13 +24375,15 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" + OPTMZ=-O + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23165,13 +24395,14 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23183,13 +24414,15 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x -Xlinker -Bsymbolic" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE -D__s390x__" + OPTMZ=-O + XCFLAGS="-D_LARGEFILE64_SOURCE -D__s390x__" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -23199,7 +24432,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-64 -mips3" @@ -23214,7 +24447,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-D_BSD_COMPAT -64 -mips3" @@ -23228,7 +24461,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib32/libdwarf.a /usr/lib32/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-D_BSD_COMPAT -64 -mips3" @@ -23246,7 +24479,7 @@ case $AFS_SYSNAME in LD="/usr/bin/ld" LEX="lex" MT_CC="/usr/bin/cc" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-64 -mips3" @@ -23256,36 +24489,23 @@ case $AFS_SYSNAME in SHLIB_LINKER="${CC} -shared" ;; - sparc64_linux*) + sparc*_linux*) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" - XCFLAGS64="-O2 -D_LARGEFILE64_SOURCE -m64" + XCFLAGS="-D_LARGEFILE64_SOURCE" + XCFLAGS64="-D_LARGEFILE64_SOURCE -m64" XLDFLAGS64="-m64" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; - sparc_linux22) - KERN_OPTMZ=-O2 - LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' - MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" - SHLIB_CFLAGS="-fPIC" - SHLIB_LDFLAGS="-shared -Xlinker -x" - TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" - YACC="bison -y" - SHLIB_LINKER="${MT_CC} -shared" - ;; - sun4_413) CCXPG2="/usr/xpg2bin/cc" CC="gcc" @@ -23305,7 +24525,7 @@ case $AFS_SYSNAME in CCOBJ="/opt/SUNWspro/bin/cc" LEX="lex" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" SHLIB_CFLAGS="-KPIC" TXLIBS="-lcurses" @@ -23323,7 +24543,7 @@ case $AFS_SYSNAME in CCOBJ="/opt/SUNWspro/bin/cc" LEX="lex" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23345,7 +24565,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23367,7 +24587,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23389,7 +24609,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23411,14 +24631,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -xarch=v9' + XCFLAGS64='${XCFLAGS} -m64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23433,14 +24653,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -m64' + XCFLAGS64='${XCFLAGS} -xarch=v9' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23455,7 +24675,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23476,7 +24696,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23497,7 +24717,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -23518,14 +24738,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -xarch=amd64' + XCFLAGS64='${XCFLAGS} -m64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23539,14 +24759,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -m64' + XCFLAGS64='${XCFLAGS} -xarch=amd64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -23673,6 +24893,15 @@ echo "${ECHO_T}$ac_cv_irix_sys_systm_h_has_mem_funcs" >&6; } ;; esac + + +case $AFS_SYSNAME in + *linux*) + MT_CFLAGS="${MT_CFLAGS} -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" + ;; +esac + + if test "x$enable_debug_kernel" = "xno"; then KERN_DBG= fi @@ -23765,6 +24994,8 @@ fi + + @@ -23773,6 +25004,7 @@ if test "${with_krb5_conf+set}" = set; then withval=$with_krb5_conf; fi + if test X$with_krb5_conf != X; then conf_krb5=YES if test X$with_krb5_conf = Xyes; then @@ -25630,6 +26862,8 @@ host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim +LINUX_KERNEL_PACKAGING!$LINUX_KERNEL_PACKAGING$ac_delim +LINUX_LIBAFS_NAME!$LINUX_LIBAFS_NAME$ac_delim CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim @@ -25640,8 +26874,6 @@ YFLAGS!$YFLAGS$ac_delim LEX!$LEX$ac_delim LEXLIB!$LEXLIB$ac_delim LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim -HEADER_RT!$HEADER_RT$ac_delim -P5PLUS_KOPTS!$P5PLUS_KOPTS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then @@ -25683,13 +26915,17 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +HEADER_RT!$HEADER_RT$ac_delim +P5PLUS_KOPTS!$P5PLUS_KOPTS$ac_delim LINUX_GCC_KOPTS!$LINUX_GCC_KOPTS$ac_delim RHCONFIG_SP!$RHCONFIG_SP$ac_delim RHCONFIG_MP!$RHCONFIG_MP$ac_delim MPS!$MPS$ac_delim PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim +DEMAND_ATTACH!$DEMAND_ATTACH$ac_delim USE_UNIX_SOCKETS!$USE_UNIX_SOCKETS$ac_delim XBSA_CFLAGS!$XBSA_CFLAGS$ac_delim +XBSA_XLIBS!$XBSA_XLIBS$ac_delim HAVE_PAM!$HAVE_PAM$ac_delim BUILD_LOGIN!$BUILD_LOGIN$ac_delim afsconfdir!$afsconfdir$ac_delim @@ -25706,8 +26942,10 @@ afsbosconfigdir!$afsbosconfigdir$ac_delim AFS_SYSNAME!$AFS_SYSNAME$ac_delim AFS_PARAM_COMMON!$AFS_PARAM_COMMON$ac_delim ENABLE_KERNEL_MODULE!$ENABLE_KERNEL_MODULE$ac_delim +ENABLE_PTHREADED_UBIK!$ENABLE_PTHREADED_UBIK$ac_delim LIB_AFSDB!$LIB_AFSDB$ac_delim LINUX_KERNEL_PATH!$LINUX_KERNEL_PATH$ac_delim +HOST_CPU!$HOST_CPU$ac_delim BSD_KERNEL_PATH!$BSD_KERNEL_PATH$ac_delim BSD_KERNEL_BUILD!$BSD_KERNEL_BUILD$ac_delim LINUX_VERSION!$LINUX_VERSION$ac_delim @@ -25755,6 +26993,8 @@ NO_STRIP_KRB!$NO_STRIP_KRB$ac_delim OPTMZ!$OPTMZ$ac_delim PAM_CFLAGS!$PAM_CFLAGS$ac_delim PAM_LIBS!$PAM_LIBS$ac_delim +PAM_DBG!$PAM_DBG$ac_delim +PAM_OPTMZ!$PAM_OPTMZ$ac_delim PINSTALL_LIBS!$PINSTALL_LIBS$ac_delim REGEX_OBJ!$REGEX_OBJ$ac_delim SHLIB_CFLAGS!$SHLIB_CFLAGS$ac_delim @@ -25772,6 +27012,47 @@ XLIBKVM!$XLIBKVM$ac_delim XLIBS!$XLIBS$ac_delim KRB5_CONFIG!$KRB5_CONFIG$ac_delim BUILD_KRB5!$BUILD_KRB5$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF KRB5CFLAGS!$KRB5CFLAGS$ac_delim KRB5LIBS!$KRB5LIBS$ac_delim HELPER_SPLINT!$HELPER_SPLINT$ac_delim @@ -25780,7 +27061,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 95; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 6; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -25798,7 +27079,7 @@ if test -n "$ac_eof"; then fi cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' @@ -26061,7 +27342,7 @@ s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && diff --git a/configure-libafs.in b/configure-libafs.in index b8b8ae984..0e243c6f3 100644 --- a/configure-libafs.in +++ b/configure-libafs.in @@ -1,8 +1,8 @@ AC_INIT(src/libafs/Makefile.common.in) -AM_INIT_AUTOMAKE(openafs-libafs,1.4.7) +AM_INIT_AUTOMAKE(openafs-libafs,1.5.50) AC_CONFIG_HEADER(src/config/afsconfig.h) -MACOS_VERSION=1.4.7 -LINUX_PKGVER=1.4.7 +MACOS_VERSION=1.5.50 +LINUX_PKGVER=1.5.50 #LINUX_PKGREL=0.pre0 LINUX_PKGREL=1.1 diff --git a/configure.in b/configure.in index 06c0c3691..6be38ab51 100644 --- a/configure.in +++ b/configure.in @@ -1,8 +1,8 @@ AC_INIT(src/config/stds.h) -AM_INIT_AUTOMAKE(openafs,1.4.7) +AM_INIT_AUTOMAKE(openafs,1.5.50) AC_CONFIG_HEADER(src/config/afsconfig.h) -MACOS_VERSION=1.4.7 -LINUX_PKGVER=1.4.7 +MACOS_VERSION=1.5.50 +LINUX_PKGVER=1.5.50 #LINUX_PKGREL=0.pre0 LINUX_PKGREL=1.1 @@ -11,7 +11,8 @@ AC_SUBST(LINUX_PKGVER) AC_SUBST(LINUX_PKGREL) AC_PROG_CC -AC_CHECK_PROGS(CPP,[/lib/cpp /usr/bin/cpp /usr/ccs/lib/cpp cpp],,[$PATH:/]) +AC_PATH_PROGS([PATH_CPP], [cpp], , [$PATH:/lib:/usr/ccs/lib]) +AC_SUBST([PATH_CPP]) OPENAFS_CONFIGURE_COMMON if test -d 'doc/man-pages' ; then @@ -37,6 +38,7 @@ src/bu_utils/Makefile \ src/bubasics/Makefile \ src/bucoord/Makefile \ src/budb/Makefile \ +src/tbudb/Makefile \ src/butc/Makefile \ src/butm/Makefile \ src/cmd/Makefile \ @@ -88,6 +90,7 @@ src/lwp/test/Makefile \ src/mpp/Makefile \ src/null/Makefile \ src/package/Makefile \ +src/packaging/Debian/rules \ src/packaging/MacOS/OpenAFS.Info.plist \ src/packaging/MacOS/OpenAFS.info \ src/packaging/MacOS/buildpkg.sh \ @@ -100,6 +103,7 @@ src/platform/${MKAFS_OSTYPE}/Makefile \ src/procmgmt/Makefile \ src/procmgmt/test/Makefile \ src/ptserver/Makefile \ +src/tptserver/Makefile \ src/rx/Makefile \ src/rx/bulk.example/Makefile \ src/rx/bulktest/Makefile \ @@ -120,10 +124,12 @@ src/sys/Makefile \ src/tbutc/Makefile \ src/tests/Makefile \ src/tests/run-tests \ +src/tsalvaged/Makefile \ src/tsm41/Makefile \ src/tviced/Makefile \ src/tvolser/Makefile \ src/ubik/Makefile \ +src/tubik/Makefile \ src/update/Makefile \ src/usd/Makefile \ src/usd/test/Makefile \ @@ -135,6 +141,7 @@ src/venus/test/Makefile \ src/vfsck/Makefile \ src/viced/Makefile \ src/vlserver/Makefile \ +src/tvlserver/Makefile \ src/vol/Makefile \ src/vol/test/Makefile \ src/volser/Makefile \ diff --git a/doc/arch/README b/doc/arch/README new file mode 100644 index 000000000..9ae5f010d --- /dev/null +++ b/doc/arch/README @@ -0,0 +1,7 @@ +dafs-fsa.dot is a description of the finite-state machine for volume +states in the Demand Attach fileserver in Dot (http://www.graphviz.org) +format. An invocation like: + + dot -Tsvg dafs-fsa.dot > dafs-fsa.svg + +will convert the description to an SVG file. diff --git a/doc/arch/dafs-fsa.dot b/doc/arch/dafs-fsa.dot new file mode 100644 index 000000000..565de7122 --- /dev/null +++ b/doc/arch/dafs-fsa.dot @@ -0,0 +1,109 @@ +# +# This is a dot (http://www.graphviz.org) description of the various +# states volumes can be in for DAFS (Demand Attach File Server). +# +# Author: Steven Jenkins +# Date: 2007-05-24 +# + +digraph VolumeStates { + size="11,17" + graph [ + rankdir = "TB" + ]; + + subgraph clusterKey { + rankdir="LR"; + shape = "rectangle"; + + s1 [ shape=plaintext, label = "VPut after VDetach in brown", + fontcolor="brown" ]; + s2 [ shape=plaintext, label = "VAttach in blue", + fontcolor="blue" ]; + s3 [ shape=plaintext, label = "VGet/VHold in purple", + fontcolor="purple" ]; + s4 [ shape=plaintext, label = "Error States in red", + fontcolor="red" ]; + s5 [ shape=plaintext, label = "VPut after VOffline in green", + fontcolor="green" ]; + s6 [ shape=ellipse, label = "re-entrant" ]; + s7 [ shape=ellipse, peripheries=2, label="non re-entrant" ]; + s8 [ shape=ellipse, color="red", label="Error States" ]; + + s6->s7->s8->s1->s2->s3->s4->s5 [style="invis"]; + + } + + node [ peripheries = "2" ] ATTACHING \ + LOADING_VNODE_BITMAPS HDR_LOADING_FROM_DISK \ + HDR_ATTACHING_LRU_PULL \ + "UPDATING\nSYNCING_VOL_HDR_TO_DISK" \ + OFFLINING DETACHING; + node [ shape = "ellipse", peripheries = "1" ]; + node [ color = "red" ] HARD_ERROR SALVAGE_REQUESTED SALVAGING; + + node [ color = "black" ]; // default back to black + + UNATTACHED->Exclusive_vol_op_executing [label = "controlled by FSSYNC" ]; + Exclusive_vol_op_executing->UNATTACHED [label = "controlled by FSSYNC" ]; + UNATTACHED->FREED [ label = "VCancelReservation_r() after a\nVDetach() or FreeVolume() will\ncause CheckDetach() or CheckFree() to fire" ]; + OFFLINING->UNATTACHED; + UNATTACHED->PREATTACHED [ color = "orange", label = "PreAttach()" ]; + PREATTACHED->UNATTACHED [ color = "orange", label = "VOffline()"]; + HARD_ERROR->PREATTACHED [ color = "orange", label = "operator intervention via FSSYNC" ]; + + PREATTACHED->Exclusive_vol_op_executing [color = "orange", label = "controlled by FSSYNC" ]; + Exclusive_vol_op_executing->PREATTACHED [color = "orange", label = "controlled by FSSYNC" ]; + PREATTACHED->FREED [ color = "orange", label = "VCancelReservation_r() after a\nVDetach() or FreeVolume() will\ncause CheckDetach() or CheckFree() to fire" ]; + PREATTACHED->ATTACHING [ color = "blue", weight = "8" ]; + SALVAGING->PREATTACHED [ label = "controlled via FSSYNC" ]; + + DETACHING->FREED ; + SHUTTING_DOWN->DETACHING [ color = "brown" ]; + ATTACHED_nUsers_GT_0->SHUTTING_DOWN [ color = "orange", label = "VDetach()" ]; + + DETACHING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "brown" ]; + "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->DETACHING [ color = "brown" ]; + OFFLINING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "green" ]; + "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->OFFLINING [ color = "green" ]; + GOING_OFFLINE->OFFLINING [ color = "green" ]; + + "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->SALVAGE_REQUESTED [ color = "red" ]; + "UPDATING\nSYNCING_VOL_HDR_TO_DISK"->ATTACHING [ color = "blue" ]; + ATTACHING->"UPDATING\nSYNCING_VOL_HDR_TO_DISK" [ color = "blue" ]; + + ATTACHED_nUsers_GT_0->GOING_OFFLINE [ color = "orange", label = "VOffline" ]; + ATTACHED_nUsers_GT_0->ATTACHED_nUsers_EQ_0 [ color = "orange", label = "VPut" ]; + + ATTACHED_nUsers_GT_0->SALVAGE_REQUESTED [ color = "red" ]; + + LOADING_VNODE_BITMAPS->ATTACHING [ color = "blue" ]; + ATTACHING->LOADING_VNODE_BITMAPS [ color = "blue" ] ; + LOADING_VNODE_BITMAPS->SALVAGE_REQUESTED [ color = "red" ]; + HDR_LOADING_FROM_DISK->SALVAGE_REQUESTED [ color = "red" ]; + HDR_LOADING_FROM_DISK->ATTACHING [ color = "blue" ] ; + HDR_LOADING_FROM_DISK->ATTACHED_nUsers_GT_0 [ color = "purple" ]; + + SALVAGE_REQUESTED->SALVAGING [ label = "controlled via FSSYNC" ]; + SALVAGE_REQUESTED->HARD_ERROR [ color = "red", + label = "After hard salvage limit reached,\n hard error state is in effect\nuntil there is operator intervention" ]; + + HDR_ATTACHING_LRU_PULL->HDR_LOADING_FROM_DISK [ color = "blue" ]; + HDR_ATTACHING_LRU_PULL->HDR_LOADING_FROM_DISK [ color = "purple" ]; + HDR_ATTACHING_LRU_PULL->ATTACHED_nUsers_GT_0 [ color = "purple", label = "header can be in LRU\nand not have been reclaimed\nthus skipping disk I/O" ]; + + ATTACHING->HDR_ATTACHING_LRU_PULL [ color = "blue" ]; + ATTACHING->ATTACHED_nUsers_EQ_0 [ color = "blue" ]; + + ATTACHING->SALVAGE_REQUESTED [ color = "red" ]; + ATTACHED_nUsers_EQ_0->HDR_ATTACHING_LRU_PULL [ color = "purple" ]; + + ATTACHED_nUsers_EQ_0->SALVAGE_REQUESTED [ color = "red" ]; + + // Various loopback transitions + GOING_OFFLINE->GOING_OFFLINE [ label = "VPut when (nUsers > 1)" ]; + SHUTTING_DOWN->SHUTTING_DOWN + [ label = "VPut when ((nUsers > 1) ||\n((nUsers == 1) && (nWaiters > 0)))" ]; + SHUTTING_DOWN->SHUTTING_DOWN + [ label = "VCancelReservation_r when ((nWaiters > 1)\n|| ((nWaiters == 1) && (nUsers > 0)))"]; +} diff --git a/doc/html/AdminReference/auarf000.htm b/doc/html/AdminReference/auarf000.htm deleted file mode 100644 index 91e952fa3..000000000 --- a/doc/html/AdminReference/auarf000.htm +++ /dev/null @@ -1,48 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

Administration Reference

-

[Return to Library] [Table of Contents] [Bottom of Topic] [Next Topic] [Index]


-AFS
-Administration Reference
-

Version 3.6 -

Document Number GC09-4562-00 -

-
-

First Edition (April 2000) -

This edition applies to: -

-
IBM AFS for AIX, Version 3.6 -
IBM AFS for Digital Unix, Version 3.6 -
IBM AFS for HP-UX, Version 3.6 -
IBM AFS for Linux, Version 3.6 -
IBM AFS for SGI IRIX, Version 3.6 -
IBM AFS for Solaris, Version 3.6 -
-

and to all subsequent releases and modifications until otherwise indicated -in new editions. -

This softcopy version is based on the printed edition of this book. -Some formatting amendments have been made to make this information more -suitable for softcopy. -

Order publications through your IBM representative or through the IBM -branch office serving your locality. -

-


[Return to Library] [Table of Contents] [Top of Topic] [Next Topic] [Index]

- -


-
© IBM Corporation 2000. All Rights Reserved -
- - - diff --git a/doc/html/AdminReference/auarf002.htm b/doc/html/AdminReference/auarf002.htm deleted file mode 100644 index 82f7c3cad..000000000 --- a/doc/html/AdminReference/auarf002.htm +++ /dev/null @@ -1,314 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

Administration Reference

-

[Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

-

Table of Contents

-

Tables
-

About This Manual
-

-
  • Audience and Purpose -
  • Organization -
  • How to Use This Document -
  • Related Documents -
  • Typographical Conventions -
  • -

    AFS System Files
    -

    -
  • afs_file_intro -
  • AuthLog -
  • AuthLog.dir, AuthLog.pag -
  • BackupLog -
  • BosLog -
  • BosConfig -
  • CacheItems -
  • CFG_device_name -
  • CellServDB (client version) -
  • CellServDB (server version) -
  • FileLog -
  • FORCESALVAGE -
  • KeyFile -
  • NetInfo (client version) -
  • NetInfo (server version) -
  • NetRestrict (client version) -
  • NetRestrict (server version) -
  • NoAuth -
  • SALVAGE.fs -
  • SalvageLog -
  • TE_device_name -
  • ThisCell (client version) -
  • ThisCell (server version) -
  • TL_device_name -
  • UserList -
  • Vn -
  • Vvol_ID.vol -
  • VLLog -
  • VolserLog -
  • VolumeItems -
  • afszcm.cat -
  • bdb.DB0 and bdb.DBSYS1 -
  • cacheinfo -
  • fms.log -
  • kaserver.DB0 and kaserver.DBSYS1 -
  • kaserverauxdb -
  • prdb.DB0 and prdb.DBSYS1 -
  • salvage.lock -
  • sysid -
  • tapeconfig -
  • vldb.DB0 and vldb.DBSYS1 -
  • afsmonitor Configuration File -
  • package Configuration File -
  • uss Bulk Input File -
  • uss Template File -
  • -

    AFS System Commands
    -

    -
  • afs_intro -
  • afsd -
  • afsmonitor -
  • backup -
  • backup adddump -
  • backup addhost -
  • backup addvolentry -
  • backup addvolset -
  • backup apropos -
  • backup dbverify -
  • backup deldump -
  • backup deletedump -
  • backup delhost -
  • backup delvolentry -
  • backup delvolset -
  • backup diskrestore -
  • backup dump -
  • backup dumpinfo -
  • backup help -
  • backup interactive -
  • backup jobs -
  • backup kill -
  • backup labeltape -
  • backup listdumps -
  • backup listhosts -
  • backup listvolsets -
  • backup quit -
  • backup readlabel -
  • backup restoredb -
  • backup savedb -
  • backup scantape -
  • backup setexp -
  • backup status -
  • backup volinfo -
  • backup volrestore -
  • backup volsetrestore -
  • bos -
  • bos addhost -
  • bos addkey -
  • bos adduser -
  • bos apropos -
  • bos create -
  • bos delete -
  • bos exec -
  • bos getdate -
  • bos getlog -
  • bos getrestart -
  • bos help -
  • bos install -
  • bos listhosts -
  • bos listkeys -
  • bos listusers -
  • bos prune -
  • bos removehost -
  • bos removekey -
  • bos removeuser -
  • bos restart -
  • bos salvage -
  • bos setauth -
  • bos setcellname -
  • bos setrestart -
  • bos shutdown -
  • bos start -
  • bos startup -
  • bos status -
  • bos stop -
  • bos uninstall -
  • bosserver -
  • buserver -
  • butc -
  • dlog -
  • dpass -
  • fileserver -
  • fms -
  • fs -
  • fs apropos -
  • fs checkservers -
  • fs checkvolumes -
  • fs cleanacl -
  • fs copyacl -
  • fs diskfree -
  • fs examine -
  • fs exportafs -
  • fs flush -
  • fs flushmount -
  • fs flushvolume -
  • fs getcacheparms -
  • fs getcellstatus -
  • fs getclientaddrs -
  • fs getserverprefs -
  • fs help -
  • fs listacl -
  • fs listcells -
  • fs listquota -
  • fs lsmount -
  • fs messages -
  • fs mkmount -
  • fs newcell -
  • fs quota -
  • fs rmmount -
  • fs setacl -
  • fs setcachesize -
  • fs setcell -
  • fs setclientaddrs -
  • fs setquota -
  • fs setserverprefs -
  • fs setvol -
  • fs storebehind -
  • fs sysname -
  • fs whereis -
  • fs whichcell -
  • fs wscell -
  • fstrace -
  • fstrace apropos -
  • fstrace clear -
  • fstrace dump -
  • fstrace help -
  • fstrace lslog -
  • fstrace lsset -
  • fstrace setlog -
  • fstrace setset -
  • ftpd (AFS version) -
  • inetd (AFS version) -
  • kadb_check -
  • kas -
  • kas apropos -
  • kas create -
  • kas delete -
  • kas examine -
  • kas forgetticket -
  • kas help -
  • kas interactive -
  • kas list -
  • kas listtickets -
  • kas noauthentication -
  • kas quit -
  • kas setfields -
  • kas setpassword -
  • kas statistics -
  • kas stringtokey -
  • kas unlock -
  • kaserver -
  • kdb -
  • klog -
  • knfs -
  • kpasswd -
  • kpwvalid -
  • package -
  • package apropos -
  • package help -
  • package_test -
  • pagsh -
  • prdb_check -
  • pts -
  • pts adduser -
  • pts apropos -
  • pts chown -
  • pts creategroup -
  • pts createuser -
  • pts delete -
  • pts examine -
  • pts help -
  • pts listentries -
  • pts listmax -
  • pts listowned -
  • pts membership -
  • pts removeuser -
  • pts rename -
  • pts setfields -
  • pts setmax -
  • ptserver -
  • rcp (AFS version) -
  • rsh (AFS version) -
  • runntp -
  • rxdebug -
  • salvager -
  • scout -
  • sys -
  • tokens -
  • translate_et -
  • udebug -
  • unlog -
  • up -
  • upclient -
  • upserver -
  • uss -
  • uss add -
  • uss apropos -
  • uss bulk -
  • uss delete -
  • uss help -
  • vldb_check -
  • vlserver -
  • volinfo -
  • volserver -
  • vos -
  • vos addsite -
  • vos apropos -
  • vos backup -
  • vos backupsys -
  • vos changeaddr -
  • vos create -
  • vos delentry -
  • vos dump -
  • vos examine -
  • vos help -
  • vos listaddrs -
  • vos listpart -
  • vos listvldb -
  • vos listvol -
  • vos lock -
  • vos move -
  • vos partinfo -
  • vos release -
  • vos remove -
  • vos remsite -
  • vos rename -
  • vos restore -
  • vos status -
  • vos syncserv -
  • vos syncvldb -
  • vos unlock -
  • vos unlockvldb -
  • vos zap -
  • xfs_size_check -
  • xstat_cm_test -
  • xstat_fs_test -
  • -

    Index
    -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf003.htm b/doc/html/AdminReference/auarf003.htm deleted file mode 100644 index d747b3abf..000000000 --- a/doc/html/AdminReference/auarf003.htm +++ /dev/null @@ -1,29 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -


    Tables

    -
      -
    1. File Server configuration parameters
    2. -
    -

    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf004.htm b/doc/html/AdminReference/auarf004.htm deleted file mode 100644 index 7a2b088f1..000000000 --- a/doc/html/AdminReference/auarf004.htm +++ /dev/null @@ -1,28 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -


    About This Manual

    -

    This chapter describes the purpose, organization, and conventions of this -document. -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf005.htm b/doc/html/AdminReference/auarf005.htm deleted file mode 100644 index 09e908a31..000000000 --- a/doc/html/AdminReference/auarf005.htm +++ /dev/null @@ -1,32 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    Audience and Purpose

    -

    This reference manual details the syntax of each -AFS(R) command and is intended for the experienced AFS -administrator, programmer, or user. -

    In general, this document does not explain when to use a command or its -place in the sequence of commands that make up a complete procedure. -For that type of information, refer to the IBM AFS Administration -Guide. -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf006.htm b/doc/html/AdminReference/auarf006.htm deleted file mode 100644 index b8cf3888d..000000000 --- a/doc/html/AdminReference/auarf006.htm +++ /dev/null @@ -1,55 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    Organization

    -

    This document presents AFS files and commands in separate -sections, with the files or commands in alphabetical order. -

    The following sections of each reference page provide the indicated type of -information: -

      -

    • Purpose briefly describes the command's function. -

    • Synopsis displays the complete syntax statement for a command, -which specifies the required order for all options, using the same notation as -the AFS online help. If abbreviating the command name and option names -is acceptable, as it is for most commands, a second statement specifies the -shortest acceptable abbreviation of each name. If the command has an -alias, it also appears in this section. -

    • Description describes the file or command's function in -detail. -

    • Cautions describes restrictions, requirements, and potential -complications in use of the command. It appears only when -necessary. -

    • Options describes the function and required form of each -argument and flag. -

    • Output describes any output the command writes to the standard -output stream. This section does not appear if the command does not -produce output or if the only output is a message confirming the -command's success. -

    • Examples provides one or more sample commands and resulting -output. -

    • Privilege Required lists each privilege required to perform the -command. -

    • Related Information lists related commands and files, if -any. -
    -

    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf007.htm b/doc/html/AdminReference/auarf007.htm deleted file mode 100644 index 6a0db0b06..000000000 --- a/doc/html/AdminReference/auarf007.htm +++ /dev/null @@ -1,28 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    How to Use This Document

    -

    Refer to this document when you need detailed information -about a specific command. For a description of all the steps in a -procedure, refer to the IBM AFS Administration Guide. -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf008.htm b/doc/html/AdminReference/auarf008.htm deleted file mode 100644 index be5907d1b..000000000 --- a/doc/html/AdminReference/auarf008.htm +++ /dev/null @@ -1,56 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    Related Documents

    -

    The following documents are included in the AFS documentation -set. -

    IBM AFS Administration Guide -

    This guide describes the concepts and procedures that a system -administrator must know to manage an AFS cell. It assumes familiarity -with UNIX, but requires no previous knowledge of AFS. -

    The first chapters of the IBM AFS Administration Guide present -basic concepts and guidelines. Understanding them is crucial to -successful administration of an AFS cell. The remaining chapters in the -guide provide step-by-step instructions for specific administrative tasks, -along with discussions of the concepts important to that particular -task. -

    IBM AFS Quick Beginnings -

    This guide provides instructions for installing AFS server and client -machines. It is assumed that the installer is an experienced UNIX -(R) system administrator. -

    For predictable performance, machines must be installed and configured in -accordance with the instructions in this guide. -

    IBM AFS Release Notes -

    This document provides information specific to each release of AFS, such as -a list of new features and commands, a list of requirements and limitations, -and instructions for upgrading server and client machines. -

    IBM AFS User Guide -

    This guide presents the basic concepts and procedures necessary for using -AFS effectively. It assumes that the reader has some experience with -UNIX, but does not require familiarity with networking or AFS. -

    The guide explains how to perform basic functions, including -authenticating, changing a password, protecting AFS data, creating groups, and -troubleshooting. It provides illustrative examples for each function -and describes some of the differences between the UNIX file system and -AFS. -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf009.htm b/doc/html/AdminReference/auarf009.htm deleted file mode 100644 index e192dcee2..000000000 --- a/doc/html/AdminReference/auarf009.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    Typographical Conventions

    -

    This document uses the following typographical -conventions: -

      -

    • Command and option names appear in bold type in syntax -definitions, examples, and running text. Names of directories, files, -machines, partitions, volumes, and users also appear in bold -type. -

    • Variable information appears in italic type. This -includes user-supplied information on command lines and the parts of prompts -that differ depending on who issues the command. New terms also appear -in italic type. -

    • Examples of screen output and file contents appear in monospace -type. -
    -

    In addition, the following symbols appear in command syntax definitions, -both in the documentation and in AFS online help statements. When -issuing a command, do not type these symbols. -

      -

    • Square brackets [ ] surround optional items. -

    • Angle brackets < > surround user-supplied values in AFS -commands. -

    • A superscripted plus sign + follows an argument that accepts -more than one value. -

    • The percent sign % represents the regular command shell -prompt. Some operating systems possibly use a different character for -this prompt. -

    • The number sign # represents the command shell prompt for the -local superuser root. Some operating systems possibly use a -different character for this prompt. -

    • The pipe symbol | in a command syntax statement separates -mutually exclusive values for an argument. -
    -

    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf010.htm b/doc/html/AdminReference/auarf010.htm deleted file mode 100644 index c7ab21aa9..000000000 --- a/doc/html/AdminReference/auarf010.htm +++ /dev/null @@ -1,26 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    AFS System Files

    -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf011.htm b/doc/html/AdminReference/auarf011.htm deleted file mode 100644 index 68416fe13..000000000 --- a/doc/html/AdminReference/auarf011.htm +++ /dev/null @@ -1,124 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    afs_file_intro

    -

    Purpose -

    Introduction to AFS files -

    Description -

    A number of files must reside on the local disk of AFS server and client -machines. They belong to the following general categories: -

      -

    • Configuration files define configuration parameters for -specific server and kernel processes such as the Backup System Tape -Coordinator or the Cache Manager -

    • Administrative files list information used in administration of -server machines, such as a list of privileged users or server encryption keys -

    • Cache-related files contain cached data or information about -cached data, on client machines -

    • Log files contain tracing messages about the operation of a -specific process -

    • Database files contain database records used to administer the -AFS cell -

    • Controller files control the behavior of a process -

    • Volume header files represent AFS volumes on server partitions -
    -

    For a description of the format and contents of each file, see its -reference page. -

    Note for Windows users: Some files described in this -document possibly do not exist on machines that run a Windows operating -system. Also, Windows uses a backslash -( \ ) rather than a forward slash -( / ) to separate the elements in a -pathname. -

    Related Information -

    Configuration files: - -

    -

    BosConfig -

    CFG_device_name -

    CellServDB (client version) -

    CellServDB (server version) -

    NetInfo (client version) -

    NetInfo (server version) -

    NetRestrict (client version) -

    NetRestrict (server version) -

    ThisCell (client version) -

    ThisCell (server version) -

    cacheinfo -

    sysid -

    tapeconfig -

    package Configuration File -

    uss Template File -

    uss Bulk Input File -

    -

    Administrative files: - -

    -

    KeyFile -

    UserList -

    -

    Cache-related files: - -

    -

    CacheItems -

    Vn -

    VolumeItems -

    -

    Log files: - -

    -

    AuthLog -

    BackupLog -

    BosLog -

    FileLog -

    SalvageLog -

    TE_device_name -

    TL_device_name -

    VLLog -

    VolserLog -

    fms.log -

    -

    Database files: - -

    -

    bdb.DB0 and bdb.DBSYS1 -

    kaserver.DB0 and kaserver.DBSYS1 -

    kaserverauxdb -

    prdb.DB0 and prdb.DBSYS1 -

    vldb.DB0 and vldb.DBSYS1 -

    - -

    Controller files: -

    -

    FORCESALVAGE -

    NoAuth -

    SALVAGE.fs -

    salvage.lock -

    -

    Volume header files: -

    -

    Vvol_ID.vol -

    -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf012.htm b/doc/html/AdminReference/auarf012.htm deleted file mode 100644 index 3912009eb..000000000 --- a/doc/html/AdminReference/auarf012.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    AuthLog

    -

    Purpose - - - -

    Traces Authentication Server operations -

    Description -

    The AuthLog file records a trace of Authentication Server -(kaserver process) operations on the local machine and describes -any error conditions it encounters. -

    If the AuthLog file does not exist in the -/usr/afs/logs directory when the Authentication Server starts, the -server process creates it and writes initial start-up messages to it. -If there is an existing file, the Authentication Server renames it to -AuthLog.old, overwriting the existing -AuthLog.old file if it exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log onto the server -machine and use a text editor or a file display command such as the UNIX -cat command. By default, the mode bits on the -AuthLog file grant the required r (read) -permission to all users. -

    The Authentication Server records operations only as it completes them, and -cannot recover from failures by reviewing the file. The log contents -are useful for administrative evaluation of process failures and other -problems. -

    Related Information -

    UserList -

    bos getlog -

    kaserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf013.htm b/doc/html/AdminReference/auarf013.htm deleted file mode 100644 index 92d7192b1..000000000 --- a/doc/html/AdminReference/auarf013.htm +++ /dev/null @@ -1,49 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    AuthLog.dir, AuthLog.pag

    -

    Purpose - - - -

    Records privileged operations performed by the Authentication Server -

    Description -

    The AuthLog.dir and AuthLog.pag files -record a trace of privileged operations performed by the Authentication Server -(kaserver process) on the local machine. If the files do not -exist when the Authentication Server starts, it creates them in the -/usr/afs/logs directory as necessary. -

    The files are in binary format. To display their contents, use the -kdb command, which requires being logged in to the local machine as -the local superuser root. -

    Cautions -

    The Authentication Server is possibly unable to create these files on some -operating systems that AFS otherwise supports, making the kdb -command inoperative. See the IBM AFS Release Notes for -details. -

    Related Information -

    kaserver -

    kdb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf014.htm b/doc/html/AdminReference/auarf014.htm deleted file mode 100644 index b8565b3c6..000000000 --- a/doc/html/AdminReference/auarf014.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    BackupLog

    -

    Purpose - - - -

    Traces Backup Server operations -

    Description -

    The BackupLog file records a trace of Backup Server -(buserver process) operations on the local machine and describes -any error conditions it encounters. -

    If the BackupLog file does not already exist in the -/usr/afs/logs directory when the Backup Server starts, the server -process creates it and writes initial start-up messages to it. If there -is an existing file, the Backup Server renames it to -BackupLog.old, overwriting the existing -BackupLog.old file if it exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log on to the machine -and use a text editor or a file display command such as the UNIX -cat command. By default, the mode bits on the -BackupLog file grant the required r (read) -permission to all users. -

    The Backup Server records operations only as it completes them, and so -cannot recover from failures by reviewing the file. The log contents -are useful for administrative evaluation of process failures and other -problems. -

    Related Information -

    UserList -

    bos getlog -

    buserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf015.htm b/doc/html/AdminReference/auarf015.htm deleted file mode 100644 index d440166bc..000000000 --- a/doc/html/AdminReference/auarf015.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    BosLog

    -

    Purpose - - - -

    Traces BOS Server operations -

    Description -

    The BosLog file records a trace of Basic OverSeer (BOS) Server -(bosserver process) operations on the local machine and describes -any error conditions it encounters. -

    If the BosLog file does not already exist in the -/usr/afs/logs directory when the BOS Server starts, the server -process creates it and writes initial start-up messages to it. If there -is an existing file, the BOS server renames it to -BosLog.old, overwriting the existing -BosLog.old file if it exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log onto the server -machine and use a text editor or a file display command such as the UNIX -cat command. By default, the mode bits on the -BosLog file grant the required r (read) -permission to all users. -

    The BOS Server records operations only as it completes them, and cannot -recover from failures by reviewing the file. The log contents are -useful for administrative evaluation of process failures and other -problems. -

    Related Information -

    UserList -

    bos getlog -

    bosserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf016.htm b/doc/html/AdminReference/auarf016.htm deleted file mode 100644 index e1b4f7e67..000000000 --- a/doc/html/AdminReference/auarf016.htm +++ /dev/null @@ -1,179 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    BosConfig

    -

    Purpose - - - - -

    Defines server processes for the BOS Server to monitor -

    Description -

    The BosConfig file lists the processes that the Basic OverSeer -(BOS) Server monitors on its server machine, and thus defines which AFS server -processes run on the machine. It specifies how the BOS Server reacts -when a process fails, and also defines the times at which the BOS Server -automatically restarts processes as part of performance maintenance. -The file must reside in the /usr/afs/local directory on each AFS -server machine. -

    A server process entry in the BosConfig file records the -following information: -

      -

    • The entry type, which is one of the following: - - -
      -

      cron - -
      Designates a server process that runs periodically instead of -continuously. The BOS Server starts a cron process only at specified -times, not whenever it fails. All standard AFS process entries except -fs are simple (there are no standard cron processes). -

      fs - - - - -
      Designates a group of interdependent server processes. If one of -the processes fails, the BOS Server must coordinate its restart with the -restart of the other processes in the group, possibly by stopping them -first. -

      There is only one standard entry of this type, for which the conventional -name is fs. It combines three server processes: the -File Server (fileserver process), the Volume Server -(volserver process), and the Salvager (salvager -process). These processes all operate on the same data--the AFS -data stored on an AFS server machine's /vicep partitions and -mounted in the AFS filespace--but in different ways. Grouping the -processes prevents them from attempting to access the same data -simultaneously, which can cause corruption. -

      During normal operation, the Salvager process is not active. If the -File Server process fails, however, the BOS Server stops the Volume Server -process and runs the Salvager process to correct any corruption that resulted -from the failure. (The administrator can also issue the bos -salvage command to invoke the Salvager process.) If the Volume -Server fails, the BOS Server can restart it without stopping the File Server -or running the Salvager. -

      simple - -
      Designates a server process that runs independently of any other on the -server machine. If a simple process fails, the BOS Server does not have -to coordinate its restart with any other process. -
      -

    • The entry name. The conventional name for an entry in the -BosConfig file and the associated process matches the binary -filename. When issuing any bos command that takes the --instance argument, identify each process by the name used in the -BosConfig file. For a list of the names, see the bos -create reference page. -

    • The process's status flag, which determines whether the BOS -Server attempts to start the process in two cases: each time the BOS -Server itself restarts, and when the process fails. The -BosConfig file currently uses a binary notation to indicate whether -the BOS Server attempts to restart the process as necessary or does not -monitor it at all. For the sake of clarity, the AFS documentation -refers to the flags as Run and NotRun instead. -Only a system administrator, not the BOS Server, can change the flag. - - -

    • One or more command parameters which the BOS Server invokes to -start the process or processes associated with the entry: -
        -

      • A cron entry has two command parameters, the first the complete -pathname to the program, and the second the time at which the BOS Server -invokes the program. -

      • The fs entry has three command parameters, each the complete -pathname to the fileserver, volserver, and -salvager programs, in that order. -

      • A simple entry has only one command parameter, the complete -pathname to the program. -
      -
    -

    In addition to server process entries, the BosConfig file -specifies the times at which the BOS Server performs two types of automatic -process restarts: -

      -

    • The general restart time at which the BOS Server restarts itself -and then each process for which the entry in the BosConfig file has -status flag Run. The default setting is Sunday at 4:00 -a.m. -

    • The binary restart time at which the BOS Server restarts any -server process for which the time stamp on the binary file in the -/usr/afs/bin directory is later than the last restart time for the -process. The default is 5:00 a.m. -
    -

    Although the BosConfig file is in ASCII format, do not use a -text editor to alter it. Its format is subject to change and -incorrectly formatted entries can prevent server startup in ways that are -difficult to diagnose. Instead always use the appropriate commands from -the bos command suite: -

      -

    • The bos create command to create an entry in the file and start -the associated process -

    • The bos delete command to remove an entry from the file after -the bos stop command is used to stop the associated process -

    • The bos getrestart command to display the times at which the -BOS Server performs automatic restarts -

    • The bos setrestart command to set the times at which the BOS -Server performs automatic process restarts -

    • The bos start command to change an entry's status flag to -Run and start the associated process -

    • The bos status command to display all processes listed in the -file -

    • The bos stop command to change an entry's status flag to -NotRun and stop the associated process -
    -

    There are also bos commands that start and stop processes -without changing entries in the BosConfig file. The BOS -Server reads the BosConfig file only when it starts, transferring -the information into its memory. Thus a process's status as -represented in the BOS Server's memory can diverge from its status in the -BosConfig file. The following commands change a -process's status in the BOS Server's memory only: - - - -

      -

    • The bos restart command restarts a specified set of processes, -all processes, or all processes other than the BOS Server -

    • The bos shutdown command stops a process -

    • The bos startup command starts a process -
    -

    Related Information -

    bos create -

    bos delete -

    bos getrestart -

    bos restart -

    bos setrestart -

    bos shutdown -

    bos start -

    bos startup -

    bos status -

    bos stop -

    bos salvage -

    fileserver -

    salvager -

    volserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf017.htm b/doc/html/AdminReference/auarf017.htm deleted file mode 100644 index 5e74b04b4..000000000 --- a/doc/html/AdminReference/auarf017.htm +++ /dev/null @@ -1,59 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    CacheItems

    -

    Purpose - - - -

    Records information about each Vn file in a disk cache -

    Description -

    The CacheItems file records information about each file in the -disk cache on a client machine (each Vn file). The -information includes the file ID number and associated volume version number -of the AFS file currently stored in the Vn file, which -enables the Cache Manager to determine which Vn file -contains the AFS data it needs to present to an application. -

    As it initializes, the Cache Manager creates the binary-format -CacheItems file in the same local disk cache directory as the -Vn files that the CacheItems file describes, -and it must always remain there. The conventional directory name is -/usr/vice/cache, but it is acceptable to use a directory on a -partition with more available space. -

    Cautions -

    Editing or removing the CacheItems file can cause a kernel -panic. If the contents of Vn files seem out of -date, clear the files by using the fs flush or fs -flushvolume command. If the CacheItems file is -accidentally modified or deleted, rebooting the machine usually restores -normal performance. -

    Related Information -

    Vn -

    VolumeItems -

    cacheinfo -

    afsd -

    fs flush -

    fs flushvolume -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf018.htm b/doc/html/AdminReference/auarf018.htm deleted file mode 100644 index ef3cc7632..000000000 --- a/doc/html/AdminReference/auarf018.htm +++ /dev/null @@ -1,565 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    CFG_device_name

    -

    Purpose - - - - - -

    Defines Tape Coordinator configuration instructions for automated tape -devices -

    Description -

    The CFG_device_name file includes instructions that -configure a Tape Coordinator for use with automated backup devices such as -tape stackers and jukeboxes, enable the Tape Coordinator to dump and restore -data to a backup data file on a local disk device, and enable -greater automation of other aspects of the backup process. -

    There is a separate configuration file for each tape device or backup data -file. Creating the file is optional, and unnecessary if none of the -instructions it can include pertain to a given tape device. The -ASCII-format file must reside in the /usr/afs/backup directory on -the Tape Coordinator machine if it exists. -

    The CFG_device_name file does not replace the -/usr/afs/backup/tapeconfig file, a single copy of which still must -exist on every Tape Coordinator machine. -

    To enable the Tape Coordinator to locate the configuration file, construct -the variable part of the filename, device_name, as follows: -

      -

    • For a tape device, strip off the initial /dev/ string from the -device name, and replace any other slashes in the name with -underscores. For example, CFG_rmt_4m is the appropriate -filename for a device called /dev/rmt/4m. -

    • For a backup data file, strip off the initial slash (/) and replace any -other slashes in the name with underscores. For example, -CFG_var_tmp_FILE is the appropriate filename for a backup data file -called /var/tmp/FILE. -
    -

    The CFG_device_name file lists one or more of the -following instructions, each on its own line. All are optional, and -they can appear in any order. A more detailed description of each -instruction follows the list: -

    -

    ASK -
    Controls whether the Tape Coordinator prompts for guidance when it -encounters error conditions -

    AUTOQUERY -
    Controls whether the Tape Coordinator prompts for the first tape -

    BUFFERSIZE -
    Sets the size of the memory buffer the Tape Coordinator uses when -transferring data -

    FILE -
    Controls whether the dump is written to a tape device or a file -

    MOUNT -
    Identifies the file that contains routines for inserting tapes into the -device's drive -

    NAME_CHECK -
    Controls whether the Tape Coordinator verifies that a tape's AFS tape -name matches the dump being written -

    UNMOUNT -
    Identifies the file that contains routines for removing tapes from the -device's drive -
    - -

    The ASK Instruction -

    The ASK instruction takes a boolean value as its argument, in -the following format: -

       ASK {YES | NO}
    -   
    -
    -

    When the value is YES, the Tape Coordinator generates a prompt -in its window, requesting a response to the error cases described in the -following list. This is the default behavior if the ASK instruction -does not appear in the CFG_device_name file. -

    When the value is NO, the Tape Coordinator does not prompt in -error cases, but instead uses the automatic default responses described in the -following list. The Tape Coordinator also logs the error in the -TE_device_name file. Suppressing the prompts -enables the Tape Coordinator to run unattended, though it still prompts for -insertion of tapes unless the MOUNT instruction is used. -

    The error cases controlled by this instruction are the following: -

      -

    • The Backup System is unable to dump a volume while running the backup -dump command. With a YES value, the Tape Coordinator -prompts to offer three choices: try to dump the volume again -immediately, omit the volume from the dump but continue the operation, or -terminate the operation. With a NO value, the Tape -Coordinator omits the volume from the dump and continues the operation. -

    • The Backup System is unable to restore a volume while running the -backup diskrestore, backup volrestore, or backup -volsetrestore command. With a YES value, the Tape -Coordinator prompts to offer two choices: omit the volume and continue -restoring the other volumes, or terminate the operation. With a -NO value, it continues the operation without prompting, omitting -the problematic volume but restoring the remaining ones. -

    • The Backup System cannot determine if the dump set includes any more -tapes, while running the backup scantape command (the reference -page for that command discusses possible reasons for this problem). -With a YES value, the Tape Coordinator prompts to ask if there are -more tapes to scan. With a NO value, it proceeds as though -there are more tapes and invokes the routine named by the MOUNT -instruction in the configuration file, or prompts the operator to insert the -next tape. -

    • The Backup System determines that the tape contains an unexpired dump -while running the backup labeltape command. With a -YES value, the Tape Coordinator prompts to offer two choices: -continue or terminate the labeling operation. With a NO -value, it terminates the operation without relabeling the tape. -
    - -

    The AUTOQUERY Instruction -

    The AUTOQUERY instruction takes a boolean value as its argument, -in the following format: -

       AUTOQUERY {YES | NO}
    -   
    -
    -

    When the value is YES, the Tape Coordinator checks for the -MOUNT instruction in the configuration file when it needs to read -the first tape involved in an operation. As described for that -instruction, it then either prompts for the tape or invokes the specified -routine to mount the tape. This is the default behavior if the -AUTOQUERY instruction does not appear in the configuration -file. -

    When the value is NO, the Tape Coordinator assumes that the -first tape required for an operation is already in the drive. It does -not prompt the operator or invoke the MOUNT routine unless there is -an error in accessing the first tape. This setting is equivalent in -effect to including the -noautoquery flag to the butc -command. -

    Note that the setting of the AUTOQUERY instruction controls the -Tape Coordinator's behavior only with respect to the first tape required -for an operation. For subsequent tapes, the Tape Coordinator always -checks for the MOUNT instruction. It also refers to the -MOUNT instruction if it encounters an error while attempting to -access the first tape. - -

    The BUFFERSIZE Instruction -

    The BUFFERSIZE instruction takes an integer value, and -optionally units, in the following format: -

       BUFFERSIZE size[{k | K | m | M | g | G}]
    -   
    -
    -

    where size specifies the amount of memory the Tape Coordinator -allocates to use as a buffer during both dump and restore operations. -The default unit is bytes, but use k or K to specify -kilobytes, m or M for megabytes, and g or -G for gigabytes. There is no space between the -sizevalue and the units letter. -

    By default, the Tape Coordinator uses a 16 KB buffer during dump -operations. As it receives volume data from the Volume Server, the Tape -Coordinator gathers 16 KB of data in the buffer before transferring the entire -16 KB to the tape device or backup data file. Similarly, during a -restore operation the Tape Coordinator by default buffers 32 KB of data from -the tape device or backup data file before transferring the entire 32 KB to -the Volume Server for restoration into the file system. Buffering makes -the volume of data flowing to and from a tape device more even and so promotes -tape streaming, which is the most efficient way for a tape device to -operate. -

    In a normal network configuration, the default buffer sizes are usually -large enough to promote tape streaming. If the network between the Tape -Coordinator machine and file server machines is slow, it can help to increase -the buffer size. - -

    The FILE Instruction -

    The FILE instruction takes a boolean value as its argument, in -the following format: -

       FILE {NO | YES}
    -   
    -
    -

    When the value is NO, the Tape Coordinator writes to a tape -device during a dump operation and reads from one during a restore -operation. This is the default behavior if the FILE -instruction does not appear in the configuration file. -

    When the value is YES, the Tape Coordinator writes volume data -to a backup data file on the local disk during a dump operation and reads -volume data from a file during a restore operation. If the file does -not exist when the Tape Coordinator attempts to access it to write a dump, the -Tape Coordinator creates it. For a restore operation to succeed, the -file must exist and contain volume data previously written to it by a -backup dump operation. -

    When the value is YES, the backup data file's complete -pathname must appear (instead of a tape drive device name) in the third field -of the corresponding port offset entry in the local -/usr/afs/backup/tapeconfig file. If the field instead refers -to a tape device, dump operations appear to succeed but are -inoperative. It is not possible to restore data that was accidently -dumped to a tape device while the FILE instruction was set to -YES. (In the same way, if the FILE instruction is -set to NO, the tapeconfig entry must refer to an actual -tape device.) -

    Rather than put an actual file pathname in the third field of the -tapeconfig file, however, the recommended configuration is to -create a symbolic link in the /dev directory that points to the -actual file pathname, and record the symbolic link in this field. This -configuration has a couple of advantages: -

      -

    • It makes the device_name portion of the -CFG_device_name, TE_device_name, and -TL_device_name names as short as possible. Because -the symbolic link is in the /dev directory as though it were a tape -device, the device configuration file's name is constructed by stripping -off the entire /dev/ prefix, instead of just the initial -slash. If, for example, the symbolic link is called -/dev/FILE, the device configuration file name is -CFG_FILE, whereas if the actual pathname /var/tmp/FILE -appears in the tapeconfig file, the file's name must be -CFG_var_tmp_FILE. -

    • It provides for a more graceful, and potentially automated, recovery if -the Tape Coordinator cannot write a complete dump into the backup data file -(because the partition housing the backup data file becomes full, for -example). The Tape Coordinator's reaction to this problem is to -invoke the MOUNT script, or to prompt the operator if the -MOUNT instruction does not appear in the configuration file. -
        -

      • If there is a MOUNT routine, the operator can prepare for this -situation by adding a subroutine that changes the symbolic link to point to -another backup data file on a partition where there is space available. -

      • If there is no MOUNT instruction, the prompt enables the -operator manually to change the symbolic link to point to another backup data -file, then press <Return> to signal that the Tape Coordinator -can continue the operation. -
      -
    -

    If the third field in the tapeconfig file names the actual file, -there is no way to recover from exhausting the space on the partition that -houses the backup data file. It is not possible to change the -tapeconfig file in the middle of an operation. -

    When writing to a backup data file, the Tape Coordinator writes data at 16 -KB offsets. If a given block of data (such as the marker that signals -the beginning or end of a volume) does not fill the entire 16 KB, the Tape -Coordinator still skips to the next offset before writing the next -block. In the output of a backup dumpinfo command issued -with the -id option, the value in the Pos column is the -ordinal of the 16-KB offset at which the volume data begins, and so is not -generally only one higher than the position number on the previous line, as it -is for dumps to tape. - -

    The MOUNT Instruction -

    The MOUNT instruction takes a pathname as its argument, in the -following format: -

       
    -   MOUNT filename
    -   
    -
    -

    The referenced executable file must reside on the local disk and contain a -shell script or program that directs an automated tape device, such as a -jukebox or stacker, to mount a tape (insert it into the tape reader). -The operator must write the routine to invoke the mount command specified by -the device's manufacturer; AFS does not include any scripts, -although an example appears in the following Examples -section. The script or program inherits the Tape Coordinator's AFS -authentication status. -

    When the Tape Coordinator needs to mount a tape, it checks the -configuration file for a MOUNT instruction. If there is no -MOUNT instruction, the Tape Coordinator prompts the operator to -insert a tape before it attempts to open the tape device. If there is a -MOUNT instruction, the Tape Coordinator executes the routine in the -referenced file. The routine invoked by the MOUNT -instruction inherits the local identity (UNIX UID) and AFS tokens of the -butc command's issuer. -

    There is an exception to this sequence: if the AUTOQUERY -NO instruction appears in the configuration file, or the --noautoquery flag was included on the butc command, then -the Tape Coordinator assumes that the operator has already inserted the first -tape needed for a given operation. It attempts to read the tape -immediately, and only checks for the MOUNT instruction or prompts -the operator if the tape is missing or is not the required one. -

    When the Tape Coordinator invokes the routine indicated by the -MOUNT instruction, it passes the following parameters to the -routine in the indicated order: -

      -

    1. The tape device or backup data file's pathname, as recorded in the -/usr/afs/backup/tapeconfig file. -

    2. The tape operation, which (except for the exceptions noted in the -following list) matches the backup command operation code used to -initiate the operation: -
        -

      • appenddump (when a backup dump command includes the --append flag) -

      • dump (when a backup dump command does not include -the -append flag) -

      • labeltape -

      • readlabel -

      • restore (for a backup diskrestore, backup -volrestore, or backup volsetrestore command) -

      • restoredb -

      • savedb -

      • scantape -
      -

    3. The number of times the Tape Coordinator has attempted to open the tape -device or backup data file. If the open attempt returns an error, the -Tape Coordinator increments this value by one and again invokes the -MOUNT instruction. -

    4. The tape name. For some operations, the Tape Coordinator passes the -string none, because it does not know the tape name (when running -the backup scantape or backup readlabel, for example), -or because the tape does not necessarily have a name (when running the -backup labeltape command, for example). -

    5. The tape ID recorded in the Backup Database. As with the tape name, -the Backup System passes the string none for operations where it -does not know the tape ID or the tape does not necessarily have an ID. -
    -

    The routine invoked by the MOUNT instruction must return an exit -code to the Tape Coordinator: -

      -

    • Code 0 (zero) indicates that the routine successfully mounted -the tape. The Tape Coordinator continues the backup operation. -If the routine invoked by the MOUNT instruction does not return -this exit code, the Tape Coordinator never calls the UNMOUNT -instruction. -

    • Code 1 (one) indicates that the routine failed to mount the -tape. The Tape Coordinator terminates the operation. -

    • Any other code indicates that the routine was not able to access the -correct tape. The Tape Coordinator prompts the operator to insert the -correct tape. -
    -

    If the backup command was issued in interactive mode and the -operator issues the (backup) kill command while the -MOUNT routine is running, the Tape Coordinator passes the -termination signal to the routine; the entire operation -terminates. - -

    The NAME_CHECK Instruction -

    The NAME_CHECK instruction takes a boolean value as its -argument, in the following format: -

       NAME_CHECK {YES | NO}
    -   
    -
    -

    When the value is YES and the tape does not have a permanent -name, the Tape Coordinator checks the AFS tape name when dumping a volume in -response to the backup dump command. The AFS tape name must -be <NULL> or match the tape name that the backup dump -operation assigns based on the volume set and dump level names. This is -the default behavior if the NAME_CHECK instruction does not appear -in the configuration file. -

    When the value is NO, the Tape Coordinator does not check the -AFS tape name before writing to the tape. -

    The Tape Coordinator always checks that all dumps on the tape are expired, -and refuses to write to a tape that contains unexpired dumps. - -

    The UNMOUNT Instruction -

    The UNMOUNT instruction takes a pathname as its argument, in the -following format: -

       UNMOUNT filename
    -   
    -
    -

    The referenced executable file must reside on the local disk and contain a -shell script or program that directs an automated tape device, such as a -jukebox or stacker, to unmount a tape (remove it from the tape reader). -The operator must write the routine to invoke the unmount command specified by -the device's manufacturer; AFS does not include any scripts, -although an example appears in the following Examples -section. The script or program inherits the Tape Coordinator's AFS -authentication status. -

    After closing a tape device, the Tape Coordinator checks the configuration -file for an UNMOUNT instruction, whether or not the -close operation succeeds. If there is no UNMOUNT -instruction, the Tape Coordinator takes no action, in which case the operator -must take the action necessary to remove the current tape from the drive -before another can be inserted. If there is an UNMOUNT -instruction, the Tape Coordinator executes the referenced file. It -invokes the routine only once, passing in the following parameters: -

      -

    • The tape device pathname (as specified in the -/usr/afs/backup/tapeconfig file) -

    • The tape operation (always unmount) -
    -

    Privilege Required -

    The file is protected by UNIX mode bits. Creating the file requires -the w (write) and x (execute) -permissions on the /usr/afs/backup directory. Editing the -file requires the w (write) permission on the -file. -

    Examples -

    The following example configuration files demonstrate one way to structure -a configuration file for a stacker or backup dump file. The examples -are not necessarily appropriate for a specific cell; if using them as -models, be sure to adapt them to the cell's needs and equipment. -

    Example CFG_device_name File for -Stackers -

    In this example, the administrator creates the following entry for a tape -stacker called stacker0.1 in the -/usr/afs/backup/tapeconfig file. It has port offset -0. -

       2G   5K   /dev/stacker0.1   0
    -   
    -
    -

    The administrator includes the following five lines in the -/usr/afs/backup/CFG_stacker0.1 file. To review the -meaning of each instruction, see the preceding Description -section. -

       MOUNT /usr/afs/backup/stacker0.1
    -   UNMOUNT /usr/afs/backup/stacker0.1
    -   AUTOQUERY NO
    -   ASK NO
    -   NAME_CHECK NO
    -   
    -
    -

    Finally, the administrator writes the following executable routine in the -/usr/afs/backup/stacker0.1 file referenced by the -MOUNT and UNMOUNT instructions in the -CFG_stacker0.1 file. -

       #! /bin/csh -f
    -     
    -   set devicefile = $1
    -   set operation = $2
    -   set tries = $3
    -   set tapename = $4
    -   set tapeid = $5
    -     
    -   set exit_continue = 0
    -   set exit_abort = 1
    -   set exit_interactive = 2
    -    
    -   #--------------------------------------------
    -     
    -   if (${tries} > 1) then
    -      echo "Too many tries"
    -      exit ${exit_interactive}
    -   endif
    -     
    -   if (${operation} == "unmount") then
    -      echo "UnMount: Will leave tape in drive"
    -      exit ${exit_continue}
    -   endif
    -     
    -   if ((${operation} == "dump")     |\
    -       (${operation} == "appenddump")     |\
    -       (${operation} == "savedb"))  then
    -     
    -       stackerCmd_NextTape ${devicefile}
    -       if (${status} != 0)exit${exit_interactive}
    -       echo "Will continue"
    -       exit ${exit_continue}
    -   endif
    -     
    -   if ((${operation} == "labeltape")    |\
    -       (${operation} == "readlabel")) then
    -      echo "Will continue"
    -      exit ${exit_continue}
    -   endif
    -     
    -   echo "Prompt for tape"
    -   exit ${exit_interactive}
    -   
    -
    -

    This routine uses two of the parameters passed to it by the Backup -System: tries and operation. It follows the -recommended practice of prompting for a tape if the value of the -tries parameter exceeds one, because that implies that the stacker -is out of tapes. -

    For a backup dump or backup savedb operation, the -routine calls the example stackerCmd_NextTape function provided by -the stacker's manufacturer. Note that the final lines in the file -return the exit code that prompts the operator to insert a tape; these -lines are invoked when either the stacker cannot load a tape or a the -operation being performed is not one of those explicitly mentioned in the file -(such as a restore operation). -

    Example CFG_device_name File for Dumping to a -Backup Data File -

    In this example, the administrator creates the following entry for a backup -data file called HSM_device in the -/usr/afs/backup/tapeconfig file. It has port offset -20. -

       1G   0K   /dev/HSM_device   20
    -   
    -
    -

    The administrator includes the following lines in the -/usr/afs/backup/CFG_HSM_device file. To review the meaning -of each instruction, see the preceding Description section. -

       MOUNT /usr/afs/backup/file
    -   FILE YES
    -   ASK NO
    -   
    -
    -

    Finally, the administrator writes the following executable routine in the -/usr/afs/backup/file file referenced by the MOUNT -instruction in the CFG_HSM_device file, to control how the Tape -Coordinator handles the file. -

       #! /bin/csh -f
    -   set devicefile = $1
    -   set operation = $2
    -   set tries = $3
    -   set tapename = $4
    -   set tapeid = $5
    -     
    -   set exit_continue = 0
    -   set exit_abort = 1
    -   set exit_interactive = 2
    -     
    -   #--------------------------------------------
    -     
    -   if (${tries} > 1) then
    -      echo "Too many tries"
    -      exit ${exit_interactive}
    -   endif
    -     
    -   if (${operation} == "labeltape") then
    -      echo "Won't label a tape/file"
    -      exit ${exit_abort}
    -   endif
    -     
    -   if ((${operation} == "dump")   |\
    -       (${operation} == "appenddump")   |\
    -       (${operation} == "restore")   |\
    -       (${operation} == "savedb")    |\
    -       (${operation} == "restoredb")) then
    -     
    -      /bin/rm -f ${devicefile}
    -      /bin/ln -s /hsm/${tapename}_${tapeid} ${devicefile}
    -      if (${status} != 0) exit ${exit_abort}
    -   endif
    -     
    -   exit ${exit_continue}
    -   
    -
    -

    Like the example routine for a tape stacker, this routine uses the -tries and operation parameters passed to it by the -Backup System. The tries parameter tracks how many times the -Tape Coordinator has attempted to access the file. A value greater than -one indicates that the Tape Coordinator cannot access it, and the routine -returns exit code 2 (exit_interactive), which results in a prompt -for the operator to load a tape. The operator can use this opportunity -to change the name of the backup data file specified in the -tapeconfig file. -

    The primary function of this routine is to establish a link between the -device file and the file to be dumped or restored. When the Tape -Coordinator is executing a backup dump, backup restore, -backup savedb, or backup restoredb operation, the -routine invokes the UNIX ln -s command to create a symbolic link -from the backup data file named in the tapeconfig file to the -actual file to use (this is the recommended method). It uses the value -of the tapename and tapeid parameters to construct the -file name. -

    Related Information -

    tapeconfig -

    backup diskrestore -

    backup dump -

    backup restoredb -

    backup savedb -

    backup volrestore -

    backup volsetrestore -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf019.htm b/doc/html/AdminReference/auarf019.htm deleted file mode 100644 index 643824915..000000000 --- a/doc/html/AdminReference/auarf019.htm +++ /dev/null @@ -1,120 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    CellServDB (client version)

    -

    Purpose - - - - - - - - -

    Lists the database server machines in all cells accessible from the machine -

    Description -

    The client version of the CellServDB file lists the database -server machines in the local cell and any foreign cell that is to be -accessible from the local client machine. Database server machines run -the Authentication Server, Backup Server, Protection Server, and Volume -Location (VL) Server (the kaserver, buserver, -ptserver, and vlserver) processes, which maintain the -cell's administrative AFS databases. -

    The Cache Manager and other processes running on a client machine use the -list of a cell's database server machines when performing several common -functions, including: -

      -

    • Fetching files. The Cache Manager contacts the VL Server to learn -the location of the volume containing a requested file or directory. -

    • Authenticating users. Client-side authentication programs (such as -an AFS-modified login utility or the klog command interpreter) -contact the Authentication Server to obtain a server ticket, which the AFS -server processes accept as proof that the user is authenticated. -

    • Creating protection groups. The pts command interpreter -contacts the Protection Server when users create protection groups or request -information from the Protection Database. -
    -

    The Cache Manager reads the CellServDB file into kernel memory -as it initializes, and not again until the machine next reboots. To -enable users on the local machine to continue accessing the cell correctly, -update the file whenever a database server machine is added to or removed from -a cell. To update the kernel-resident list of database server machines -without rebooting, use the fs newcell command. -

    The CellServDB file is in ASCII format and must reside in the -/usr/vice/etc directory on each AFS client machine. Use a -text editor to create and maintain it. Each cell's entry must have -the following format: -

      -

    • The first line begins at the left margin with the greater-than character -(>), followed immediately by the cell's name without an -intervening space. Optionally, a comment can follow any number of -spaces and a number sign (#), perhaps to identify the organization -associated with the cell. -

    • Each subsequent line in the entry identifies one of the cell's -database server machines, with the indicated information in order: -
        -

      • The database server machine's IP address in dotted-decimal -format. -

      • One or more spaces. -

      • A number sign (#), followed by the machine's fully -qualified hostname without an intervening space. This number sign does -not indicate that the hostname is a comment. It is a required -field. -
      -
    -

    No extra blank lines or newline characters are allowed in the file, even -after the last entry. Their presence can prevent the Cache Manager from -reading the file into kernel memory, resulting in an error message. -

    The AFS Product Support group maintains a list of the database server -machines in all cells that have registered themselves as receptive to access -from foreign cells. When a cell's administrators change its -database server machines, it is customary to register the change with the AFS -Product Support group for inclusion in this file. The file conforms to -the required CellServDB format, and so is a suitable basis for the -CellServDB file on a client machine. Contact the AFS Product -Support group for directions on accessing the file. -

    The client version of the CellServDB file is distinct from the -server version, which resides in the /usr/afs/etc directory on each -AFS server machine. The client version lists the database server -machines in every AFS cell that the cell administrator wants the -machine's users to be able to access, whereas the server version lists -only the local cell's database server machines. -

    Examples -

    The following example shows entries for two cells in a client -CellServDB file and illustrates the required format. -

       >abc.com        # ABC Corporation
    -   192.12.105.2	        #db1.abc.com
    -   192.12.105.3	        #db2.abc.com
    -   192.12.107.3	        #db3.abc.com
    -   >test.abc.com   # ABC Corporation Test Cell
    -   192.12.108.57        #testdb1.abc.com
    -   192.12.108.55        #testdb2.abc.com
    -   
    -
    -

    Related Information -

    CellServDB (server version) -

    fs newcell -

    klog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf020.htm b/doc/html/AdminReference/auarf020.htm deleted file mode 100644 index f627a2b11..000000000 --- a/doc/html/AdminReference/auarf020.htm +++ /dev/null @@ -1,91 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    CellServDB (server version)

    -

    Purpose - - - - - - - - -

    Lists the local cell's database server machines -

    Description -

    The server version of the CellServDB file lists the local -cell's database server machines. These machines run the -Authentication Server, Backup Server, Protection Server, and Volume Location -(VL) Server (the kaserver, buserver, -ptserver, and vlserver) processes, which maintain the -cell's administrative AFS databases. The initial version of the -file is created with the bos setcellname command during the -installation of the cell's server machine, which is automatically -recorded as the cell's first database server machine. When adding -or removing database server machines, be sure to update this file -appropriately. It must reside in the /usr/afs/etc directory -on each AFS server machine. -

    The database server processes consult the CellServDB file to -learn about their peers, with which they must maintain constant connections in -order to coordinate replication of changes across the multiple copies of each -database. The other AFS server processes consult the file to learn -which machines to contact for information from the databases when they need -it. -

    Although the CellServDB file is in ASCII format, do not use a -text editor to alter it. Instead always use the appropriate commands -from the bos command suite: -

      -

    • The bos addhost command to add a machine to the file -

    • The bos listhosts command to display the list of machines from -the file -

    • The bos removehost command to remove a machine from the file -
    -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is customary to edit only the copy of the file stored on the system control -machine. In cells that run the international version of AFS, edit the -file on each server machine individually. For instructions on adding -and removing database server machine, see the IBM AFS Quick -Beginnings chapter on installing additional server machines. -

    The server version of the CellServDB file is distinct from the -client version, which resides in the /usr/vice/etc directory on -each AFS client machine. The server version lists only the local -cell's database server machines, whereas the client version lists the -database server machines in every AFS cell that the cell administrator wants -the machine's users to be able to access. -

    Related Information -

    CellServDB (client version) -

    bos addhost -

    bos listhosts -

    bos removehost -

    bos setcellname -

    buserver -

    kaserver -

    ptserver -

    vlserver -

    upclient -

    upserver -

    IBM AFS Quick Beginnings -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf021.htm b/doc/html/AdminReference/auarf021.htm deleted file mode 100644 index afdfa2f21..000000000 --- a/doc/html/AdminReference/auarf021.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    FileLog

    -

    Purpose - - - -

    Traces File Server operations -

    Description -

    The FileLog file records a trace of File Server -(fileserver process) operations on the local machine and describes -any error conditions it encounters. -

    If the FileLog file does not already exist in the -/usr/afs/logs directory when the File Server starts, the server -process creates it and writes initial start-up messages to it. If there -is an existing file, the File Server renames it to -FileLog.old, overwriting the existing -FileLog.old file if it exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log onto the file -server machine and use a text editor or a file display command such as the -UNIX cat command. By default, the mode bits on the -FileLog file grant the required r (read) -permission to all users. -

    The File Server records operations only as it completes them, and cannot -recover from failures by reviewing the file. The log contents are -useful for administrative evaluation of process failures and other -problems. -

    Related Information -

    UserList -

    bos getlog -

    fileserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf022.htm b/doc/html/AdminReference/auarf022.htm deleted file mode 100644 index d7672ecf6..000000000 --- a/doc/html/AdminReference/auarf022.htm +++ /dev/null @@ -1,49 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    FORCESALVAGE

    -

    Purpose - - - -

    Forces salvage of entire partition -

    Description -

    The FORCESALVAGE file, if present on an AFS server partition -(that is, in a /vicep directory), signals that the Salvager must -salvage the entire partition. The AFS-modified version of the -fsck program creates the empty (zero-length) file when it discovers -corruption on the partition. The Salvager removes the file when it -completes the salvage operation. -

    When the File Server detects the presence of the file on a partition on -which it is attaching volumes, it stops, detaches any volumes that are already -attached, and exits after recording a message in the -/usr/afs/logs/FileLog file. The Bos Server then invokes the -Salvager to salvage the partition. -

    Related Information -

    FileLog -

    bosserver -

    fileserver -

    salvager -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf023.htm b/doc/html/AdminReference/auarf023.htm deleted file mode 100644 index 5a453fc55..000000000 --- a/doc/html/AdminReference/auarf023.htm +++ /dev/null @@ -1,73 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    KeyFile

    -

    Purpose - - - - - - - - -

    Defines AFS server encryption keys -

    Description -

    The KeyFile file defines the server encryption keys that the AFS -server processes running on the machine use to decrypt the tickets presented -by clients during the mutual authentication process. AFS server -processes perform privileged actions only for clients that possess a ticket -encrypted with one of the keys from the file. The file must reside in -the /usr/afs/etc directory on every server machine. For more -detailed information on mutual authentication and server encryption keys, see -the IBM AFS Administration Guide. -

    Each key has a corresponding a key version number that distinguishes it -from the other keys. The tickets that clients present are also marked -with a key version number to tell the server process which key to use to -decrypt it. The KeyFile file must always include a key with -the same key version number and contents as the key currently listed for the -afs entry in the Authentication Database. -

    The KeyFile file is in binary format, so always use the -appropriate commands from the bos command suite to administer -it: -

      -

    • The bos addkey command to define a new key -

    • The bos listkeys command to display the keys -

    • The bos removekey command to remove a key from the file -
    -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is customary to edit only the copy of the file stored on the system control -machine. In cells that run the international version of AFS, edit the -file on each server machine individually. -

    Related Information -

    bos addkey -

    bos listkeys -

    bos removekey -

    kas setpassword -

    upclient -

    upserver -

    IBM AFS Administration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf024.htm b/doc/html/AdminReference/auarf024.htm deleted file mode 100644 index cbf443044..000000000 --- a/doc/html/AdminReference/auarf024.htm +++ /dev/null @@ -1,70 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    NetInfo (client version)

    -

    Purpose - - - - - - -

    Defines client machine interfaces to register with the File Server -

    Description -

    The NetInfo file lists the IP addresses of one or more of the -local machine's network interfaces. If it exists in the -/usr/vice/etc directory when the Cache Manager initializes, the -Cache Manager uses its contents as the basis for a list of local -interfaces. Otherwise, the Cache Manager uses the list of interfaces -configured with the operating system. It then removes from the list any -addresses that appear in the /usr/vice/etc/NetRestrict file, if it -exists. The Cache Manager records the resulting list in kernel -memory. The first time it establishes a connection to a File Server, it -registers the list with the File Server. -

    The File Server uses the addresses when it initiates a remote procedure -call (RPC) to the Cache Manager (as opposed to responding to an RPC sent by -the Cache Manager). There are two common circumstances in which the -File Server initiates RPCs: when it breaks callbacks and when it pings -the client machine to verify that the Cache Manager is still -accessible. -

    The NetInfo file is in ASCII format. One of the -machine's IP addresses appears on each line, in dotted decimal -format. The File Server initially uses the address that appears first -in the list. The order of the remaining addresses is not -significant: if an RPC to the first interface fails, the File Server -simultaneously sends RPCs to all of the other interfaces in the list. -Whichever interface replies first is the one to which the File Server then -sends pings and RPCs to break callbacks. -

    To prohibit the Cache Manager absolutely from using one or more addresses, -list them in the NetRestrict file. To display the addresses -the Cache Manager is currently registering with File Servers, use the fs -getclientaddrs command. To replace the current list of interfaces -with a new one between reboots of the client machine, use the fs -setclientaddrs command. -

    Related Information -

    NetRestrict (client version) -

    fs getclientaddrs -

    fs setclientaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf025.htm b/doc/html/AdminReference/auarf025.htm deleted file mode 100644 index 8cbc6cdad..000000000 --- a/doc/html/AdminReference/auarf025.htm +++ /dev/null @@ -1,67 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    NetInfo (server version)

    -

    Purpose - - - - - -

    Defines interfaces that File Server registers in VLDB and Ubik uses for -database server machines -

    Description -

    The NetInfo file, if present in the /usr/afs/local -directory, defines the following: -

      -

    • On a file server machine, the local interfaces that the File Server -(fileserver process) can register in the Volume Location Database -(VLDB) at initialization time -

    • On a database server machine, the local interfaces that the Ubik database -synchronization library uses when communicating with the database server -processes running on other database server machines -
    -

    If the NetInfo file exists when the File Server initializes, the -File Server uses its contents as the basis for a list of interfaces to -register in the VLDB. Otherwise, it uses the list of network interfaces -configured with the operating system. It then removes from the list any -addresses that appear in the /usr/vice/etc/NetRestrict file, if it -exists. The File Server records the resulting list in the -/usr/afs/local/sysid file and registers the interfaces in the -VLDB. The database server processes use a similar procedure when -initializing, to determine which interfaces to use for communication with the -peer processes on other database machines in the cell. -

    The NetInfo file is in ASCII format. One of the -machine's IP addresses appears on each line, in dotted decimal -format. The order of the addresses is not significant. -

    To display the File Server interface addresses registered in the VLDB, use -the vos listaddrs command. -

    Related Information -

    NetRestrict (server version) -

    sysid -

    vldb.DB0 and vldb.DBSYS1 -

    fileserver -

    vos listaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf026.htm b/doc/html/AdminReference/auarf026.htm deleted file mode 100644 index 2c65fc7d0..000000000 --- a/doc/html/AdminReference/auarf026.htm +++ /dev/null @@ -1,60 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    NetRestrict (client version)

    -

    Purpose - - - - - - -

    Defines client interfaces not to register with the File Server -

    Description -

    The NetRestrict file, if present in a client machine's -/usr/vice/etc directory, defines the IP addresses of the interfaces -that the local Cache Manager does not register with a File Server when first -establishing a connection to it. For an explanation of how the File -Server uses the registered interfaces, see the reference page for the client -version of the NetInfo file. -

    As it initializes, the Cache Manager constructs a list of interfaces to -register, from the /usr/vice/etc/NetInfo file if it exists, or from -the list of interfaces configured with the operating system otherwise. -The Cache Manager then removes from the list any addresses that appear in the -NetRestrict file, if it exists. The Cache Manager records -the resulting list in kernel memory. -

    The NetRestrict file is in ASCII format. One IP address -appears on each line, in dotted decimal format. The order of the -addresses is not significant. The value 255 is a wildcard -that represents all possible addresses in that field. For example, the -value 192.12.105.255 indicates that the Cache -Manager does not register any of the addresses in the -192.12.105 subnet. -

    To display the addresses the Cache Manager is currently registering with -File Servers, use the fs getclientaddrs command. -

    Related Information -

    NetInfo (client version) -

    fs getclientaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf027.htm b/doc/html/AdminReference/auarf027.htm deleted file mode 100644 index d8081775e..000000000 --- a/doc/html/AdminReference/auarf027.htm +++ /dev/null @@ -1,71 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    NetRestrict (server version)

    -

    Purpose - - - - - -

    Defines interfaces that File Server does not register in VLDB and Ubik does -not use for database server machines -

    Description -

    The NetRestrict file, if present in the -/usr/afs/local directory, defines the following: -

      -

    • On a file server machine, the local interfaces that the File Server -(fileserver process) does not register in the Volume Location -Database (VLDB) at initialization time -

    • On a database server machine, the local interfaces that the Ubik -synchronization library does not use when communicating with the database -server processes running on other database server machines -
    -

    As it initializes, the File Server constructs a list of interfaces to -register, from the /usr/afs/local/NetInfo file if it exists, or -from the list of interfaces configured with the operating system -otherwise. The File Server then removes from the list any addresses -that appear in the NetRestrict file, if it exists. The File -Server records the resulting list in the /usr/afs/local/sysid file -and registers the interfaces in the VLDB. The database server processes -use a similar procedure when initializing, to determine which interfaces to -use for communication with the peer processes on other database machines in -the cell. -

    The NetRestrict file is in ASCII format. One IP address -appears on each line, in dotted decimal format. The order of the -addresses is not significant. The value 255 is a wildcard -that represents all possible addresses in that field. For example, the -value 192.12.105.255 indicates that the Cache -Manager does not register any of the addresses in the -192.12.105 subnet. -

    To display the File Server interface addresses registered in the VLDB, use -the vos listaddrs command. -

    Related Information -

    NetInfo (server version) -

    sysid -

    vldb.DB0 and vldb.DBSYS1 -

    fileserver -

    vos listaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf028.htm b/doc/html/AdminReference/auarf028.htm deleted file mode 100644 index a8b15342d..000000000 --- a/doc/html/AdminReference/auarf028.htm +++ /dev/null @@ -1,67 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    NoAuth

    -

    Purpose - - - -

    Disables authorization checking -

    Description -

    The NoAuth file, if present in a server machine's -/usr/afs/local directory, indicates to the AFS server processes -running on the machine that it is not necessary to perform authorization -checking. They perform any action for any user who logs into the -machine's local file system or issues a remote command that affects the -machine's AFS server functioning, such as commands from the AFS command -suites. Because failure to check authorization exposes the -machine's AFS server functionality to attack, there are normally only two -circumstances in which the file is present: -

      -

    • During installation of the machine, as instructed in the IBM AFS -Quick Beginnings -

    • During correction of a server encryption key emergency, as discussed in -the IBM AFS Administration Guide -
    -

    In all other circumstances, the absence of the file means that the AFS -server processes perform authorization checking, verifying that the issuer of -a command has the required privilege. -

    Create the file in one of the following ways: -

      -

    • By issuing the bosserver initialization command with the --noauth flag, if the Basic OverSeer (BOS) Server is not already -running -

    • By issuing the bos setauth command with off as the -value for the -authrequired argument, if the BOS Server is already -running -
    -

    To remove the file, issue the bos setauth command with -on as the value for the -authrequired argument. -

    The file's contents, if any, are ignored; an empty (zero-length) -file is effective. -

    Related Information -

    bos setauth -

    bosserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf029.htm b/doc/html/AdminReference/auarf029.htm deleted file mode 100644 index 15d50b5fe..000000000 --- a/doc/html/AdminReference/auarf029.htm +++ /dev/null @@ -1,58 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    SALVAGE.fs

    -

    Purpose - - - - - -

    Triggers salvaging of AFS server partitions -

    Description -

    The SALVAGE.fs file, if present in a file server -machine's /usr/afs/local directory, indicates to the Basic -OverSeer (BOS) Server (bosserver process) that it must invoke the -Salvager (salvager process) during recovery from a failure of the -File Server (fileserver process). -

    The BOS Server creates the zero-length file each time it starts or restarts -the fs process. When the File Server exits normally (for -example, in response to the bos shutdown or bos stop -command), the BOS Server removes the file. However, if the File Server -exits unexpectedly, the file remains in the /usr/afs/local -directory as a signal that the BOS Server must invoke the Salvager process to -repair any file system inconsistencies possibly introduced during the failure, -before restarting the File Server and Volume Server processes. -

    Do not create or remove this file. To invoke the Salvager process -directly, use the bos salvage command or log onto the file server -machine as the local superuser root and issue the -salvager command. -

    Related Information -

    bos salvage -

    bosserver -

    fileserver -

    salvager -

    volserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf030.htm b/doc/html/AdminReference/auarf030.htm deleted file mode 100644 index 85689200e..000000000 --- a/doc/html/AdminReference/auarf030.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    SalvageLog

    -

    Purpose - - - -

    Traces Salvager operations -

    Description -

    The SalvageLog file records a trace of Salvager -(salvager process) operations on the local machine and describes -any error conditions it encounters. -

    If the SalvageLog file does not already exist in the -/usr/afs/logs directory when the Salvager starts, the process -creates it and writes initial start-up messages to it. If there is an -existing file, the Salvager renames is to SalvageLog.old, -overwriting the existing SalvageLog.old file if it -exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log onto the file -server machine and use a text editor or a file display command such as the -UNIX cat command. By default, the mode bits on the -SalvageLog file grant the required r (read) -permission to all users. -

    The Salvager records operations only as it completes them, and cannot -recover from failures by reviewing the file. The log contents are -useful for administrative evaluation of process failures and other -problems. -

    Related Information -

    UserList -

    bos getlog -

    salvager -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf031.htm b/doc/html/AdminReference/auarf031.htm deleted file mode 100644 index 26304b473..000000000 --- a/doc/html/AdminReference/auarf031.htm +++ /dev/null @@ -1,59 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    TE_device_name

    -

    Purpose -

    Logs error messages from the Tape Coordinator process -

    Description -

    The TE_device_name file logs error messages generated -by the Backup System Tape Coordinator (butc process) that controls -the tape device or backup data file indicated by device_name. -

    As the Tape Coordinator initializes, it creates the file in ASCII format in -the /usr/afs/backup directory. If there is an existing file, -the Tape Coordinator renames it to -TE_device_name.old, overwriting the -existing TE_device_name.old file if it -exists. -

    For a tape device, the Tape Coordinator derives the variable -device_name portion of the filename from the device pathname listed -in the local /usr/afs/backup/tapeconfig file, by stripping off the -initial /dev/ string and replacing any other slashes in the name -with underscores. For example, the filename for a device called -/dev/rmt/4m is TE_rmt_4m. Similarly, for a backup -data file the Tape Coordinator strips off the initial slash (/) and replaces -any other slashes in the name with underscores. For example, the -filename for a backup data file called /var/tmp/FILE is -TE_var_tmp_FILE. -

    The messages in the file describe the error and warning conditions the Tape -Coordinator encounters as it operates. For instance, a message can list -the volumes that are inaccessible during a dump operation, or warn that the -Tape Coordinator is overwriting a tape or backup data file. The -messages also appear in the /usr/afs/backup/TL_device_name -file, which traces most of the Tape Coordinator's actions. -

    Related Information -

    TL_device_name -

    tapeconfig -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf032.htm b/doc/html/AdminReference/auarf032.htm deleted file mode 100644 index 7fc27a17d..000000000 --- a/doc/html/AdminReference/auarf032.htm +++ /dev/null @@ -1,79 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    ThisCell (client version)

    -

    Purpose - - - - - -

    Defines client machine's cell membership -

    Description -

    The client version of the ThisCell file defines the complete -Internet domain-style name (for example, abc.com) of the -cell to which the local client machine belongs. It must reside in the -/usr/vice/etc directory on every AFS client machine. To -change a client machine's cell membership, edit the file and reboot the -machine. -

    The file is in ASCII format and contains a character string on a single -line. The IBM AFS Quick Beginnings instructs the -administrator to create it during the installation of each client -machine. -

    The client machine's cell membership determines three defaults -important to its functioning: -

      -

    • The cell in which the machine's users authenticate by default. -The effect is two-fold: -
        -

      • The AFS-modified login utilities and the klog command -interpreter contact an Authentication Server in the cell named in the -ThisCell file (unless -cell argument to the -klog command specifies an alternate cell). -

      • The command interpreters combine the cell name with the password that the -user provides, generating an encryption key from the combination. For -authentication to succeed, both the cell name and password must match the ones -used to generate the user's encryption key stored in the Authentication -Database. -
      -

    • The cell the Cache Manager considers its local, or home, cell. By -default, the Cache Manager allows programs that reside in its home cell to run -with setuid permission, but not programs from foreign cells. For more -details, see the fs getcellstatus and fs setcell -reference pages. -

    • Which AFS server processes the local AFS command interpreters contact by -default as they execute commands issued on the machine. -
    -

    The client version of the ThisCell file is distinct from the -server version, which resides in the /usr/afs/etc directory on each -AFS server machine. If a server machine also runs as a client, it is -acceptable for the server and client versions of the file on the same machine -to name different cells. However, the behavior that results from this -configuration can be more confusing than useful. -

    Related Information -

    ThisCell (server version) -

    fs getcellstatus -

    fs setcell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf033.htm b/doc/html/AdminReference/auarf033.htm deleted file mode 100644 index 38902a8d2..000000000 --- a/doc/html/AdminReference/auarf033.htm +++ /dev/null @@ -1,61 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    ThisCell (server version)

    -

    Purpose - - - - - -

    Defines server machine's cell membership -

    Description -

    The server version of the ThisCell file defines the complete -Internet domain-style name (for example, abc.com) of the -cell to which the server machine belongs. It must reside in the -/usr/afs/etc directory on every AFS server machine. -

    The file is in ASCII format and contains a character string on a single -line. The initial version of the file is created with the bos -setcellname command during the installation of the cell's first -file server machine, and the IBM AFS Quick Beginnings includes -instructions for copying it over to additional server machine during their -installation. -

    The only reason to edit the file is as part of changing the cell's -name, which is strongly discouraged because of the large number of -configuration changes involved. In particular, changing the cell name -requires rebuilding the entire Authentication Database, because the -Authentication Server combines the cell name it finds in this file with each -user and server password and converts the combination into an encryption key -before recording it in the Database. -

    The server version of the ThisCell file is distinct from the -client version, which resides in the /usr/vice/etc directory on -each AFS client machine. If a server machine also runs as a client, it -is acceptable for the server and client versions of the file on the same -machine to name different cells. However, the behavior that results -from this configuration can be more confusing than useful. -

    Related Information -

    ThisCell (client version) -

    bos setcellname -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf034.htm b/doc/html/AdminReference/auarf034.htm deleted file mode 100644 index c737918fd..000000000 --- a/doc/html/AdminReference/auarf034.htm +++ /dev/null @@ -1,55 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    TL_device_name

    -

    Purpose -

    Traces Tape Coordinator operations and logs errors -

    Description -

    The TL_device_name file logs the actions performed by -the Backup System Tape Coordinator (butc process) that controls the -tape device or backup data file indicated by device_name. It -also records the same error and warning messages written to the -TE_device_name file. -

    As the Tape Coordinator initializes, it creates the file in ASCII format in -the /usr/afs/backup directory. If there is an existing file, -the Tape Coordinator renames it to -TL_device_name.old, overwriting the -existing TL_device_name.old file if it -exists. -

    For a tape device, the Tape Coordinator derives the variable -device_name portion of the filename from the device pathname listed -in the local /usr/afs/backup/tapeconfig file, by stripping off the -initial /dev/ string and replacing any other slashes in the name -with underscores. For example, the filename for a device called -/dev/rmt/4m is TL_rmt_4m. Similarly, for a backup -data file the Tape Coordinator strips off the initial slash (/) and replaces -any other slashes in the name with underscores. For example, the -filename for a backup data file called /var/tmp/FILE is -TL_var_tmp_FILE. -

    Related Information -

    TE_device_name -

    tapeconfig -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf035.htm b/doc/html/AdminReference/auarf035.htm deleted file mode 100644 index 3f7fcd29d..000000000 --- a/doc/html/AdminReference/auarf035.htm +++ /dev/null @@ -1,59 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    UserList

    -

    Purpose - - -

    Defines privileged administrators -

    Description -

    The UserList file lists the AFS usernames of the system -administrators authorized to issue privileged bos, vos, -and backup commands that affect the local server machine or the -volumes housed on it. It must reside in the /usr/afs/etc -directory on every server machine. -

    Although the UserList file is in ASCII format, do not use a text -editor to alter it. Instead always use the appropriate commands from -the bos command suite: -

      -

    • The bos adduser command to add a user to the file -

    • The bos listusers command to display the contents of the file -

    • The bos removeuser command to remove a user from the file -
    -

    Although it is theoretically possible to list different administrators in -the UserList files on different server machines, doing so can cause -unanticipated authorization failures and is not recommended. In cells -that run the United States edition of AFS and use the Update Server to -distribute the contents of the /usr/afs/etc directory, it is -customary to edit only the copy of the file stored on the system control -machine. In cells that run the international version of AFS, edit the -file on each server machine individually. -

    Related Information -

    bos adduser -

    bos listusers -

    bos removeuser -

    upclient -

    upserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf036.htm b/doc/html/AdminReference/auarf036.htm deleted file mode 100644 index 2c207df80..000000000 --- a/doc/html/AdminReference/auarf036.htm +++ /dev/null @@ -1,94 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    Vn

    -

    Purpose - - - -

    Houses a chunk of AFS data in the disk cache -

    Description -

    A Vn file can store a chunk of cached AFS data on a -client machine that is using a disk cache. As the Cache Manager -initializes, it verifies that the local disk cache directory houses a number -of Vn files equal to the largest of the following: -

      -

    • 100 -

    • One and a half times the result of dividing the cache size by the chunk -size (cachesize/chunksize * 1.5) -

    • The result of dividing the cache size by 10 MB (10,240) -
    -

    The Cache Manager determines the cache size from the -blocks -argument to the afsd command, or if the argument is not included, -from the third field of the /usr/vice/etc/cacheinfo file. -The default chunk size is 64 KB; use the -chunksize argument -to the afsd command to override it. To override the default -number of chunks resulting from the calculation, include the -files -argument to the afsd command. The afsd reference -page describes the restrictions on acceptable values for each of the -arguments. -

    If the disk cache directory houses fewer Vn files than -necessary, the Cache Manager creates new ones, assigning each a unique integer -n that distinguishes it from the other files; the integers start -with 1 and increment by one for each Vn file -created. The Cache Manager removes files if there are more than -necessary. The Cache Manager also adds and removes -Vn files in response to the fs setcachesize -command, which can be used to alter the cache size between reboots. -

    The standard disk cache directory name is /usr/vice/cache, but -it is acceptable to use a directory on a partition with more available -space. To designate a different directory, change the value in the -second field of the /usr/vice/etc/cacheinfo file before issuing the -afsd command, or include the -cachedir argument to the -afsd command. -

    Vn files expand and contract to accommodate the size of -the AFS directory listing or file they temporarily house. As mentioned, -by default each Vn file holds up to 64 KB (65,536 bytes) -of a cached AFS element. AFS elements larger than 64 KB are divided -among multiple Vn files. If an element is smaller -than 64 KB, the Vn file expands only to the required -size. A Vn file accommodates only a single element, -so if there many small cached elements, it is possible to exhaust the -available Vn files without reaching the maximum cache -size. -

    Cautions -

    Editing or removing a Vn file can cause a kernel -panic. To alter cache size (and thus the number of -Vn files) between reboots, use the fs -setcachesize command. Alternatively, alter the value of the --blocks, -files or -chunksize arguments to -the afsd command invoked in the machine's AFS initialization -file, and reboot. To refresh the contents of one or more -Vn files, use the fs flush or fs -flushvolume command. If a Vn file is -accidentally modified or deleted, rebooting the machine usually restores -normal performance. -

    Related Information -

    cacheinfo -

    afsd -

    fs flush -

    fs flushvolume -

    fs setcachesize -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf037.htm b/doc/html/AdminReference/auarf037.htm deleted file mode 100644 index db6d6d7ab..000000000 --- a/doc/html/AdminReference/auarf037.htm +++ /dev/null @@ -1,46 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    Vvol_ID.vol

    -

    Purpose - - - - -

    Represents an AFS volume -

    Description -

    The Vvol_ID.vol file is the header -file for the AFS volume with volume ID vol_ID. There is one -such file for each volume stored on an AFS server (/vicep) -partition. The header file stores information that includes the -volume's name, ID number, type (read/write, read-only, or backup), size -and status (online, offline, or busy). To display information from the -header file, use the vos listvol or vos examine -command. -

    The header file points to, but does not contain, the actual data in the -volume. It is not possible to access the AFS data except by mounting -the volume in the AFS filespace and reading its contents through the Cache -Manager. -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf038.htm b/doc/html/AdminReference/auarf038.htm deleted file mode 100644 index 8f9a89387..000000000 --- a/doc/html/AdminReference/auarf038.htm +++ /dev/null @@ -1,75 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    VLLog

    -

    Purpose - - - -

    Traces Volume Location Server operations -

    Description -

    The VLLog file records a trace of Volume Location (VL) Server -(vlserver process) operations on the local machine and describes -any error conditions it encounters. -

    If the VLLog file does not already exist in the -/usr/afs/logs directory when the VL Server starts, the server -process creates it and writes initial start-up messages to it. If there -is an existing file, the VL Server renames it to VLLog.old, -overwriting the existing VLLog.old file if it exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log onto the server -machine and use a text editor or a file display command such as the UNIX -cat command. By default, the mode bits on the -VLLog file grant the required r (read) -permission to all users. -

    The VL Server records operations only as it completes them, and cannot -recover from failures by reviewing the file. The log contents are -useful for administrative evaluation of process failures and other -problems. -

    The VL Server can record messages at three levels of detail. By -default, it records only very rudimentary messages. To increase logging -to the first level of detail, issue the following command while logged onto -the database server machine as the local superuser root. -

       # kill -TSTP vlserver_pid
    -   
    -
    -

    where vlserver_pid is the process ID of the vlserver -process, as reported in the output from the standard UNIX ps -command. To increase to the second and third levels of detail, repeat -the command. -

    To disable logging, issue the following command. -

     
    -   # kill -HUP vlserver_pid
    -   
    -
    -

    To decrease the level of logging, first completely disable it and then -issue the kill -TSTP command as many times as necessary to reach -the desired level. -

    Related Information -

    UserList -

    bos getlog -

    vlserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf039.htm b/doc/html/AdminReference/auarf039.htm deleted file mode 100644 index 818a7b40a..000000000 --- a/doc/html/AdminReference/auarf039.htm +++ /dev/null @@ -1,57 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    VolserLog

    -

    Purpose - - - -

    Traces Volume Server operations -

    Description -

    The VolserLog file records a trace of Volume Server -(volserver process) operations on the local machine and describes -any error conditions it encounters. -

    If the VolserLog file does not already exist in the -/usr/afs/logs directory when the Volume Server starts, the server -process creates it and writes initial start-up messages to it. If there -is an existing file, the Volume Server renames it to -VolserLog.old, overwriting the existing -VolserLog.old file if it exists. -

    The file is in ASCII format. Administrators listed in the -/usr/afs/etc/UserList file can use the bos getlog -command to display its contents. Alternatively, log onto the file -server machine and use a text editor or a file display command such as the -UNIX cat command. By default, the mode bits on the -VolserLog file grant the required r (read) -permission to all users. -

    The Volume Server records operations only as it completes them, and so -cannot recover from failures by reviewing the file. The log contents -are useful for administrative evaluation of process failures and other -problems. -

    Related Information -

    UserList -

    bos getlog -

    volserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf040.htm b/doc/html/AdminReference/auarf040.htm deleted file mode 100644 index 9ca5624be..000000000 --- a/doc/html/AdminReference/auarf040.htm +++ /dev/null @@ -1,56 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    VolumeItems

    -

    Purpose - - - - -

    Records location mappings for volumes accessed by a Cache Manager using a -disk cache -

    Description -

    The VolumeItems file records the mapping between volume name and -mount point for each volume that the Cache Manager has accessed since it -initialized on a client machine using a disk cache. The Cache Manager -uses the mappings to respond correctly to queries about the current working -directory, which can come from the operating system or commands such as the -UNIX pwd command. -

    As it initializes, the Cache Manager creates the binary-format -VolumeItems file in the local disk cache directory, and it must -always remain there. The conventional directory name is -/usr/vice/cache. -

    Cautions -

    Editing or removing the VolumeItems file can cause a kernel -panic. To refresh the contents of the file, instead use the fs -checkvolumes command. If the VolumeItems file is -accidentally modified or deleted, rebooting the machine usually restores -normal performance. -

    Related Information -

    CacheItems -

    cacheinfo -

    afsd -

    fs checkvolumes -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf041.htm b/doc/html/AdminReference/auarf041.htm deleted file mode 100644 index ddfd57e0e..000000000 --- a/doc/html/AdminReference/auarf041.htm +++ /dev/null @@ -1,43 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    afszcm.cat

    -

    Purpose - - -

    Error message catalog for debugging the Cache Manager -

    Description -

    The afszcm.cat file is a message catalog for the Cache -Manager. The fstrace dump command interpreter uses it in -conjunction with the standard UNIX catalog utilities to translate Cache -Manager operation codes into character strings as it writes traces in the -fstrace trace log, which makes the log more readable. -

    The conventional location for the file is the /usr/vice/etc/C/ -directory. It can be placed in another directory if the NLSPATH and -LANG environment variables are set appropriately. -

    Related Information -

    afsd -

    fstrace dump -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf042.htm b/doc/html/AdminReference/auarf042.htm deleted file mode 100644 index e94781652..000000000 --- a/doc/html/AdminReference/auarf042.htm +++ /dev/null @@ -1,59 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bdb.DB0 and bdb.DBSYS1

    -

    Purpose - - - - - -

    Contain the Backup Database and associated log -

    Description -

    The bdb.DB0 file contains the Backup Database, which -records configuration information used by the AFS Backup System along with -cross-indexed records of the tapes created and volumes dumped using the Backup -System commands. -

    The bdb.DBSYS1 file is a log file in which the Backup -Server (buserver process) logs each database operation before -performing it. When an operation is interrupted, the Backup Server -replays the log to complete the operation. -

    Both files are in binary format and reside in the /usr/afs/db -directory on each database server machine that runs the Backup Server. -When the Backup Server starts or restarts on a given machine, it establishes a -connection with its peers and verifies that its copy of the -bdb.DB0 file matches the copy on the other database server -machines. If not, the Backup Servers use AFS's distributed -database technology, Ubik, to distribute to all of the machines the copy of -the database with the highest version number. -

    Use the commands in the backup suite to administer the Backup -Database. It is advisable to create a backup copy of the -bdb.DB0 file on tape on a regular basis, using the UNIX -tar command or another local disk backup utility. -

    Related Information -

    backup -

    backup savedb -

    buserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf043.htm b/doc/html/AdminReference/auarf043.htm deleted file mode 100644 index db56a71a7..000000000 --- a/doc/html/AdminReference/auarf043.htm +++ /dev/null @@ -1,79 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    cacheinfo

    -

    Purpose -

    Defines configuration parameters for the Cache Manager -

    Description -

    The cacheinfo file defines configuration parameters for the -Cache Manager, which reads the file as it initializes. -

    The file contains a single line of ASCII text and must reside in the -/usr/vice/etc directory. Use a text editor to create it -during initial configuration of the client machine; the required format -is as follows: -

       mount_dir:cache_dir:cache_size
    -    
    -
    -

    where -

    -

    mount_dir -
    Names the local disk directory at which the Cache Manager mounts the AFS -namespace. It must exist before the afsd program -runs. The conventional value is /afs. Using any other -value prevents traversal of pathnames that begin with /afs (such as -pathnames to files in foreign cells that do use the conventional name). -The -mountdir argument to the afsd command overrides -this value. -

    cache_dir -
    Names the local disk directory to use as a cache. It must exist -before the afsd program runs. The standard value is -/usr/vice/cache, but it is acceptable to substitute a directory on -a partition with more available space. Although the Cache Manager -ignores this field when configuring a memory cache, a value must always appear -in it. The -cachedir argument to the afsd command -overrides this value. -

    cache_size -
    Specifies the cache size as a number of 1-kilobyte blocks. Larger -caches generally yield better performance, but a disk cache must not exceed -90% of the space available on the cache partition (85% for AIX systems), and a -memory cache must use no more than 25% of available machine memory. -

    The -blocks argument to the afsd command overrides -this value. To reset cache size without rebooting on a machine that -uses disk caching, use the fs setcachesize command. To -display the current size of a disk or memory cache between reboots, use the -fs getcacheparms command. -

    -

    Examples -

    The following example cacheinfo file mounts the AFS namespace at -/afs, establishes a disk cache in the /usr/vice/cache -directory, and defines cache size as 50,000 1-kilobyte blocks. -

       /afs:/usr/vice/cache:50000
    -   
    -
    -

    Related Information -

    afsd -

    fs getcacheparms -

    fs setcachesize -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf044.htm b/doc/html/AdminReference/auarf044.htm deleted file mode 100644 index 64e4abaad..000000000 --- a/doc/html/AdminReference/auarf044.htm +++ /dev/null @@ -1,82 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fms.log

    -

    Purpose -

    Records output from the fms command -

    Description -

    The fms.log file records the output generated by the -fms command. The output includes two numbers that can appear -in a tape device's entry in the /usr/afs/backup/tapeconfig -file on the Tape Coordinator machine to which the tape device is -attached: -

      -

    • The capacity in bytes of the tape in the device -

    • The size in bytes of the end-of-file (EOF) marks (often referred to simply -as filemarks) that the tape device writes -
    -

    When transferring the numbers recorded in this file to the -tapeconfig file, adjust them as specified on the reference page for -the tapeconfig file, to improve Tape Coordinator performance during -dump operations. -

    If the fms.log file does not already exist in the current -working directory, the fms command interpreter creates it. -In this case, the directory's mode bits must grant the rwx -(read, write, and execute) permissions to the -issuer of the command. If there is an existing file, the command -interpreter overwrites it, so the file's mode bits need to grant only the -w permission to the issuer of the fms command. -The fms command interpreter also writes similar information to the -standard output stream as it runs. -

    The file is in ASCII format. To display its contents, log onto the -client machine and use a text editor or a file display command such as the -UNIX cat command. By default, the mode bits on the -fms.log file grant the required r permission only -to the owner (which is the local superuser root by default). -

    Output -

    The first few lines of the file provide a simple trace of the -fms command interpreter's actions, specifying (for example) -how many blocks it wrote on the tape. The final two lines in the file -specify tape capacity and filemark size in bytes, using the following -format: -

       Tape capacity is tape_size bytes
    -   File marks are filemark_size bytes
    -   
    -
    -

    Examples -

    The following example of the fms.log file specifies that -the tape used during the execution of the fms command had a -capacity of 2,136,604,672 bytes, and that the tape device writes filemarks of -size 1,910,220 bytes. -

       fms test started
    -   wrote 130408 blocks
    -   Tape capacity is 2136604672 bytes
    -   File marks are 1910220 bytes
    -   
    -
    -

    Related Information -

    tapeconfig -

    fms -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf045.htm b/doc/html/AdminReference/auarf045.htm deleted file mode 100644 index 208726161..000000000 --- a/doc/html/AdminReference/auarf045.htm +++ /dev/null @@ -1,60 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kaserver.DB0 and kaserver.DBSYS1

    -

    Purpose - - - - - -

    Contain the Authentication Database and associated log -

    Description -

    The kaserver.DB0 file contains the Authentication -Database, which records server encryption keys and an encrypted form of all -user passwords. The Authentication Server (kaserver process) -uses the information in the database to enable secured communications between -AFS server and client processes. -

    The kaserver.DBSYS1 file is a log file in which the -Authentication Server logs each database operation before performing -it. When an operation is interrupted, the Authentication Server replays -the log to complete the operation. -

    Both files are in binary format and reside in the /usr/afs/db -directory on each of the cell's database server machines. When the -Authentication Server starts or restarts on a given machine, it establishes a -connection with its peers and verifies that its copy of the database matches -the copy on the other database server machines. If not, the -Authentication Servers call on AFS's distributed database technology, -Ubik, to distribute to all of the machines the copy of the database with the -highest version number. -

    Always use the commands in the kas suite to administer the -Authentication Database. It is advisable to create an archive copy of -the database on a regular basis, using a tool such as the UNIX tar -command. -

    Related Information -

    kadb_check -

    kas -

    kaserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf046.htm b/doc/html/AdminReference/auarf046.htm deleted file mode 100644 index bec13915a..000000000 --- a/doc/html/AdminReference/auarf046.htm +++ /dev/null @@ -1,55 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kaserverauxdb

    -

    Purpose - - -

    Records failed authentication attempts -

    Description -

    The file kaserverauxdb records failed authentication attempts -for the local Authentication Server. The server creates it -automatically in the /usr/afs/local directory by default; use -the -localfiles argument to the kaserver command to -specify an alternate directory. -

    The kaserverauxdb file is an internal database used by the -Authentication Server to prevent access by users who have exceeded the limit -on failed authentication attempts defined in their Authentication Database -entry. The Authentication Server refuses further attempts to -authenticate to an account listed in the database until either an AFS system -administrator issues the kas unlock command to unlock the account, -or the timeout period defined in the user's Authentication Database entry -passes. -

    The kaserverauxdb file is in binary format, so its contents are -not directly accessible. However, the output from the kas -examine command reports an account's maximum number of failed -attempts, the lockout time, and whether the account is currently -locked. -

    Related Information -

    kaserver.DB0 and kaserver.DBSYS1 -

    kas examine -

    kas unlock -

    kaserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf047.htm b/doc/html/AdminReference/auarf047.htm deleted file mode 100644 index 8ffa0fbf3..000000000 --- a/doc/html/AdminReference/auarf047.htm +++ /dev/null @@ -1,60 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    prdb.DB0 and prdb.DBSYS1

    -

    Purpose - - - - - -

    Contain the Protection Database and associated log -

    Description -

    The prdb.DB0 file contains the Protection Database, which -maps AFS user, machine, and group names to their respective IDs (AFS UIDs and -GIDs) and tracks group memberships. The Protection Server -(ptserver process) uses the information in the database to help the -File Server grant data access to authorized users. -

    The prdb.DBSYS1 file is a log file in which the -Protection Server logs each database operation before performing it. -When an operation is interrupted, the Protection Server replays the log to -complete the operation. -

    Both files are in binary format and reside in the /usr/afs/db -directory on each of the cell's database server machines. When the -Protection Server starts or restarts on a given machine, it establishes a -connection with its peers and verifies that its copy of the database matches -the copy on the other database server machines. If not, the Protection -Servers call on AFS's distributed database technology, Ubik, to -distribute to all of the machines the copy of the database with the highest -version number. -

    Always use the commands in the pts suite to administer the -Protection Database. It is advisable to create an archive copy of the -database on a regular basis, using a tool such as the UNIX tar -command. -

    Related Information -

    prdb_check -

    pts -

    ptserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf048.htm b/doc/html/AdminReference/auarf048.htm deleted file mode 100644 index ca8ae5395..000000000 --- a/doc/html/AdminReference/auarf048.htm +++ /dev/null @@ -1,40 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    salvage.lock

    -

    Purpose -

    Prevents multiple simultaneous salvage operations on a partition -

    Description -

    The salvage.lock file guarantees that only one Salvager -(salvager process) runs at a time on a file server machine (the -single process can fork multiple subprocesses to salvage multiple partitions -in parallel). As the Salvager initializes, it creates the empty -(zero-length) file in the /usr/afs/local directory and invokes the -flock system call on it. It removes the file when it -completes the salvage operation. Because the Salvager must lock the -file to run, only one Salvager can run at a time. -

    Related Information -

    salvager -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf049.htm b/doc/html/AdminReference/auarf049.htm deleted file mode 100644 index 4be043131..000000000 --- a/doc/html/AdminReference/auarf049.htm +++ /dev/null @@ -1,66 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    sysid

    -

    Purpose - - - - -

    Lists file server machine interface addresses registered in VLDB -

    Description -

    The sysid file records the network interface addresses that the -File Server (fileserver process) registers in the Volume Location -Database (VLDB) for the local file server machine. -

    Each time the File Server restarts, it builds a list of interfaces on the -local machine by reading the /usr/afs/local/NetInfo file, if it -exists. If the file does not exist, the File Server uses the list of -network interfaces configured with the operating system. It then -removes from the list any addresses that appear in the -/usr/afs/local/NetRestrict file, if it exists. The File -Server records the resulting list in the binary-format sysid file -and registers the interfaces in the VLDB. -

    When the Cache Manager requests volume location information, the Volume -Location (VL) Server provides all of the interfaces registered for each server -machine that houses the volume. This enables the Cache Manager to make -use of multiple addresses when accessing AFS data stored on a multihomed file -server machine. -

    Cautions -

    The sysid file is unique to each file server machine, and must -not be copied from one machine to another. If it is a common practice -in the cell to copy the contents of the /usr/afs/local directory -from an existing file server machine to a newly installed one, be sure to -remove the sysid file from the new machine before starting the -fs trio of processes, which includes the fileserver -process. -

    Some versions of AFS limit how many of a file server machine's -interface addresses that can be registered. Consult the IBM AFS -Release Notes. -

    Related Information -

    NetInfo (server version) -

    NetRestrict (server version) -

    vldb.DB0 and vldb.DBSYS1 -

    fileserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf050.htm b/doc/html/AdminReference/auarf050.htm deleted file mode 100644 index 46ee43c3c..000000000 --- a/doc/html/AdminReference/auarf050.htm +++ /dev/null @@ -1,165 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    tapeconfig

    -

    Purpose - - - -

    Defines configuration parameters for all tape devices and backup data files -on a Tape Coordinator machine -

    Description -

    The tapeconfig file defines basic configuration parameters for -all of the tape devices or backup data files available for backup operations -on a Tape Coordinator machine. The file is in ASCII format and must -reside in the local /usr/afs/backup directory. The -instruction for each tape device or backup data file appears on its own line -and each has the following format: -

       [capacity    filemark_size]    device_name    port_offset
    -   
    -
    -

    where -

    -

    capacity -
    Specifies the capacity of the tapes used with a tape device, or the amount -of data to write into a backup data file. The Tape Coordinator refers -to this value in two circumstances: -
      -

    • When the capacity field of a tape or backup data file's label is -empty (because the tape has never been labeled). The Tape Coordinator -records this value on the label and uses it when determining how much data it -can write to the tape or file during a backup dump or backup -savedb operation. If there is already a capacity value on the -label, the Tape Coordinator uses it instead. -

    • When the -size argument is omitted the first time the -backup labeltape command is used on a given tape or file. -The Tape Coordinator copies this value into the label's capacity -field. -
    -

    -

    The Tape Coordinator uses this capacity value or the one on the Backup -System tape label to track how much space remains as it writes data to a tape -or backup data file. The appropriate value to record for a tape depends -on the size of the tapes usually used in the device and whether it has a -compression mode; for suggested values, see the IBM AFS -Administration Guide chapter on configuring the Backup System. If -using a value obtained from the fms command, reduce it by 10% to -15% before recording it in the file. -

    For a backup data file, it is best to provide a value that helps the Tape -Coordinator avoid reaching the end-of-file (EOF) unexpectedly. Make it -at least somewhat smaller than the amount of space available on the partition -housing the file when the dump operation begins, and never larger than the -maximum file size allowed by the operating system. -

    Specify a (positive) integer or decimal value followed by a letter than -indicates units, with no intervening space. In a decimal number, the -number of digits after the decimal point must not translate to fractions of -bytes. The maximum acceptable value is 2048 GB (2 TB). The -acceptable units letters are as follows; if the letter is omitted, the -default is kilobytes. -

    -

      -

    • kor K for kilobytes (KB) -

    • m or M for megabytes (MB) -

    • g or G for gigabytes (GB) -

    • t or T for terabytes (TB) -
    -

    If this field is omitted, the Tape Coordinator uses the maximum acceptable -value (2048 GB or 2 TB). Either leave both this field and the -filemark_size field empty, or provide a value in both of them. -

    filemark_size -
    Specifies the size of a tape device's filemarks (also called -end-of-file or EOF marks), which is set by the device's -manufacturer. In a dump to tape, the Tape Coordinator inserts filemarks -at the boundary between the data from each volume, so the filemark size -affects how much space is available for actual data. -

    The appropriate value to record for a tape depends on the size of the tapes -usually used in the device and whether it has a compression mode; for -suggested values, see the IBM AFS Administration Guide chapter on -configuring the Backup System. If using a value obtained from the -fms command, increase it by 10% to 15% before recording it in the -file. -

    For backup data files, record a value of 0 (zero). The -Tape Coordinator actually ignores this field for backup data files, because it -does not use filemarks when writing to a file. -

    Use the same notation as for the capacity field, but note that the -default units is bytes rather than kilobytes. The maximum acceptable -value is 2048 GB. -

    If this field is empty, the Tape Coordinator uses the value 0 -(zero). Either leave both this field and the capacity field -empty, or provide a value in both of them. -

    device_name -
    Specifies the complete pathname of the tape device or backup data -file. The format of tape device names depends on the operating system, -but on UNIX systems device names generally begin with the string -/dev/. For a backup data file, this field defines the -complete pathname; for a discussion of suggested naming conventions see -the description of the FILE instruction in CFG_device_name. -

    port_offset -
    Specifies the port offset number associated with this combination of Tape -Coordinator and tape device or backup data file. -

    Acceptable values are the integers 0 through 58510 -(the Backup System can track a maximum of 58,511 port offset numbers). -Each value must be unique among the cell's Tape Coordinators, but any -number of them can be associated with a single machine. Port offset -numbers need not be assigned sequentially, and can appear in any order in the -tapeconfig file. Assign port offset 0 to the Tape -Coordinator for the tape device or backup data file used most often for backup -operations; doing so will allow the operator to omit the --portoffset argument from the largest possible number of -backup commands. -

    -

    Privilege Required -

    Creating the file requires UNIX w (write) and -x (execute) permissions on the -/usr/afs/backup directory. Editing the file requires UNIX -w (write) permission on the file. -

    Examples -

    The following example tapeconfig file configures three tape -devices and a backup data file. The first device has device name -/dev/rmt/0h, and is assigned port offset 0 because it -will be the most frequently used device for all backup operations in the -cell. Its default tape capacity is 2 GB and filemark size is 1 -MB. The /dev/rmt/3h drive has half the capacity but a much -smaller filemark size; its port offset is 3. The third -device listed, /dev/rmt/4h, has the same capacity and filemark size -as the first device and is assigned port offset 2. Port -offset 4 is assigned to the backup data file /dev/FILE, -which is actually a symbolic link to the actual file located elsewhere on the -local disk. The Tape Coordinator writes up to 1.5 GB into the -file; as recommended, the filemark size is set to zero. -

       2G 1M /dev/rmt/0h 0
    -   1g 4k /dev/rmt/3h 3
    -   2G 1m /dev/rmt/4h 2
    -   1.5G 0 /dev/FILE 4
    -   
    -
    -

    Related Information -

    backup addhost -

    backup dump -

    backup labeltape -

    backup savedb -

    butc -

    fms -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf051.htm b/doc/html/AdminReference/auarf051.htm deleted file mode 100644 index e44f626c9..000000000 --- a/doc/html/AdminReference/auarf051.htm +++ /dev/null @@ -1,58 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vldb.DB0 and vldb.DBSYS1

    -

    Purpose - - - - - - -

    Contain the Volume Location Database and associated log -

    Description -

    The file vldb.DB0 contains the Volume Location Database -(VLDB), which tracks the location of all AFS volumes stored on file server -machines in the cell. The Volume Location (VL) Server -(vlserver process) provides information from the database to Cache -Managers when they need to access AFS data. -

    The file vldb.DBSYS1 is a log file in which the VL Server -logs each database operation before performing it. When an operation is -interrupted, the VL Server replays the log to complete the operation. -

    Both files are in binary format and reside in the /usr/afs/db -directory on each of the cell's database server machines. When the -VL Server starts or restarts on a given machine, it establishes a connection -with its peers and verifies that its copy of the database matches the copy on -the other database server machines. If not, the VL Servers call on -AFS's distributed database technology, Ubik, to distribute to all of the -machines the copy of the database with the highest version number. -

    Always use the commands in the vos suite to administer the -VLDB. It is advisable to create an archive copy of the database on a -regular basis, using a tool such as the UNIX tar command. -

    Related Information -

    vldb_check -

    vlserver -

    vos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf052.htm b/doc/html/AdminReference/auarf052.htm deleted file mode 100644 index a75913a6d..000000000 --- a/doc/html/AdminReference/auarf052.htm +++ /dev/null @@ -1,122 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    afsmonitor Configuration File

    -

    Purpose - - -

    Provides instructions for the afsmonitor command -

    Description -

    The afsmonitor configuration file determines which machines the -afsmonitor command probes for File Server or Cache Manager -statistics and which statistics it gathers. Use the -config -argument to the afsmonitor command to identify the configuration -file to use. -

    The instructions that can appear in the configuration file are as -follows: -

    -

    cm host_name -
    Names a client machine for which to display Cache Manager -statistics. The order of cm lines in the file determines the -order in which client machines appear from top to bottom on the System -Overview and Cache Managers output screens. -

    fs host_name -
    Names a file server machine for which to display File Server -statistics. The order of fs lines in the file determines the -order in which file server machines appear from top to bottom on the -System Overview and File Servers output screens. -

    thresh fs | cm field_name thresh_val -[cmd_to_run] [arg1] . . . -[argn] -
    Assigns the threshold value thresh_val to the statistic -field_name, for either a File Server statistic (fs) or a -Cache Manager statistic (cm). The optional -cmd_to_execute field names a binary or script to execute each time -the value of the statistic changes from being below thresh_val to -being at or above thresh_val. A change between two values that -both exceed thresh_val does not retrigger the binary or -script. The optional arg1 through -argn fields are additional values that the -afsmonitor program passes as arguments to the -cmd_to_execute command. If any of them include one or more -spaces, enclose the entire field in double quotes. -

    The afsmonitor program passes the following parameters to the -cmd_to_execute: -

    host_name fs|cm field_name -threshold_val -actual_val [<arg1>] -. . . [<argn>] -

    The parameters fs, cm, field_name, -threshold_val, and arg1 through -argn correspond to the values with the same name on the -thresh line. The host_name parameter identifies the -file server or client machine where the statistic has crossed the threshold, -and the actual_val parameter is the actual value of -field_name that exceeds the threshold value. -

    Use the thresh line to set either a global threshold, which -applies to all file server machines listed on fs lines or client -machines listed on cm lines in the configuration file, or a -machine-specific threshold, which applies to only one file server or client -machine. -

      -

    • To set a global threshold, place the thresh line before any of -the fs or cm lines in the file. -

    • To set a machine-specific threshold, place the thresh line -below the corresponding fs or cm line, and above any -other fs or cm lines. A machine-specific -threshold value always overrides the corresponding global threshold, if -set. Do not place a thresh fs line directly after a -cm line or a thresh cm line directly after a -fs line. -
    -

    show fs | cm field/group/section -
    Specifies which individual statistic, group of statistics, or section of -statistics to display on the File Servers screen (fs) or -Cache Managers screen (cm) and the order in which to -display them. The appendix of afsmonitor statistics in the -IBM AFS Administration Guide specifies the group and section to -which each statistic belongs. Include as many show lines as -necessary to customize the screen display as desired, and place them anywhere -in the file. The top-to-bottom order of the show lines in -the configuration file determines the left-to-right order in which the -statistics appear on the corresponding screen. -

    If there are no show lines in the configuration file, then the -screens display all statistics for both Cache Managers and File -Servers. Similarly, if there are no show fs lines, the -File Servers screen displays all file server statistics, and if -there are no show cm lines, the Cache Managers screen -displays all client statistics. -

    # comments -
    Precedes a line of text that the afsmonitor program ignores -because of the initial number (#) sign, which must appear in the -very first column of the line. -
    -

    For a list of the values that can appear in the -field/group/section field of a show instruction, see the -afsmonitor statistics appendix to the IBM AFS Administration -Guide. -

    Related Information -

    afsmonitor -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf053.htm b/doc/html/AdminReference/auarf053.htm deleted file mode 100644 index 6fe5ded44..000000000 --- a/doc/html/AdminReference/auarf053.htm +++ /dev/null @@ -1,655 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    package Configuration File

    -

    Purpose - - - -

    Provides instructions for the package command -

    Description -

    The package configuration file defines the file system elements -that the package command creates or alters on the local disk of an -AFS client machine it is configuring. Use the -config or --fullconfig argument to the package command to identify -the configuration file to use. -

    Summary of Configuration File Instructions -

    The configuration file can include one or more instances of each of the -following instructions, each on its own line. A more detailed -description of each instruction's syntax follows this list. -

    -

    B -
    Defines a block special device, such as a disk, which deals with input in -units of multi-byte command blocks -

    C -
    Defines a character special device, such as a terminal or tty, which deals -with input in single character units -

    D -
    Creates a directory -

    F -
    Creates or alters a file to match the contents of a specified source file -

    L -
    Creates a symbolic link -

    S -
    Defines a socket, which is a communications device for UDP and TCP/IP -connections -

    %define -
    Defines a variable or declares a string as defined -

    %ifdef -
    Specifies an action to perform if a certain string is declared or defined -

    %ifndef -
    Specifies an action to perform if a certain string is not declared or -defined -

    %include -
    Includes a library file -

    %undef -
    Declares a string not to be defined, or a variable no longer to have a -value -
    -

    The B and C Instructions for Defining Block and Character Special -Devices - - - - - - - - - - - - - - - -

    The B instruction in a package configuration file -defines a block special device, such as a disk, that deals with input in units -of multi-byte command blocks. The C instruction defines a -character special device, such as a terminal or tty, that deals with input in -single character units. They share a common syntax: -

       {B | C}   device_name  major_device  minor_device  owner  group  mode_bits
    -   
    -
    -

    where -

    -

    B -
    Indicates the definition of a block special device. It must be a -capital letter. -

    C -
    Indicates the definition of character special device. It must be a -capital letter. -

    device_name -
    Names the special device to define. To learn the name format -appropriate to the machine's system type, consult the hardware or -operating system documentation. -

    major_device -
    Specifies the device's major device number in decimal format. -To learn the correct value for the machine's system type, consult the -hardware or operating system documentation. -

    minor_device -
    Specifies the device's minor device number in one of hexadecimal, -octal, or decimal format. Precede a hexadecimal number with the string -0x (zero and the letter x) or an octal number with a -0 (zero). A number without either prefix is interpreted as a -decimal. To learn the correct value for the machine's system type, -consult the hardware or operating system documentation. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the device's owner in the output from the UNIX ls -l -command. -

    group -
    Specifies the group name or UNIX group ID (GID) of the group to be -designated the device's group in the output from the UNIX ls --lg command. -

    mode_bits -
    Defines the device's UNIX mode bits. Acceptable values are the -standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. -
    -

    The D Instruction for Creating a Directory - - - - - - - -

    The D instruction in a package configuration file -creates a directory on the local disk. If a symbolic link, file, or -other element on the local disk has the same name, it is replaced with a -directory. If the directory already exists, its owner, group, and mode -bits are changed if necessary to conform with the instruction. The -instruction has the following syntax: -

       D[update_code]  directory  owner  group  mode_bits
    -   
    -
    -

    where -

    -

    D -
    Indicates the creation of a directory. It must be a capital -letter. -

    update_code -
    Modulates the directory creation instruction. It is optional and -follows the letter D directly, without an intervening space. -Choose one of the two acceptable values: -
    -

    X -
    Indicates that the directory is a lost+found directory (used by -the fsck program). -

    R -
    Removes any subdirectory (along its contents) or file that exists in the -existing directory on the local disk but for which an instruction does not -appear in the configuration file. -
    -

    directory -
    Specifies the full pathname of the directory to create. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the directory's owner in the output from the UNIX ls -ld -command. -

    group -
    Specifies the name or UNIX group ID (GID) of the group to be designated -the directory's group in the output from the UNIX ls -lgd -command. -

    mode_bits -
    Defines the directory's UNIX mode bits. Acceptable values are -the standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -drwxr-xr-x, and 644 to drw-r--r--. -
    -

    The F Instruction for Creating or Updating a File - - - - - - - -

    The F instruction in a package configuration file -creates or updates a file on the local disk by copying in the contents of the -indicated source file, which can reside in AFS or on the local disk. If -the package command interpreter cannot access the source file, it -exits without executing any instruction in the configuration file. -

    If a file with the same name already exists on disk, the package -command overwrites it with the contents of the source file, unless the -I update code is used to prevent that. To add a -.old extension to the current version of the file, include -the O update code. To have the machine reboot automatically -after the package program completes, include the Q -update code. -

    If a symbolic link, directory, or other element on the local disk has the -same name, it is replaced with the file (a directory's contents are first -removed as necessary). -

    The instruction has the following syntax: -

       F[update_code]  file  source_file  [owner  group  mode_bits]
    -   
    -
    -

    where -

    -

    F -
    Indicates the creation or update of a file. It must be a capital -letter. -

    update_code -
    Modulates the file creation instruction. It is optional and follows -the letter F directly, without an intervening space. Choose -one or more of the four acceptable values, and list them in any order: -
    -

    A -
    Indicates that the pathname in the source_file field is the -complete pathname of the source file, including the filename. If this -argument is omitted, the package command appends the pathname in -the file field to the pathname in the source_file field to -derive the source file's full name. This code allows the source -and target filenames to differ. -

    I -
    Preserves the existing file called file, rather than overwriting -it. -

    O -
    Saves the existing version of the file by appending a -.old extension to it. -

    Q -
    Causes the package command to exit with status code -4 if it overwrites the file. If the standard -package-related changes have been made to the machine's AFS -initialization file, then status code 4 causes the machine to -reboot automatically. Use this code when the machine must reboot if -updates to the file are to have any effect (for example, if the operating -system file--/vmunix or equivalent--has changed). -
    -

    file -
    Specifies the complete pathname on the local disk of the file to create or -update, including the filename as the final element. -

    source_file -
    Specifies the pathname (local or AFS) of the file to copy to the local -disk. -

    If the A update code is included, specify the source file's -complete pathname. Otherwise, the package command derives -the source file's full name by appending the file pathname to -this pathname. For example, if the A update code is not -included and the file /afs/abc.com/rs_aix42/bin/grep is the -source file for the /bin/grep binary, the proper value in this -field is /afs/abc.com/rs_aix42. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the file's owner in the output from the UNIX ls -l -command. -

    To copy the source file's owner to the target file, leave this field -empty. In this case, the group and mode_bits fields -must also be empty. -

    group -
    Specifies the name or UNIX group ID (GID) of the group to be designated -the file's group in the output from the UNIX ls -lg -command. -

    To copy the source file's group to the target file, leave this field -empty. In this case, the owner and mode_bits fields -must also be empty. -

    mode_bits -
    Defines the file's UNIX mode bits. Acceptable values are the -standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. -

    To copy the source file's mode bits to the target file, leave this -field empty. In this case, the owner and group fields -must also be empty. -

    -

    The L Instruction for Creating a Symbolic Link - - - - - - - -

    The L instruction in a package configuration file -creates a symbolic link on the local disk to a directory or file that exists -either in AFS or elsewhere on the local disk. As with the standard UNIX -ln -s command, the link is created even if the actual file or -directory does not exist. -

    If a file or directory on the local disk already has the same name, the -package command replaces it with a symbolic link. -

    The instruction has the following syntax: -

       L[update_code]  link  actual_path  [owner  group  mode_bits]
    -    
    -
    -

    where -

    -

    L -
    Indicates the creation of a symbolic link. It must be a capital -letter. -

    update_code -
    Modulates the link creation instruction. It is optional and follows -the letter L directly, without an intervening space. Choose -one or both of the acceptable values, and list them in any order: -
    -

    A -
    Indicates that the pathname in the actual_path field is the -complete pathname of the actual directory or file (including the filename for -a file). If this argument is omitted, the package command -appends the value in the link field to the pathname in the -actual_path field to derive the actual directory or file's full -name. This code allows the name of the symbolic link and actual -directory or file to differ. -

    I -
    Preserves the existing symbolic link called link, rather than -overwriting it. -
    -

    link -
    Specifies the complete local disk pathname of the symbolic link to -create. -

    actual_path -
    Specifies the pathname (local or AFS) of the directory or file to which -the link refers. If the A update code is included, specify -the directory or file's complete pathname. Otherwise, the -package command derives the actual directory or file's full -name by appending the value in the link field to this -pathname. For example, if the A update code is not included -and /etc/ftpd is a symbolic link to the file -/afs/abc.com/sun4x_56/etc/ftpd, the proper value in this -field is /afs/abc.com/sun4x_56. -

    The package command interpreter correctly handles pathnames that -begin with the ./ (period, slash) or -../ (two periods, slash) notation, interpreting them -relative to the current working directory from which the package -command is invoked. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the symbolic link's owner in the output from the UNIX ls -l -command. -

    To designate the issuer of the package command (usually, the -local superuser root) as the symbolic link's owner, leave this -field empty. In this case, the group and mode_bits -fields must also be empty. -

    group -
    Specifies the name or UNIX group ID (GID) of the group to be designated -the link's group in the output from the UNIX ls -lg -command. -

    To have the symbolic link's group match the default group associated -with the package command's issuer, leave this field -empty. The issuer is usually the local superuser root and -the default group is designated in the issuer's entry in the local -/etc/passwd file or equivalent. If this field is left empty, -the owner and mode_bits fields must also be empty. -

    mode_bits -
    Defines the symbolic link's UNIX mode bits. Acceptable values -are the standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. -

    Leaving this field empty sets the symbolic link's mode bits to -777 (rwxrwxrwx). In this case, the owner -and group fields must also be empty. -

    -

    The S Instruction for Creating a Socket - - - - - - - -

    The S instruction in a package configuration file -creates a socket (a communications device for UDP or TCP/IP connections) on -the local disk. The instruction has the following syntax: -

       S  socket [owner  group  mode_bits]
    -   
    -
    -

    where -

    -

    S -
    Indicates the creation of a socket. It must be a capital -letter. -

    socket -
    Names the socket. The proper format depends on the local -machine's operating system. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the socket's owner in the output from the UNIX ls -l -command. -

    To designate the issuer of the package command (usually, the -local superuser root) as the socket's owner, leave this field -empty. In this case, the group and mode_bits fields -must also be empty. -

    group -
    Specifies the name or UNIX group ID (GID) of the group to be designated -the socket's group in the output from the UNIX ls -lg -command. -

    To have the symbolic link's group match the default group associated -with the package command's issuer, leave this field -empty. The issuer is usually the local superuser root and -the default group is designated in the issuer's entry in the local -/etc/passwd file or equivalent. If this field is left empty, -the owner and mode_bits fields must also be empty. -

    mode_bits -
    Defines the socket's UNIX mode bits. Acceptable values are the -standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. -

    Leaving this field empty sets the symbolic link's mode bits to -777 (rwxrwxrwx), modulated by the cell's -umask. In this case, the owner and group fields must -also be empty. -

    -

    The %define or %undef Instructions Declaring or Undeclaring a -Definition - - - - - - -

    The %define instruction in a package configuration -file declares or defines a variable, depending on its number of -arguments: -

      -

    • If followed by a single argument, it declares that argument to be -defined. The argument is then available as a controller when mentioned -in %ifdef and %ifndef statements, which evaluate to -true and false respectively. -

    • If followed by two arguments, it defines the second argument as the value -of the first. When the first argument appears later in this prototype -or other prototype or library files as a variable--surrounded by curly -braces and preceded by a dollar sign, as in the example -${variable}--the package command interpreter -substitutes the second argument for it. -
    -

    The %undef statement negates the effect of a previous -%define statement, declaring its argument to be defined no longer, -or to have a value no longer if it is a variable. -

    The syntax for the two types of instruction are as follows: -

       %define  declaration
    -   %define  variable  value
    -   %undef  declaration
    -   %undef  variable
    -   
    -
    -

    where -

    -

    %define -
    Indicates a definition statement. -

    %undef -
    Indicates a statement that negates a definition. -

    declaration -
    Names the string being declared by a %define statement, or -negated by an %undef statement. -

    variable -
    Specifies the name of the variable that a %define statement is -defining, or an %undef statement is negating. -

    value -
    Specifies the value to substitute for the string in the variable -field when it appears in the appropriate format (surrounded by curly braces -and preceded by a dollar sign, as in the example ${variable}), in -this or other prototype and library files. It can include one or more -words. -
    -

    The %ifdef and %ifndef Instructions for Specifying a Conditional -Action to Perform - - - - - - -

    The %ifdef instruction in a package configuration -file specifies one or more actions to perform if the indicated string has been -declared by a single-argument %define statement, or is a variable -for which a value has been defined by a two-argument %define -statement. -

    Similarly, the %ifndef instruction specifies one or more actions -to perform if the indicated string has not been declared or is a variable -without a value, either because no %define statement has defined it -or an %undef statement has undefined it. -

    In both cases, the optional %else statement specifies one or -more alternate actions to perform if the first statement evaluates to -false. (For an %ifdef statement, the -%else statement is executed if the indicated string has never been -declared or is a variable without a value, or if an %undef -statement has undefined either one; for an %ifndef statement, -it is executed if the string has been declared or is a variable with a -value.) -

    It is possible to nest any number of %ifdef and -%ifndef statements. -

    The two types of statement share a common syntax: -

       %ifdef | ifndef   declaration 
    -                                  action+
    -   [%else [declaration] 
    -                  alternate_action+]
    -   %endif declaration
    -   
    -
    -

    where -

    -

    ifdef -
    Indicates that the statement evaluates as true if the string in -the declaration field is declared or is a variable with a defined -value. -

    ifndef -
    Indicates that the statement evaluates as true if the string in -the declaration field is not declared or is a variable without a -defined value. -

    declaration -
    Specifies the string that must be declared or the variable name that must -have a defined value for an %ifdef statement to evaluate as -true, which results in the specified action being performed. -For an %ifndef statement, the string must not be declared or the -variable must have no defined value for the statement to evaluate as -true. The first and third occurrences of -declaration (the latter following the string %endif) are -required. The second occurrence (following the string %else) -is optional, serving only to clarify to which %ifdef or -%ifndef statement the %else statement belongs. -

    action -
    Specifies each action to perform if the %ifdef or -%ifndef statement evaluates as true. Each action -must appear on a separate line. Acceptable types of actions are other -statements beginning with a percent sign and definition instructions. -

    alternate_action -
    Specifies each action to perform if the %ifdef or -%ifndef statement evaluates to false. Each action -must appear on a separate line. Acceptable types of actions are other -statements beginning with a percent sign and definition instructions. -
    -

    The %include Instruction for Including a Library File - - - -

    The %include instruction in a package configuration -file includes the contents of the indicated library file in a configuration -file that results from the compilation of the prototype file in which the -%include instruction appears. It has the following -syntax: -

       %include  pathname
    -   
    -
    -

    where -

    -

    %include -
    Indicates a library file include statement. -

    pathname -
    Specifies the complete pathname of the library file to include. It -can be in AFS or on the local disk, and can include one or more -variables. -
    -

    Cautions -

    The configuration file must be completely correct. If there are any -syntax errors or incorrect values, the package command interpreter -exits without executing any instruction. -

    Examples -

    The following example B and C instructions define a -disk /dev/hd0a with major and minor device numbers 1 and -0 and mode bits of -rw-r--r--, and a tty -/dev/ttyp5 with major and minor device numbers 6 and -5 and mode bits of -rw-rw-rw. In both cases, the -owner is root and the owning group wheel. -

       B /dev/hd0a 1 0 root wheel 644
    -   C /dev/ttyp5 6 5 root wheel 666
    -   
    -
    -

    The following example D instruction creates the local -/usr directory with owner root and group -wheel and mode bits of drwxr-xr-x. The -R update code removes any files and subdirectories that reside in -the /usr directory (if it already exists) but do not appear in the -configuration file. -

       DR /usr root wheel 755
    -   
    -
    -

    The following example F instruction, appropriate for a machine -running AIX 4.2 in the ABC Corporation cell, creates or updates the -local disk file /bin/grep, using -/afs/abc.com/rs_aix42/bin/grep as the source. -

       F /bin/grep /afs/abc.com/rs_aix42 root wheel 755
    -   
    -
    -

    The next example F instruction creates the -/usr/vice/etc/ThisCell file and specifies an absolute pathname for -the source file, as indicated by the A update code. The -Q code makes the package command return status code 4 as -it exits, prompting a reboot of the machine if the standard -package-related changes have been made to the machine's AFS -initialization file. No values are provided for the owner, group and -mode bits, so the file inherits them from the source file. -

       FAQ /usr/vice/etc/ThisCell /afs/abc.com/common/etc/ThisCell
    -   
    -
    -

    The following example L instruction, appropriate for a machine -running AIX 4.2 in the ABC Corporation cell, creates a symbolic link -from /etc/ftpd on the local disk to the file -/afs/abc.com/rs_aix42/etc/ftpd. -

       L /etc/ftpd /afs/abc.com/rs_aix42 root wheel 644
    -   
    -
    -

    The following example S instruction defines the socket -/dev/printer. -

     
    -   S /dev/printer root wheel 777
    -   
    -
    -

    The following example %define instruction defines the value for -the variable ${diskmode}. This variable is used elsewhere in -the template to fill the owner_name, group_name, and -mode_bits fields in a D, F, or L -instruction. -

       %define diskmode root wheel 644
    -    
    -
    -

    The following example %undef instruction declares the string -afsd not to be defined. -

       %undef afsd
    -   
    -
    -

    The following example %ifdef instruction specifies that if the -string rs_aix42 is currently declared, then when the prototype file -containing the instruction is compiled the three indicated library files are -included. There is no alternate action defined. There must be -%define statements earlier in the prototype file to declare -rs_aix42 and to assign a value to the ${wsadmin} -variable. -

       %ifdef rs_aix42
    -   %include ${wsadmin}/lib/rs_aix42.readonly
    -   %include ${wsadmin}/lib/rs_aix42.generic
    -   %include ${wsadmin}/lib/rs_aix42.generic.dev
    -   %endif rs_aix42
    -   
    -
    -

    The following example %ifndef instruction, appropriate for the -State University cell, defines stateu.edu as the value of -the ${cell} variable if it does not already have a value. -

       %ifndef cell
    -   %define cell stateu.edu
    -   %endif cell
    -   
    -
    -

    The following example %include instruction includes the library -file base.generic from the lib subdirectory of -the directory in which package-related files reside. The -${wsadmin} variable resolves to an actual pathname (such as -/afs/abc.com/wsadmin) during compilation. -

       %include ${wsadmin}/lib/base.generic
    -   
    -
    -

    Related Information -

    package -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf054.htm b/doc/html/AdminReference/auarf054.htm deleted file mode 100644 index eab3e2631..000000000 --- a/doc/html/AdminReference/auarf054.htm +++ /dev/null @@ -1,343 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss Bulk Input File

    - - - -

    Purpose -

    Provides instructions for the uss bulk command -

    Description -

    The uss bulk input file lists instructions for the -uss command interpreter to execute when running the uss -bulk command. If the file includes add instructions -that reference a uss template file, then the template file must -also exist. -

    Summary of Bulk Input File Instructions -

    The bulk input file can include the following instructions, each on its own -line. A more detailed description of each instruction's syntax -follows this list. -

    -

    add -
    Creates a user account. Equivalent to the uss add -command. -

    delete -
    Deletes a user account. Equivalent to the uss delete -command. -

    delvolume -
    Removes the volume and VLDB entry for each account referenced by a -delete instruction that follows this instruction in the bulk input -file. -

    exec -
    Executes a command. -

    savevolume -
    Preserves the volume and VLDB entry for each account referenced by a -delete instruction that follows this instruction in the bulk input -file. -
    -

    The add Instruction for Creating an Account - - -

    The add instruction creates a user account. Each instance -in the bulk input file is equivalent in effect to a uss add command -issued on the command line. The order of the instruction's fields -matches the order of arguments to the uss add command, although -some arguments do not have a corresponding field. Like the uss -add command's arguments, many of the fields correspond to (provide -a value for) a variable in the uss template file, as indicated in -the following description of each field. -

    The instruction's syntax is as follows. It appears on multiple -lines here only for the sake of legibility--each add -instruction must appear on a single line in the bulk input file. -

       add username[:full_name][:initial_password][:password_expires]
    -       [:file_server][:partition][:mount_point][:uid][:var1][:var2]
    -       [:var3][:var4][:var5][:var6][:var7][:var8][:var9][:]
    -   
    -
    -

    To omit a value for a field (presumably because it is optional or the -template specifies a constant value for it), type nothing between the two -colons that surround it. After the last argument provided, end the line -with either a colon and carriage return, or a carriage return alone. -

    The meaning of, and acceptable values for, each field are as -follows. -

    -

    username -
    Names the user's Authentication Database and Protection Database -entries. It can include up to eight alphanumeric characters, but not -the : (colon), . (period), or @ -(at-sign) characters. Because it becomes the username (the name under -which a user logs in), it is best not to include shell metacharacters and to -obey the restrictions that many operating systems impose on usernames -(usually, to contain no more than eight lowercase letters). -

    Corresponding argument to the uss add command: --user. Corresponding variable in the template file: -$USER. -

    full_name -
    Specifies the user's full name. Do not surround it with double -quotes (""), even if it contains spaces. If not provided, it defaults -to the username in the username field. -

    Corresponding argument to the uss add command: --realname. Corresponding variable in the template -file: $NAME. Many operating systems include a field for the full -name in a user's entry in the local password file (/etc/passwd -or equivalent), and this variable can be used to pass a value to be used in -that field. -

    initial_password -
    Specifies the user's initial password. Although the AFS -commands that handle passwords accept strings of virtually unlimited length, -it is best to use a password of eight characters or less, which is the maximum -length that many applications and utilities accept. If not provided, -this argument defaults to the string changeme. -

    Corresponding argument to the uss add command: --pass. Corresponding variable in the template file: -none. -

    password_expires -
    Sets the number of days after a user's password is changed that it -remains valid. Provide an integer from the range 1 through -254 to specify the number of days until expiration, or the value -0 to indicate that the password never expires (the default). -

    When the password becomes invalid (expires), the user is unable to -authenticate, but has 30 more days in which to issue the kpasswd -command to change the password (after that, only an administrator can change -it). -

    Corresponding argument to the uss add command: --pwexpires. Corresponding variable in the template -file: $PWEXPIRES. -

    file_server -
    Names the file server machine on which to create the new user's -volume. It is best to provide a fully-qualified hostname (for example, -fs1.abc.com), but an abbreviated form is acceptable -provided that the cell's naming service is available to resolve it at the -time the volume is created. -

    Corresponding argument to the uss add command: --server. Corresponding variable in the template file: -$SERVER. -

    partition -
    Specifies the partition on which to create the user's volume; it -must reside on the file server machine named in the file_server -field. Identify the partition by its complete name (for example, -/vicepa, or use one of the following abbreviations: -
       /vicepa     =     vicepa      =      a      =      0
    -   /vicepb     =     vicepb      =      b      =      1
    -   
    -
    -

    -

    After /vicepz (for which the index is 25) comes -

       /vicepaa    =     vicepaa     =      aa     =      26
    -   /vicepab    =     vicepab     =      ab     =      27
    -   
    -
    -

    and so on through -

       /vicepiv    =     vicepiv     =      iv     =      255
    -    
    -
    -

    Corresponding argument to the uss add command: --partition. Corresponding variable in template: -$PART. -

    mount_point -
    Specifies the complete pathname for the user's home directory. -

    Corresponding argument to the uss add command: --mount. -

    Corresponding variable in template: $MTPT, but in the template -file's V instruction only. Occurrences of the $MTPT -variable in template instructions that follow the V instruction -take their value from the V instruction's mount_point -field. Thus the value of this command line argument becomes the value -for the $MTPT variable in instructions that follow the V -instruction only if the string $MTPT appears alone in the V -instruction's mount_point field. -

    uid -
    Specifies a positive integer other than 0 (zero) to assign as -the user's AFS UID. If this argument is omitted, the Protection -Server assigns an AFS UID that is one greater than the current value of the -max user id counter (use the pts -listmax command to display the counter). If including this -argument, first use the pts examine command to verify that no -existing account already has the desired AFS UID; if one does, the -account-creation process terminates with an error. -

    Corresponding argument to the uss add command: --uid. Corresponding variable in template: $UID. -

    var1 through var9 -
    Specifies values for each of the number variables $1 through $9 that can -appear in the template file. The number variables allow the -administrator to provide values for variables other than the set defined by -the uss command suite. -

    Corresponding argument to the uss add command: --var. Corresponding variables in template: $1 through -$9. -

    If providing a value in any of the fields, then in every field that -precedes it either provide an actual value or indicate an empty field by -putting nothing between two colons. It is acceptable, but not -necessary, to indicate empty fields by putting colons after the last field -that contains an actual value. -

    -

    The delete Instruction for Deleting an Account - - -

    The delete instruction deletes a user account from the -system. Each instance in the bulk input file is equivalent in effect to -a uss delete command issued on the command line. The order -of the instruction's fields matches the order of arguments to the -uss delete command: -

       delete username:mount_point_path[:{ savevolume | delvolume }][:]
    -   
    -
    -

    where -

    -

    username -
    Names the entry to delete from the Protection and Authentication -Databases. -

    mount_point_path -
    Specifies the complete pathname to the user's home directory, which -is deleted from the filespace. By default, the volume mounted there is -also deleted from the file server machine where it resides, as is its record -from the Volume Location Database (VLDB). To prevent deletion, include -the savevolume string in the instruction's third field, or -precede this delete instruction with a savevolume -instruction. Partial pathnames are interpreted relative to the current -working directory. -

    savevolume -
    Retains the volume on its file server machine, and the corresponding entry -in the VLDB. Provide this value or delvolume in the third -field, or omit both values to treat the volume according to the prevailing -default, which is set by a preceding savevolume or -delvolume instruction in the bulk input file. -

    delvolume -
    Removes the volume from its file server machine, and the corresponding -entry from the VLDB. Provide this value or savevolume in the -third field, or omit both values to treat the volume according to the -prevailing default, which is set by a preceding savevolume or -delvolume instruction in the bulk input file. -
    -

    After the last argument provided, end the line with either a colon and -carriage return or a carriage return alone. -

    The exec Instruction for Executing a Command -

    The exec instruction executes the specified command, which can -be a UNIX shell script or command, a program, or an AFS command. The -uss command interpreter must have the necessary privileges in AFS -and the local file system; it assumes the AFS and local identities of the -issuer of the uss bulk command. -

    The instruction's syntax is as follows: -

       exec command
    -   
    -
    -

    The delvolume and savevolume Instructions for Setting the Default -Treatment of Volumes - - - - -

    The savevolume and delvolume instructions determine -the default treatment of volumes referenced by the delete -instructions that follow them in the bulk input file. Their syntax is -as follows: -

       savevolume
    -   delvolume
    -   
    -
    -

    The savevolume instruction prevents the removal of the volume -and VLDB entry for all delete instruction that follow it in the -bulk input file, and the delvolume instruction removes the volume -and VLDB entry for all subsequent delete instructions. -Either setting persists until its opposite appears in the file, or until the -end of the bulk file. -

    If neither line appears in the bulk input file, the default is to remove -the volume and the VLDB entry; delete instructions that appear -before the first savevolume instruction are also subject to this -default. If a delete instruction's third field -specifies either savevolume or delvolume, that setting -overrides the default. -

    Examples -

    The following example add instruction creates an -authentication-only account. The user's initial password is -changeme (the default). -

       add anderson
    -   
    -
    -

    The following example add instructions refer to the indicated -V instruction in a template file (which must appear on a single -line in the template file). -

       add smith:John Smith:::fs1:a:::::marketing 
    -   add jones:Pat Jones:::fs3:c:::::finance
    -   V user.$USER $SERVER.abc.com /vicep$PART 2000 \
    -       /afs/abc.com/usr/$3/$USER $UID $USER all
    -   
    -
    -

    The first add instruction creates an account called -smith in the Protection and Authentication Databases, with an -initial password changeme and a value for $UID provided by the -Protection Server. The volume user.smith resides on -partition /vicepa of file server machine -fs1.abc.com and is mounted at -/afs/abc.com/usr/marketing/smith. He owns his home -directory and has all access permissions on its root directory's access -control list (ACL). The account for jones is similar, except -that the volume resides on partition /vicepc of file server machine -fs3.abc.com and is mounted at -/afs/abc.com/usr/finance/jones. -

    Notice that the fields corresponding to the volume mount point, UID, $1 -variable, and $2 variable are empty (between a and -marketing on the first example line), because their corresponding -variables do not appear in the template file. The initial password -field is also empty. -

    The following add instructions are equivalent in effect to the -preceding example, but explicitly indicate empty fields for all of the number -variables that don't have a value: -

       add smith:John Smith:::fs1:a:::::marketing::::::
    -   add jones:Pat Jones:::fs3:c:::::finance::::::
    -   
    -
    -

    The following example shows a complete bulk file containing a set of -delete instructions combined with a savevolume -instruction. Because the delete instruction for users -smith, pat, and rogers appear before the -savevolume instruction and the third field is blank in each, the -corresponding home volumes are removed. The volume for user -terry is retained because the default established by the -savevolume instruction applies to it, but user -johnson's volume is removed because the third field of her -delete instruction overrides the current default. -

       delete smith:/afs/abc.com/usr/smith
    -   delete pat:/afs/abc.com/usr/pat
    -   delete rogers:/afs/abc.com/usr/rogers
    -   savevolume
    -   delete terry:/afs/abc.com/usr/terry
    -   delete johnson:/afs/abc.com/usr/johnson:delvolume
    -   
    -
    -

    The following example exec instruction appears between sets of -add and delete instructions in a bulk input file. -A message appears in the command shell where the uss bulk command -is issued, to indicate when the additions are finished and the deletions -beginning. -

       exec echo "Additions completed; beginning deletions..."
    -   
    -
    -

    Related Information -

    uss Template File -

    uss add -

    uss bulk -

    uss delete -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf055.htm b/doc/html/AdminReference/auarf055.htm deleted file mode 100644 index 6e7afaf0f..000000000 --- a/doc/html/AdminReference/auarf055.htm +++ /dev/null @@ -1,759 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss Template File

    -

    Purpose - - - -

    Provides instructions for the uss add command -

    Description -

    The uss template file defines the components of an AFS user -account that the uss add command (or add instruction in -a uss bulk input file) creates. Use the -template -argument to the uss add or uss bulk command to identify -the template file. -

    Summary of Template File Instructions -

    The template file can include the following instructions, each on its own -line. A more detailed description of each instruction's syntax -follows this list. -

    -

    A -
    Imposes restrictions on user passwords and authentication attempts -

    D -
    Creates a directory -

    E -
    Creates a single-line file -

    F -
    Creates a file by copying a prototype -

    G -
    Defines a directory that is one of a set of parent directories into which -the uss command interpreter evenly distributes newly created home -directories -

    L -
    Creates a hard link -

    S -
    Creates a symbolic link -

    V -
    Creates a volume, mounts it in the file space and sets the ACL on the -mount point -

    X -
    Executes a command -
    -

    If the template file is empty (zero-length), the uss add command -or add instruction in a bulk input file only creates an entry in -the Protection and Authentication Databases, naming them according to the name -specified with the uss add command's -user -argument, or in the bulk input file add instruction's -username field. -

    The A Instruction for Setting the Default Treatment of Volumes - - - - - - - -

    The A instruction in a uss template file enhances -cell security by imposing the following restrictions on users' password -choice and authentication attempts. For further information on these -limits, see the IBM AFS Administration Guide and the kas -setfields reference page. -

      -

    • Limiting the user's password lifetime. When the lifetime -expires, the user can no longer authenticate using that password, and must -change it. -

    • Prohibiting the reuse of the user's 20 most recently used -passwords. -

    • Limiting the number of consecutive times that a user can provide an -incorrect password during authentication, and for how long the Authentication -Server refuses further authentication attempts after the limit is exceeded -(referred to as an account lockout). For regular user -accounts in most cells, the recommended limit is nine and lockout time is 25 -minutes. -
    -

    The instruction has the following syntax: -

       A  username  password_lifetime  password_reuse  failures  locktime
    -   
    -
    -

    where -

    -

    A -
    Indicates a security-enhancing instruction. It must be a capital -letter. -

    username -
    Names the Authentication Database entry on which to impose security -restrictions. Specify the value $USER to read in the -username from the uss add command's -user argument, -or from the username field of an add instruction in a bulk -input file. -

    password_lifetime -
    Sets the number of days after the user's password is changed that it -remains valid. When the password becomes invalid (expires), the user is -unable to authenticate, but has 30 more days in which to issue the -kpasswd command to change the password (after that, only an -administrator can change it). -

    Specify an integer from the range 1 through 254 to -specify the number of days until expiration, the value 0 to -indicate that the password never expires, or the value $PWEXPIRES -to read in the number of days from the uss add or uss -bulk command's -pwexpires argument. If the -A instruction does not appear in the template file, the default is -for the user's password never to expire. -

    password_reuse -
    Determines whether or not the user can change his or her password (using -the kpasswd or kas setpassword command) to one that is -similar to any of the last twenty passwords. The acceptable values are -reuse to allow reuse and noreuse to prohibit it. -If the A instruction does not appear in the template file, the -default is to allow password reuse. -

    failures -
    Sets the number of consecutive times the user can provide an incorrect -password during authentication (using the klog command or a login -utility that grants AFS tokens). When the user exceeds the limit, the -Authentication Server rejects further authentication attempts for the amount -of time specified in the locktime field. -

    Specify an integer from the range 1 through 254 to -specify the number of failures permitted, or the value 0 to -indicate that there is no limit to the number of unsuccessful attempts. -If the A instruction does not appear in the template file, the -default is to allow an unlimited number of failures. -

    locktime -
    Specifies how long the Authentication Server refuses authentication -attempts from a user who has exceeded the failure limit set in the -failures field. -

    Specify a number of hours and minutes (hh:mm) or minutes -only (mm), from the range 01 (one minute) through -36:00 (36 hours). The Authentication Server -automatically reduces any larger value to 36:00 and also -rounds up any non-zero value to the next higher multiple of 8.5 -minutes. A value of 0 (zero) sets an infinite lockout -time; an administrator must always issue the kas unlock -command to unlock the account. -

    -

    The D Instruction for Creating a Directory - - - - - - - - - - - -

    The D instruction in a uss template file creates a -directory. Its intended use is to create a subdirectory in the user -home directory created by the V instruction in the template -file. -

    Any number of D instructions can appear in the template -file. If any variables in the instruction take their values from the -V instruction (notably, the $MTPT variable), the instruction must -follow the V instruction in the file. -

    Although it is possible to use the D instruction to create a -directory on the local disk of the machine where the uss command is -issued, it is not recommended. The preferred method for automated -creation of directories on a local disk is the package -program. Two complications arise if the pathname field refers -to a local disk directory: -

      -

    • The uss command prints a warning message because it cannot -associate an access control list (ACL) with a local disk directory. It -creates the directory nonetheless, and some syntactically correct value must -appear in the instruction's ACL field. -

    • To designate any user other than the issuer as the new directory's -owner, the issuer must log onto the machine as the local superuser -root. For local disk directories, only the local superuser -root is allowed to issue the UNIX chown command that the -uss command interpreter invokes to change the owner from the -default value (the directory's creator, which in this case is the issuer -of the uss command). The issuer must then also use the --admin argument to the uss add or uss bulk -command to authenticate as a privileged AFS administrator, which is required -for creating the Authentication Database and Protection Database entries that -the uss command interpreter always creates for a new -account. -
    -

    The instruction has the following syntax: -

       D  pathname  mode_bits  owner  ACL
    -   
    -
    -

    where -

    -

    D -
    Indicates a directory creation instruction. It must be a capital -letter. -

    pathname -
    Specifies the directory's full pathname. It can include -variables. -

    Specify the read/write path to the directory, to avoid the failure that -results from attempting to create a new directory in a read-only -volume. By convention, the read/write path is indicated by placing a -period before the cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -reference page for the fs mkmount command. -

    mode_bits -
    Sets the directory's UNIX mode bits. Acceptable values are the -standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. The -first (owner) x bit must be turned on to enable access to a -directory. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the directory's owner in the output from the UNIX ls -ld -command. If the directory resides in AFS, place the $UID variable in -this field. If the directory resides on the local disk, this field must -be the username or UID of the uss command's issuer, unless the -issuer is logged in as the local superuser root. -

    ACL -
    Sets the ACL on the new directory. It must appear even if the new -directory resides on the local disk rather than in AFS, but is ignored in that -case. Provide one or more paired values, each pair consisting of an AFS -username or group name and the desired permissions, in that order. -Separate the two parts of the pair, and each pair, with a space. The -fs setacl reference page describes the available -permissions. -

    For an AFS directory, grant all permissions to the directory's owner -at least. Usually that is the new user, in which case the appropriate -value is $USER all. -

    It is not possible to grant any permissions to the issuer of the -uss command. As the last step in account creation, the -uss command interpreter automatically deletes that person from any -ACLs set during the creation process. -

    -

    The E Instruction for Creating a Single-line File - - - - - - -

    The E instruction in a uss template file creates a -file by echoing a specified character string into it. Its intended use -is to create files in the user home directory created by the V -instruction in the template file, or in a subdirectory created by a -D instruction. -

    Any number of E instructions can appear in the template -file. If the file resides in a directory created by a D -instruction, the E instruction must follow the D -instruction in the file. -

    The E and F instructions have complementary -advantages. The character string echoed into the file by an -E instruction can be customized for each user, because it can -include the standard variables for which the uss command -interpreter substitutes the values specified by arguments to the uss -add command or fields in a bulk input file add -instruction. In contrast, a file created using the F -instruction cannot include variables and so has the same content for all -users. However, a file created by an E instruction can be a -single line only, because no carriage returns (newline characters) are allowed -in the character string. -

    Although it is possible to use the E instruction to create a -file on the local disk of the machine where the uss command is -issued, it is not recommended. The preferred method for automated -creation of files on a local disk is the package program. -The main complication is that designating any user other than the issuer as -the new file's owner requires logging onto the machine as the local -superuser root. For local disk files, only the local -superuser root is allowed to issue the UNIX chown -command that the uss command interpreter invokes to change the -owner from the default value (the file's creator, which in this case is -the issuer of the uss command). The issuer must then also -use the -admin argument to the uss add or uss -bulk command to authenticate as a privileged AFS administrator, which is -required for creating the Authentication Database and Protection Database -entries that the uss command interpreter always creates for a new -account. -

    The instruction has the following syntax: -

       E  pathname  mode_bits  owner  "contents"
    -   
    -
    -

    where -

    -

    E -
    Indicates a file creation instruction. It must be a capital -letter. -

    pathname -
    Specifies the file's full pathname. It can include -variables. -

    Specify the read/write path to the file, to avoid the failure that results -from attempting to create a new file in a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -reference page for the fs mkmount command. -

    mode_bits -
    Sets the file's UNIX mode bits. Acceptable values are the -standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the file's owner in the output from the UNIX ls -l -command. If the file resides in AFS, place the $UID variable in this -field. If the file resides on the local disk, specify the username or -UID of the uss command's issuer; otherwise, the account -creation operation halts immediately. -

    contents -
    Specifies the one-line character string to write into the new file. -Surround it with double quotes if it contains one or more spaces. It -cannot contain the newline character, but can contain any of the standard -variables, which the command interpreter resolves as it creates the -file. -
    -

    The F Instruction for Creating a File -from a Prototype - - - - - - -

    The F instruction in a uss template file creates a -file by copying the contents of an existing file (the prototype) -into it. Its intended use is to create files in the user home directory -created by the V instruction in the template file, or in a -subdirectory created by a D instruction. -

    Any number of F instructions can appear in the template -file. If the file resides in a directory created by a D -instruction, the F instruction must follow the D -instruction in the file. -

    The E and F instructions have complementary -advantages. A file created using the F instruction has the -same content for all users, whereas a file created by an E -instruction can be customized for each user if it includes variables. -However, a file created by an E instruction can be a single line -only, whereas the prototype file copied by an F instruction can be -any length. -

    Although it is possible to use the F instruction to create a -file on the local disk of the machine where the uss command is -issued, it is not recommended. The preferred method for automated -creation of files on a local disk is the package program. -The main complication is that designating any user other than the issuer as -the new file's owner requires logging onto the machine as the local -superuser root. For local disk files, only the local -superuser root is allowed to issue the UNIX chown -command that the uss command interpreter invokes to change the -owner from the default value (the file's creator, which in this case is -the issuer of the uss command). The issuer must then also -use the -admin argument to the uss add or uss -bulk command to authenticate as a privileged AFS administrator, which is -required for creating the Authentication Database and Protection Database -entries that the uss command interpreter always creates for a new -account. -

    The instruction has the following syntax: -

       F  pathname  mode_bits  owner  prototype_file
    -   
    -
    -

    where -

    -

    F -
    Indicates a file creation instruction. It must be a capital -letter. -

    pathname -
    Specifies the full pathname of the file to create, including the -filename. It can include variables. -

    Specify the read/write path to the file, to avoid the failure that results -from attempting to create a new file in a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -reference page for the fs mkmount command. -

    mode_bits -
    Sets the file's UNIX mode bits. Acceptable values are the -standard three- or four-digit numbers corresponding to combinations of -permissions. Examples: 755 corresponds to -rwxr-xr-x, and 644 to rw-r--r--. -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the file's owner in the output from the UNIX ls -l -command. If the file resides in AFS, place the $UID variable in this -field. If the file resides on the local disk, specify the username or -UID of the uss command's issuer; otherwise, the account -creation operation halts immediately. -

    prototype_file -
    Names the AFS or local disk directory that houses the prototype file to -copy. The prototype file's name must match the final element in -the pathname field. -
    -

    The G Instruction for Facilitating Even -Distribution of Home Directories - - - - - - -

    The G instruction in a uss template file creates a -directory as one of the set of directories from which the uss -command interpreter selects when choosing a new user home directory's -parent directory. More specifically, when the $AUTO variable appears in -the mount_point field of a V instruction, the command -interpreter substitutes for it the directory defined by a G -instruction that currently has the fewest entries. -

    The instruction's intended use is to distribute user accounts evenly -among several directories, rather than using directories that reflect -divisions such as departmental affiliation. Distributing home -directories in this fashion is useful mainly in very large cells where storing -all user home directories under a single parent directory potentially slows -directory lookup, or where a workplace-based division results in unevenly -sized directories such that some users consistently experience slower -directory lookup than others. See the chapter on uss in the -IBM AFS Administration Guide for more information. -

    Any number of G instructions can appear in the template -file. If the V instruction includes the $AUTO variable, it -must appear after all of the G instructions in the file. -

    The instruction has the following syntax: -

       G  directory
    -   
    -
    -

    where -

    -

    G -
    Indicates an instruction that creates a directory to be considered as a -value for the $AUTO variable. It must be a capital letter. -

    directory -
    Specifies the directory's name as either a complete pathname or only -the directory name. The choice determines the appropriate format for -the mount_point field of a V instruction, as discussed in -the following example. -

    Specify the read/write path to the directory, to avoid the failure that -results from attempting to create a new mount point in a read-only volume when -the $AUTO variable is used in a V instruction's -mount_point field. By convention, the read/write path is -indicated by placing a period before the cell name at the pathname's -second level (for example, /afs/.abc.com). For -further discussion of the concept of read/write and read-only paths through -the filespace, see the reference page for the fs mkmount -command. -

    -

    The L and S Instructions for Creating a Link - - - - - - - - - - - - - -

    The L instruction in a uss template file creates a -hard link between two files, as achieved by the standard UNIX ln -command. The S instruction creates a symbolic link between -two files, as achieved by the standard UNIX ln -s command. A -full explanation of links is beyond the scope of this document, but the basic -effect is to create a second name for an existing file, enabling access via -either name. Creating a link does not create a second copy of the -file. -

    AFS allows hard links only if the linked files reside in the same -directory, because it becomes difficult to determine which access control list -(ACL) applies to the file if the two copies reside in directories with -different ACLs. AFS allows symbolic links between two files that reside -in different directories, or even different volumes. The File Server -uses the ACL associated with the actual file rather than the link. -

    Any number of L and S instructions can appear in the -template file. If the existing file or link is to reside in a directory -created by a D instruction, or if the existing file was created by -an E or F instruction, the L or S -instruction must follow the D, E, or F -instruction. -

    The instructions share the following syntax: -

       L  existing_file  link
    -   S  existing_file  link
    -   
    -
    -

    where -

    -

    L -
    Indicates a hard link creation instruction. It must be a capital -letter. -

    S -
    Indicates a symbolic link creation instruction. It must be a -capital letter. -

    existing_file -
    Specifies the complete pathname of the existing file. -

    link -
    Specifies the complete pathname of the second name for the file. -

    Specify the read/write path to the link, to avoid the failure that results -from attempting to create a new link in a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -reference page for the fs mkmount command. -

    -

    The V Instruction for Creating and -Mounting a Volume - - - - - - - - - - - - - - - - - - - -

    The V instruction in a uss template file creates a -volume on a specified file server machine and partition and creates an entry -for it in the Volume Location Database (VLDB). It mounts the volume at -a location in the AFS file space that becomes the user's home directory, -then designates the directory's owner and sets its access control list -(ACL). -

    Only one V instruction can appear in the template file, and one -must appear if the template file contains any instructions at all (is not -empty). All other instructions are optional, except that the template -must include G instructions if the $AUTO variable appears in -it. (The V instruction is not necessarily the first line in -the template. If the template includes the $AUTO variable, then the -G instructions which provide values for the variable must precede -it in the file.) -

    The instruction has the following syntax: -

       V  volume_name  server  partition  quota  mount_point owner  ACL
    -   
    -
    -

    where -

    -

    V -
    Indicates a volume creation instruction. It must be a capital -letter. -

    volume_name -
    Specifies the volume's name. To follow the convention for AFS -user volume names, specify the value user.$USER. -Provide a value for the $USER variable via the uss add -command's -user argument or the username field in the -bulk input file add instruction. -

    server -
    Names the file server machine on which to create the new user's -volume. It is best to provide the fully-qualified hostname (for -example, fs1.abc.com), but an abbreviated form is -acceptable provided that the cell's naming service is available to -resolve it at the time the volume is created. To read in the value from -the uss add command's -server argument, specify the -value $SERVER. -

    partition -
    Specifies the partition on which to create the user's volume; it -must be on the file server machine named in the server field. -Identify the partition by its complete name (for example, /vicepa) -or use or use one of the following abbreviations. -
       /vicepa     =     vicepa      =      a      =      0
    -   /vicepb     =     vicepb      =      b      =      1
    -   
    -
    -

    -

    After /vicepz (for which the index is 25) comes -

       /vicepaa    =     vicepaa     =      aa     =      26
    -   /vicepab    =     vicepab     =      ab     =      27
    -   
    -
    -

    and so on through -

       /vicepiv    =     vicepiv     =      iv     =      255
    -    
    -
    -

    To read in the value from the uss add command's --partition argument, specify the value $PART. -

    quota -
    Sets the maximum number of kilobyte blocks the volume can occupy on the -file server machine's disk. Specify an integer constant if all -volumes have the same quota (1024 equals a megabyte), or use one of -the number variables ($1 through $9) to assign different values to different -volumes. -

    mount_point -
    Creates a mount point for the volume, which serves as the volume's -root directory. Include the $USER variable as part of the pathname to -follow the convention that user home directory names include the -username. -

    Specify the read/write path to the mount point, to avoid the failure that -results from attempting to create a new mount point in a read-only -volume. By convention, the read/write path is indicated by placing a -period before the cell name at the pathname's second level (for example, -/afs/.abc.com). If the $AUTO variable appears -in this field, the directories named by each G instruction possibly -already indicate the read/write path. For further discussion of the -concept of read/write and read-only paths through the filespace, see the -reference page for the fs mkmount command.. -
    Note:If used, the $MTPT variable in this field takes its value from the uss -add command's -mount argument or from the -mount_point field of an add instruction in the bulk input -file. However, subsequent uses of the $MTPT variable (usually in -following D, E, or F instructions) take as -their value the complete contents of this field. -
    -

    owner -
    Specifies the username or UNIX user ID (UID) of the user to be designated -the mount point's owner in the output from the UNIX ls -ld -command. To follow the convention for home directory ownership, place -the value $UID in this field. -

    ACL -
    Sets the ACL on the new directory. Provide one or more paired -values, each pair consisting of an AFS username or group name and the desired -permissions, in that order. Separate the two parts of the pair, and -each pair, with a space. The fs setacl reference page -describes the available permissions. -

    Grant all permissions to the new user at least. The appropriate -value is $USER all. -

    AFS automatically grants the system:administrators group -all permissions as well. It is not possible to grant any permissions to -the issuer of the uss command. As the last step in account -creation, the uss command interpreter automatically deletes that -user from any ACLs set during the creation process. -

    -

    The X Instruction for Running a -Command - - - -

    The X instruction in a uss template file runs the -indicated command, which can be a standard UNIX or AFS command. It can -include any variables from the template file, which the uss command -interpreter resolves before passing the command on to the appropriate other -command interpreter. It must be a single line only, however (cannot -contain carriage returns or newline characters). -

    Any number of X instructions can appear in the template -file. If an instruction manipulates an element created by another -instruction, it must follow that instruction in the file. -

    The instruction has the following syntax: -

       X "command"
    -   
    -
    -

    where -

    -

    X -
    Indicates a command execution instruction. It must be a capital -letter. -

    command -
    Specifies the command to run. Surround it with double quotes as -shown if it contains one or more spaces. It can contain any variables -from the template file, but not newline characters. -
    -

    Examples -

    The following example A instruction sets a password lifetime of -254 days, prohibits password reuse, limits the number of consecutive failed -authentication attempts to nine and sets the corresponding locktime to -25:30 minutes (which is a multiple of 8.5 minutes). The -username is read in from the -user argument to the uss -add command or from the username field in each add -instruction in a bulk input file. -

       A $USER 254 noreuse 9 25:30
    -   
    -
    -

    The following example D instruction creates a directory called -public in a new user's home directory, designates the user as -the directory's owner, and grants him or her all ACL permissions. -

       D $MTPT/public 0755 $UID $USER all 
    -   
    -
    -

    The following example E instruction creates a file in the -current working directory called -username.etcp. The contents are an entry -suitable for incorporating into the cell's global -/etc/password file. -

       E  $USER.etcp  0644 root "$USER:X:$UID:10:$NAME:$MTPT:/bin/csh"
    -   
    -
    -

    The following example F instruction, appropriate for the ABC -Corporation cell, copies a prototype .login file into the -user's home directory. -

       F $MTPT/.login 0644 $UID /afs/abc.com/common/uss/skel/.login 
    -   
    -
    -

    In the following example, the State University cell's administrators -have decided to distribute user home directories evenly into three -directories. They define three G instructions: -

       G usr1
    -   G usr2
    -   G usr3
    -   
    -
    -

    and then put the following value in the mount_point field of the -V instruction: -

       /afs/stateu.edu/$AUTO/$USER
    -   
    -
    -

    Alternatively, if they include the entire directory pathname in the -G instruction: -

       G /afs/stateu.edu/usr1
    -   G /afs/stateu.edu/usr2
    -   G /afs/stateu.edu/usr3
    -   
    -
    -

    then the mount_point field of the V instruction -specifies only the following: -

       $AUTO/$USER
    -   
    -
    -

    The following example L instruction creates a hard link between -the files mail and mbox in the user's home -directory. -

       L $MTPT/mbox $MTPT/mail
    -   
    -
    -

    The following example S instruction, appropriate for the ABC -Corporation cell, links the file Mail/outgoing in the user's -home directory to the file -/afs/abc.com/common/mail/outgoing. -

       S /afs/abc.com/common/mail/outgoing $MTPT/Mail/outgoing
    -   
    -
    -

    The following example V instruction creates a volume called -user.username on the /vicepa partition -of the specified file server machine, assigning it a quota of 3000 kilobyte -blocks. The mount point is under /afs/abc.com/usr and -matches the username (the value of the $USER variable). The user owns -the home directory and has all access rights to it. The instruction -appears on two lines only for legibility; it must appear on a single line -in the template file. -

       V user.$USER $SERVER.abc.com /vicepa 3000   \
    -           /afs/abc.com/usr/$USER $UID $USER all 
    -   
    -
    -

    The following example X instruction mounts the backup version of -the user's volume at the OldFiles subdirectory. -

       X "fs mkm /afs/abc.com/usr/$USER/OldFiles   user.$USER.backup"
    -   
    -
    -

    Related Information -

    uss Bulk Input File -

    fs mkmount -

    uss add -

    uss bulk -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf056.htm b/doc/html/AdminReference/auarf056.htm deleted file mode 100644 index b2036c56a..000000000 --- a/doc/html/AdminReference/auarf056.htm +++ /dev/null @@ -1,26 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -


    AFS System Commands

    -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf057.htm b/doc/html/AdminReference/auarf057.htm deleted file mode 100644 index 3be407f2f..000000000 --- a/doc/html/AdminReference/auarf057.htm +++ /dev/null @@ -1,451 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    afs_intro

    -

    Purpose -

    Introduction to AFS commands -

    Description -

    AFS provides many commands that enable users and system administrators to -use and customize its features. Many of the commands belong to the -following categories, called command suites. -

    -

    backup -
    Interface for configuring and operating the AFS Backup System -

    bos -
    Interface to the Basic Overseer (BOS) Server for administering server -processes and configuration files -

    fs -
    Interface for administering access control lists (ACLs), the Cache -Manager, and other miscellaneous file system functions -

    fstrace -
    Interface for tracing Cache Manager operations when debugging problems -

    kas -
    Interface to the Authentication Server for administering security and -authentication information -

    pts -
    Interface to the Protection Server for administering AFS ID and group -membership information -

    uss -
    Interface for automated administration of user accounts -

    vos -
    Interface to the Volume Server and Volume Location (VL) Server for -administering volumes -
    -

    In addition, there are several commands that do not belong to -suites. -

    AFS Command Syntax
    -

    AFS commands that belong to suites have the following -structure: -

       command_suite operation_code -switch <value>[+]  [-flag]
    -   
    -
    -

    Command Names
    -

    Together, the command_suite and operation_code -make up the command name. -

    The command_suite specifies the group of related commands to -which the command belongs, and indicates which command interpreter and server -process perform the command. AFS has several command suites, including -bos, fs, kas, package, -pts, scout, uss and vos. -Some of these suites have an interactive mode in which the issuer omits the -command_suite portion of the command name. -

    The operation_code tells the command interpreter and server -process which action to perform. Most command suites include several -operation codes. The IBM AFS Administration Reference -describes each operation code in detail, and the IBM AFS Administration -Guide describes how to use them in the context of performing -administrative tasks. -

    Several AFS commands do not belong to a suite and so their names do not -have a command_suite portion. Their structure is otherwise -similar to the commands in the suites. -

    Options
    -

    The term option refers to both arguments and flags, which -are described in the following sections. -

    Arguments
    -

    One or more arguments can follow the command name. Arguments -specify the entities on which to act while performing the command (for -example, which server machine, server process, or file). To minimize -the potential for error, provide a command's arguments in the order -prescribed in its syntax definition. -

    Each argument has two parts, which appear in the indicated order: -

      -

    • The switch specifies the argument's type and is preceded -by a hyphen ( - ). For instance, the switch --server usually indicates that the argument names a server -machine. Switches can often be omitted, subject to the rules outlined -in Conditions for Omitting Switches. -

    • The value names a particular entity of the type specified by -the preceding switch. For example, the proper value for a --server switch is a server machine name like -fs3.abc.com. Unlike switches (which have a -required form), values vary depending on what the issuer wants to -accomplish. Values appear surrounded by angle brackets (< ->) in command descriptions and the online help to show that they are -user-supplied variable information. -
    -

    Some arguments accept multiple values, as indicated by trailing plus sign ( -+ ) in the command descriptions and online help. How many of -a command's arguments take multiple values, and their ordering with -respect to other arguments, determine when it is acceptable to omit -switches. See Conditions for Omitting Switches. -

    Some commands have optional as well as required arguments; the command -descriptions and online help show optional arguments in square brackets ([ -]). -

    Flags
    -

    Some commands have one or more flags, which specify the manner in which -the command interpreter and server process perform the command, or what kind -of output it produces. Flags are preceded by hyphens like switches, but -they take no values. Although the command descriptions and online help -generally list a command's flags after its arguments, there is no -prescribed order for flags. They can appear anywhere on the command -line following the operation code, except in between the parts of an -argument. Flags are always optional. -

    An Example Command
    -

    The following example illustrates the different parts -of a command that belongs to an AFS command suite. -

       % bos getdate -server fs1.abc.com -file ptserver kaserver 
    -   
    -
    -

    where -

      -

    • bos is the command suite. The BOS Server executes most -of the commands in this suite. -

    • getdate is the operation code. It tells the BOS Server -on the specified server machine (in this case -fs1.abc.com) to report the modification dates of -binary files in the local /usr/afs/bin directory. -

    • -server fs1.abc.com is one argument, with --server as the switch and fs1.abc.com as -the value. This argument specifies the server machine on which BOS -Server is to collect and report binary dates. -

    • -file ptserver kaserver is an argument that takes multiple -values. The switch is -file and the values are -ptserver and kaserver. This argument tells the -BOS Server to report the modification dates on the files -/usr/afs/bin/kaserver and /usr/afs/bin/ptserver. -
    -

    Rules for Entering AFS Commands
    -

    Enter each AFS command on a single line (press -<Return> only at the end of the command). Some commands -in this document appear broken across multiple lines, but that is for -legibility only. -

    Use a space to separate each element on a command line from its -neighbors. Spaces rather than commas also separate multiple values of -an argument. -

    In many cases, the issuer of a command can reduce the amount of typing -necessary by using one or both of the following methods: -

      -

    • Omitting switches -

    • Using accepted abbreviations for operation codes, switches (if they are -included at all), and some types of values -
    -

    The following sections explain the conditions for omitting or shortening -parts of the command line. It is always acceptable to type a command in -full, with all of its switches and no abbreviations. -

    Conditions for Omitting Switches  -It is always acceptable to type the switch part of an -argument, but in many cases it is not necessary. Specifically, switches -can be omitted if the following conditions are met. -

      -

    • All of the command's required arguments appear in the order -prescribed by the syntax statement -

    • No switch is provided for any argument -

    • There is only one value for each argument (but note the important -exception discussed in the following paragraph) -
    -

    Omitting switches is possible only because there is a prescribed order for -each command's arguments. When the issuer does not include -switches, the command interpreter relies instead on the order of -arguments; it assumes that the first element after the operation code is -the command's first argument, the next element is the command's -second argument, and so on. The important exception is when a -command's final required argument accepts multiple values. In this -case, the command interpreter assumes that the issuer has correctly provided -one value for each argument up through the final one, so any additional values -at the end belong to the final argument. -

    The following list describes the rules for omitting switches from the -opposite perspective: an argument's switch must be provided when -any of the following conditions apply. -

      -

    • The command's arguments do not appear in the prescribed order -

    • An optional argument is omitted but a subsequent optional argument is -provided -

    • A switch is provided for a preceding argument -

    • More than one value is supplied for a preceding argument (which must take -multiple values, of course); without a switch on the current argument, -the command interpreter assumes that the current argument is another value for -the preceding argument -
    -

    An Example of Omitting Switches  -Consider again the example command from An Example Command. -

       %  bos getdate -server fs1.abc.com -file ptserver kaserver
    -   
    -
    -

    This command has two required arguments: the server machine name -(identified by the -server switch) and binary file name (identified -by the -file switch). The second argument accepts multiple -values. By complying with all three conditions, the issuer can omit the -switches: -

       % bos getdate fs1.abc.com ptserver kaserver
    -   
    -
    -

    Because there are no switches, the bos command interpreter -relies on the order of arguments. It assumes that the first element -following the operation code, fs1.abc.com, is the -server machine name, and that the next argument, ptserver, is a -binary file name. Then, because the command's second (and last) -argument accepts multiple values, the command interpreter correctly interprets -kaserver as an additional value for it. -

    On the other hand, the following is not acceptable because it violates the -first two conditions in Conditions for Omitting Switches: even though there is only one value per argument, the -arguments do not appear in the prescribed order, and a switch is provided for -one argument but not the other. -

       % bos getdate ptserver -server fs1.abc.com
    -   
    -
    -

    Rules for Using Abbreviations and Aliases
    -

    This section explains how to abbreviate operation codes, -option names, server machine names, partition names, and cell names. It -is not possible to abbreviate other types of values. -

    Abbreviating Operation Codes  -It is acceptable to abbreviate an operation code to the shortest form -that still distinguishes it from the other operation codes in its -suite. -

    For example, it is acceptable to shorten bos install to bos -i because there are no other operation codes in the bos -command suite that begin with the letter i. In contrast, -there are several bos operation codes that start with the letter -s, so the abbreviations must be longer to remain unambiguous: -

    -

    bos sa for bos salvage -

    bos seta for bos setauth -

    bos setc for bos setcellname -

    bos setr for bos setrestart -

    bos sh for bos shutdown -

    bos start for bos start -

    bos startu for bos startup -

    bos stat for bos status -

    bos sto for bos stop -

    -

    In addition to abbreviations, some operation codes have an -alias, a short form that is not derived by abbreviating the -operation code to its shortest unambiguous form. For example, the alias -for the fs setacl command is fs sa, whereas the shortest -unambiguous abbreviation is fs seta. -

    There are two usual reasons an operation code has an alias: -

      -

    • Because the command is frequently issued, it is convenient to have a form -shorter than the one derived by abbreviating. The fs setacl -command is an example. -

    • Because the command's name has changed, but users of previous -versions of AFS know the former name. For example, bos -listhosts has the alias bos getcell, its former name. -It is acceptable to abbreviate aliases to their shortest unambiguous form (for -example, bos getcell to bos getc). -
    -

    Even if an operation code has an alias, it is still acceptable to use the -shortest unambiguous form. Thus, the fs setacl command has -three acceptable forms: fs setacl (the full form), fs -seta (the shortest abbreviation), and fs sa (the -alias). -

    Abbreviating Switches and Flags  -It is acceptable to shorten a switch or flag to the shortest form that -distinguishes it from the other switches and flags for its operation -code. It is often possible to omit switches entirely, subject to the -conditions listed in Conditions for Omitting Switches. -

    Abbreviating Server Machine Names  -AFS server machines must have fully-qualified -Internet-style host names (for example, fs1.abc.com), -but it is not always necessary to type the full name on the command -line. AFS commands accept unambiguous shortened forms, but depend on -the cell's name service (such as the Domain Name Service) or a local host -table to resolve a shortened name to the fully-qualified equivalent when the -command is issued. -

    Most commands also accept the dotted decimal form of the machine's IP -address as an identifier. -

    Abbreviating Partition Names  -Partitions that house AFS volumes must have names of -the form /vicepx or /vicepxx, where -the variable final portion is one or two lowercase letters. By -convention, the first server partition created on a file server machine is -called /vicepa, the second /vicepb, and so on. -The IBM AFS Quick Beginnings explains how to configure and name a -file server machine's partitions in preparation for storing AFS volumes -on them. -

    When issuing AFS commands, you can abbreviate a partition name using any of -the following forms: -

       /vicepa     =     vicepa      =      a      =      0
    -   /vicepb     =     vicepb      =      b      =      1
    -   
    -
    -

    After /vicepz (for which the index is 25) comes -

       /vicepaa    =     vicepaa     =      aa     =      26
    -   /vicepab    =     vicepab     =      ab     =      27
    -   
    -
    -

    and so on through -

       /vicepiv    =     vicepiv     =      iv     =      255
    -    
    -
    -

    Abbreviating Cell Names  -A cell's full name usually matches its Internet -domain name (such as stateu.edu for the State University or -abc.com for ABC Corporation). Some AFS commands -accept unambiguous shortened forms, usually with respect to the local -/usr/vice/etc/CellServDB file but sometimes depending on the -ability of the local name service to resolve the corresponding domain -name. -

    Displaying Online Help for AFS Commands
    -

    To display online help for AFS commands that belong to -suites, use the help and apropos operation codes. -A -help flag is also available on every almost every AFS -command. -

    The online help entry for a command consists of two or three lines: -

      -

    • The first line names the command and briefly describes what it does -

    • If the command has aliases, they appear on the next line -

    • The final line, which begins with the string Usage:, -lists the command's options in the prescribed order; online help -entries use the same typographical symbols (brackets and so on) as this -documentation. -
    -

    If no operation code is specified, the help operation code -displays the first line (short description) for every operation code in the -suite: -

       
    -   % command_suite  help
    -   
    -
    -

    If the issuer specifies one or more operation codes, the help -operation code displays each command's complete online entry (short -description, alias if any, and syntax): -

       
    -   % command_suite help operation_code+
    -   
    -
    -

    The -help flag displays a command's syntax but not the -short description or alias: -

       % command_name -help  
    -   
    -
    -

    The apropos operation code displays the short description of any -command in a suite whose operation code or short description includes the -specified keyword: -

       % command_suite apropos "<help string>"
    -   
    -
    -

    The following example command displays the complete online help entry for -the fs setacl command: -

       
    -   % fs help setacl   
    -   fs setacl: set access control list
    -   aliases: sa
    -   Usage: fs setacl -dir <directory>+ -acl <access list entries>+ 
    -   [-clear] [-negative] [-id] [-if] [-help]
    -   
    -
    -

    To see only the syntax statement, use the -help flag: -

       % fs setacl -help
    -   Usage: fs setacl -dir <directory>+ -acl <access list entries>+ 
    -   [-clear] [-negative] [-id] [-if] [-help]
    -   
    -
    -

    In the following example, a user wants to display the quota for her home -volume. She knows that the relevant command belongs to the -fs suite, but cannot remember the operation code. She uses -quota as the keyword: -

       
    -   % fs apropos quota
    -   listquota: list volume quota
    -   quota: show volume quota usage
    -   setquota: set volume quota
    -   
    -
    -

    The following illustrates the error message that results if no command name -or short description contains the keyword: -

       
    -   % fs apropos "list quota"
    -   Sorry, no commands found
    -   
    -
    -

    Privilege Required -

    Many AFS commands require one or more types of administrative -privilege. See the reference page for each command. -

    Related Information -

    -

    afsd -

    afsmonitor -

    backup -

    bos -

    bosserver -

    buserver -

    butc -

    dlog -

    dpass -

    fileserver -

    fms -

    fs -

    fstrace -

    ftpd (AFS version) -

    inetd (AFS version) -

    kadb_check -

    kas -

    kaserver -

    kdb -

    klog -

    knfs -

    kpasswd -

    kpwvalid -

    package -

    package -

    package_test -

    pagsh -

    prdb_check -

    pts -

    ptserver -

    rcp (AFS version) -

    rsh (AFS version) -

    runntp -

    rxdebug -

    salvager -

    scout -

    sys -

    tokens -

    translate_et -

    unlog -

    up -

    upclient -

    upserver -

    uss -

    vldb_check -

    vlserver -

    volinfo -

    volserver -

    vos -

    xfs_size_check -

    xstat_cm_test -

    xstat_fs_test -

    -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf058.htm b/doc/html/AdminReference/auarf058.htm deleted file mode 100644 index 4ccffb67f..000000000 --- a/doc/html/AdminReference/auarf058.htm +++ /dev/null @@ -1,433 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    afsd

    - - - - - - - - -

    Purpose -

    Initializes the Cache Manager and starts related daemons. -

    Synopsis -

    afsd [-blocks <1024 byte blocks in cache>]  
    -     [-files <files in cache>]
    -     [-rootvol <name of AFS root volume>]
    -     [-stat <number of stat entries>]
    -     [-memcache]  [-cachedir <cache directory>]  
    -     [-mountdir <mount location>]
    -     [-daemons <number of daemons to use>]  
    -     [-nosettime]  [-verbose]  [-rmtsys]  [-debug]  
    -     [-chunksize <log(2) of chunk size>]
    -     [-dcache <number of dcache entries>]
    -     [-volumes <number of volume entries>]  
    -     [-biods <number of bkg I/O daemons (aix vm)>]
    -     [-prealloc <number of 'small' preallocated blocks>]
    -     [-confdir <configuration directory>]
    -     [-logfile <Place to keep the CM log>]  
    -     [-waitclose]  [-shutdown]  [-enable_peer_stats]  
    -     [-enable_process_stats]  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The afsd command initializes the Cache Manager on an AFS client -machine by transferring AFS-related configuration information into kernel -memory and starting several daemons. More specifically, the -afsd command performs the following actions: -

      -

    • Sets a field in kernel memory that defines the machine's cell -membership. Some Cache Manager-internal operations and system calls -consult this field to learn which cell to execute in. (The AFS command -interpreters refer to the /usr/vice/etc/ThisCell file -instead.) This information is transferred into the kernel from the -/usr/vice/etc/ThisCell file and cannot be changed until the -afsd program runs again. -

    • Places in kernel memory the names and Internet addresses of the database -server machines in the local cell and (optionally) foreign cells. The -appearance of a cell's database server machines in this list enables the -Cache Manager to contact them and to access files in the cell. Omission -of a cell from this list, or incorrect information about its database server -machines, prevents the Cache Manager from accessing files in it. -

      The list of database server machines is transferred into the kernel from -the /usr/vice/etc/CellServDB file. After initialization, use -the fs newcell command to change the kernel-resident list without -having to reboot. -

    • Mounts the root of the AFS filespace on a directory on the machine's -local disk, according to either the first field in the -/usr/vice/etc/cacheinfo file (the default) or the afsd -command's -mountdir argument. The conventional value is -/afs. -

    • Determines which volume to mount at the root of the AFS file tree. -The default is the volume root.afs; use the --rootvol argument to override it. Although the base -(read/write) form of the volume name is the appropriate value, the Cache -Manager has a bias for accessing the read-only version of the volume (by -convention, root.afs.readonly) if it is -available. -

    • Configures the cache on disk (the default) or in machine memory if the --memcache argument is provided. In the latter case, the -afsd program allocates space in machine memory for caching, and the -Cache Manager uses no disk space for caching even if the machine has a -disk. -

    • Defines the name of the local disk directory devoted to caching, when the --memcache argument is not used. If necessary, the -afsd program creates the directory (its parent directory must -already exist). It does not remove the directory that formerly served -this function, if one exists. -

      The second field in the /usr/vice/etc/cacheinfo file is the -source for this name, and the standard value is the /usr/vice/cache -directory. Use the -cachedir argument to override the value -in the cacheinfo file. -

    • Sets the size of the cache. The default source for the value is the -third field in the /usr/vice/etc/cacheinfo file, which specifies a -number of kilobytes. -

      For a memory cache, the following arguments to the afsd command -override the value in the cacheinfo file: -

        -

      • The -blocks argument, to specify a different number of kilobyte -blocks. -

      • The -dcache and -chunksize arguments together, to -set both the number of dcache entries and the chunk size (see below for -definition of these parameters). In this case, the afsd -program derives cache size by multiplying the two values. Using this -combination is not recommended, as it requires the issuer to perform the -calculation beforehand to determine the resulting cache size. -

      • The -dcache argument by itself. In this case, the -afsd program derives cache size by multiplying the value specified -by the -dcache argument by the default memory cache chunk size of -eight kilobytes. Using this argument is not recommended, as it requires -the issuer to perform the calculation beforehand to determine the resulting -cache size. -
      -

      For satisfactory memory cache performance, the specified value must leave -enough memory free to accommodate all other processes and commands that can -run on the machine. If the value exceeds the amount of memory -available, the afsd program exits without initializing the Cache -Manager and produces the following message on the standard output -stream: -

         afsd: memCache allocation failure at number KB
      -   
      -
      -

      where number is how many kilobytes were allocated just before the -failure. -

      For a disk cache, use the -blocks argument to the -afsd command to override the value in the cacheinfo -file. The value specified in either way sets an absolute upper limit on -cache size; values provided for other arguments (such as --dcache and -chunksize) never result in a larger -cache. The afsd program rejects any setting larger than 95% -of the partition size, and exits after generating an error message on the -standard output stream, because the cache implementation itself requires a -small amount of disk space and overfilling the partition can cause the client -machine to panic. -

      To change the size of a disk cache after initialization without rebooting, -use the fs setcachesize command; the setting persists until -the afsd command runs again or the fs setcachesize -command is reissued. The fs setcachesize command does not -work for memory caches. -

    • Sets the size of each cache chunk, and by implication the amount -of data that the Cache Manager requests at a time from the File Server (how -much data per fetch RPC, since AFS uses partial file transfer). -

      For a disk cache, a chunk is a Vn file and this -parameter sets the maximum size to which each one can expand; the default -is 64 KB. For a memory cache, each chunk is a collection of contiguous -memory blocks; the default is size is 8 KB. -

      To override the default chunk size for either type of cache, use the --chunksize argument to provide an integer to be used as an exponent -of two; see the Options section for details. For a -memory cache, if total cache size divided by chunk size leaves a remainder, -the afsd program rounds down the number of dcache entries, -resulting in a slightly smaller cache. -

    • Sets the number of chunks in the cache. For a memory cache, the -number of chunks is equal to the cache size divided by the chunk size. -For a disk cache, the number of chunks (Vn files) is set -to the largest of the following unless the -files argument is used -to set the value explicitly: -
        -

      • 100 -

      • 1.5 times the result of dividing cache size by chunk size -(cachesize/chunksize * 1.5) -

      • The result of dividing cachesize by 10 KB (cachesize/10240) -
      -

    • Sets the number of dcache entries allocated in machine memory for -storing information about the chunks in the cache. -

      For a disk cache, the /usr/vice/cache/CacheItems file contains -one entry for each Vn file. By default, one half -the number of these entries (but not more that 2,000) are duplicated as dcache -entries in machine memory for quicker access. -

      For a memory cache, there is no CacheItems file so all -information about cache chunks must be in memory as dcache entries. -Thus, there is no default number of dcache entries for a memory cache; -instead, the afsd program derives it by dividing the cache size by -the chunk size. -

      To set the number of dcache entries, use the -dcache -argument; the specified value can exceed the default limit of -2,000. Using this argument is not recommended for either type of -cache. Increasing the number of dcache entries for a disk cache -sometimes improves performance (because more entries are retrieved from memory -rather than from disk), but only marginally. Using this argument for a -memory cache requires the issuer to calculate the cache size by multiplying -this value by the chunk size. -

    • Sets the number of stat entries available in machine memory for -caching status information about cached AFS files. The default is -300; use the -stat argument to override the default. -

    • Randomly selects a file server machine in the local cell as the source for -the correct time. Every five minutes thereafter, the local clock is -adjusted (if necessary) to match the file server machine's clock. -

      Use the -nosettime flag to prevent the afsd command -from selecting a time standard. This is recommended only on file server -machines that are also acting as clients. File server machines maintain -the correct time using the Network Time Protocol Daemon instead. -

    -

    In addition to setting cache configuration parameters, the afsd -program starts the following daemons. (On most system types, these -daemons appear as nameless entries in the output of the UNIX ps -command.) -

      -

    • One callback daemon, which handles callbacks. It also -responds to the File Server's periodic probes, which check that the -client machine is still alive. -

    • One maintenance daemon, which performs the following -tasks: -
        -

      • Garbage collects obsolete data (for example, expired tokens) from kernel -memory -

      • Synchronizes files -

      • Refreshes information from read-only volumes once per hour -

      • Does delayed writes for NFS clients if the machine is running the NFS/AFS -Translator -
      -

    • One cache-truncation daemon, which flushes the cache when free -space is required, by writing cached data and status information to the File -Server. -

    • One server connection daemon, which sends a probe to the File -Server every few minutes to check that it is still accessible. It also -synchronizes the machine's clock with the clock on a randomly-chosen file -server machine, unless the -nosettime flag is used. There is -always one server connection daemon. -

    • One or more background daemons that improve performance by -pre-fetching files and performing background (delayed) writes of saved data -into AFS. -

      The default number of background daemons is two, enough to service at least -five simultaneous users of the machine. To increase the number, use the --daemons argument. A value greater than six is not generally -necessary. -

    • On some system types, one Rx listener daemon, which listens for -incoming RPCs. -

    • On some system types, one Rx event daemon, which reviews the Rx -system's queue of tasks and performs them as appropriate. Most -items in the queue are retransmissions of failed packets. -

    • On machines that run AIX with virtual memory (VM) integration, one or more -VM daemons (sometimes called I/O daemons, which transfer -data between disk and machine memory. The number of them depends on the -setting of the -biods and -daemons arguments: -
        -

      • If the -biods argument is used, it sets the number of VM -daemons. -

      • If only the -daemons argument is used, the number of VM daemons -is twice the number of background daemons. -

      • If neither argument is used, there are five VM daemons. -
      -
    -

    Cautions -

    Do not use the -shutdown parameter. It does not shutdown -the Cache Manager effectively. Instead, halt Cache Manager activity by -using the standard UNIX umount command to unmount the AFS root -directory (by convention, /afs). The machine must then be -rebooted to reinitialize the Cache Manager. -

    Options -

    -

    -blocks -
    Specifies the number of kilobyte blocks to be made available for caching -in the machine's cache directory (for a disk cache) or memory (for a -memory cache), overriding the default defined in the third field of the -/usr/vice/etc/cacheinfo file. For a disk cache, the value -cannot exceed 95% of the space available in the cache partition. If -using a memory cache, do not combine this argument with the -dcache -argument, since doing so can possibly result in a chunk size that is not an -exponent of 2. -

    -files -
    Specifies the number of Vn files to create in the -cache directory for a disk cache, overriding the default that is calculated as -described in the Description section. Each -Vn file accommodates a chunk of data, and can grow to a -maximum size of 64 KB by default. Do not combine this argument with the --memcache argument. -

    -rootvol -
    Names the read/write volume corresponding to the root directory for the -AFS file tree (which is usually the /afs directory). This -value overrides the default of the root.afs volume. -

    -stat -
    Specifies the number of entries to allocate in the machine's memory -for recording status information about the AFS files in the cache. This -value overrides the default of 300. -

    -memcache -
    Initializes a memory cache rather than a disk cache. Do not combine -this flag with the -files argument. -

    -cachedir -
    Names the local disk directory to be used as the cache. This value -overrides the default defined in the second field of the -/usr/vice/etc/cacheinfo file. -

    -mountdir -
    Names the local disk directory on which to mount the root of the AFS -filespace. This value overrides the default defined in the first field -of the /usr/vice/etc/cacheinfo file. If a value other than -the /afs directory is used, the machine cannot access the filespace -of cells that do use that value. -

    -daemons -
    Specifies the number of background daemons to run on the machine. -These daemons improve efficiency by doing prefetching and background writing -of saved data. This value overrides the default of 2, which is adequate -for a machine serving up to five users. Values greater than -6 are not generally more effective than 6. -

    Note: On AIX machines with integrated virtual memory (VM), -the number of VM daemons is set to twice the value of this argument, if it is -provided and the -biods argument is not. If both arguments -are omitted, there are five VM daemons. -

    -nosettime -
    Prevents the Cache Manager from synchronizing its clock with the clock on -a server machine selected at random, by checking the time on the server -machine every five minutes. Use this flag only on a machine that is -already using another time synchronization protocol (for example, a server -machine that is running the runntp process). -

    -verbose -
    Generates a detailed trace of the afsd program's actions -on the standard output stream. -

    -rmtsys -
    Initializes an additional daemon to execute AFS-specific system calls on -behalf of NFS client machines. Use this flag only if the machine is an -NFS/AFS translator machine serving users of NFS client machines who execute -AFS commands. - -

    -debug -
    Generates a highly detailed trace of the afsd program's -actions on the standard output stream. The information is useful mostly -for debugging purposes. -

    -chunksize -
    Sets the size of each cache chunk. The integer provided, which must -be from the range 0 to 30, is used as an exponent on the -number 2. It overrides the default of 16 for a disk cache -(216 is 64 KB) and 13 for a memory cache (213 is 8 -KB). A value of 0 or less, or greater than 30, -sets chunk size to the appropriate default. Values less than -10 (which sets chunk size to a 1 KB) are not recommended. -Combining this argument with the -dcache argument is not -recommended because it requires that the issuer calculate the cache size that -results. -

    -dcache -
    Sets the number of dcache entries in memory, which are used to store -information about cache chunks. For a disk cache, this overrides the -default, which is 50% of the number of Vn files (cache -chunks). For a memory cache, this argument effectively sets the number -of cache chunks, but its use is not recommended, because it requires the -issuer to calculate the resulting total cache size (derived by multiplying -this value by the chunk size). Do not combine this argument with the --blocks argument, since doing so can possibly result in a chunk -size that is not an exponent of 2. -

    -volumes -
    Specifies the number of memory structures to allocate for storing volume -location information. The default value is 50. -

    -biods -
    Sets the number of VM daemons dedicated to performing I/O operations on a -machine running a version of AIX with virtual memory (VM) integration. -If both this argument and the -daemons argument are omitted, the -default is five. If this argument is omitted but the --daemons argument is provided, the number of VM daemons is set to -twice the value of the -daemons argument. -
    Note:Provide this argument only on a machine that runs AIX with VM -integration. -
    -

    -prealloc -
    Specifies the number of pieces of memory to preallocate for the Cache -Manager's internal use. The default initial value is 400, but the -Cache Manager dynamically allocates more memory as it needs it. -

    -confdir -
    Names a directory other than the /usr/vice/etc directory from -which to fetch the cacheinfo, ThisCell, and -CellServDB configuration files. -

    -logfile -
    Is obsolete and has no real effect. It specifies an alternate file -in which to record a type of trace that the Cache Manager no longer -generates; the default value is /usr/vice/etc/AFSLog. -

    -waitclose -
    Has no effect on the operation of the Cache Manager. The behavior -it affected in previous versions of the Cache Manager, to perform synchronous -writes to the File Server, is now the default behavior. To perform -asynchronous writes in certain cases, use the fs storebehind -command. -

    -shutdown -
    Shuts down the Cache Manager, but not in the most effective possible -way. Do not use this flag. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The afsd command is normally included in the machine's AFS -initialization file, rather than typed at the command shell prompt. For -most disk caches, the appropriate form is -

       /usr/vice/etc/afsd
    -   
    -
    -

    The following command is appropriate when enabling a machine to act as an -NFS/AFS Translator machine serving more than five users. -

       /usr/vice/etc/afsd -daemons 4 -rmtsys
    -   
    -
    -

    The following command initializes a memory cache and sets chunk size to 16 -KB (214). -

       /usr/vice/etc/afsd -memcache -chunksize 14
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    CacheItems -

    CellServDB (client version) -

    ThisCell (client version) -

    Vn -

    cacheinfo - - - - - -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf059.htm b/doc/html/AdminReference/auarf059.htm deleted file mode 100644 index b14f0ab78..000000000 --- a/doc/html/AdminReference/auarf059.htm +++ /dev/null @@ -1,329 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    afsmonitor

    -

    Purpose -

    Monitors File Servers and Cache Managers -

    Description -

    afsmonitor [initcmd]  [-config <configuration file>]
    -           [-frequency <poll frequency, in seconds>]
    -           [-output <storage file name>]  [-detailed] 
    -           [-debug <turn debugging output on to the named file>]
    -           [-fshosts <list of file servers to monitor>+]
    -           [-cmhosts <list of cache managers to monitor>+]
    -           [-buffers <number of buffer slots>]  [-help]
    -   
    -afsmonitor [i]  [-co <configuration file>]
    -           [-fr <poll frequency, in seconds>]
    -           [-o <storage file name>]  [-det]
    -           [-deb <turn debugging output on to the named file>]
    -           [-fs <list of file servers to monitor>+]
    -           [-cm <list of cache managers to monitor>+]
    -           [-b <number of buffer slots>]  [-h]
    -
    -

    Description -

    The afsmonitor command initializes a program that gathers and -displays statistics about specified File Server and Cache Manager -operations. It allows the issuer to monitor, from a single location, a -wide range of File Server and Cache Manager operations on any number of -machines in both local and foreign cells. -

    There are 271 available File Server statistics and 571 available Cache -Manager statistics, listed in the appendix about afsmonitor -statistics in the IBM AFS Administration Guide. By default, -the command displays all of the relevant statistics for the file server -machines named by the -fshosts argument and the client machines -named by the -cmhosts argument. To limit the display to only -the statistics of interest, list them in the configuration file specified by -the -config argument. In addition, use the configuration -file for the following purposes: -

      -

    • To set threshold values for any monitored statistic. When the value -of a statistic exceeds the threshold, the afsmonitor command -displays it in reverse video. There are no default threshold -values. -

    • To invoke a program or script automatically when a statistic exceeds its -threshold. The AFS distribution does not include any such -scripts. -

    • To list the file server and client machines to monitor, instead of using -the -fshosts and -cmhosts arguments. -
    -

    For a description of the configuration file, see the afsmonitor -Configuration File reference page -

    Cautions -

    The following software must be accessible to a machine where the -afsmonitor program is running: -

      -

    • The AFS xstat libraries, which the afsmonitor -program uses to gather data -

    • The curses graphics package, which most UNIX distributions -provide as a standard utility -
    - - -

    The afsmonitor screens format successfully both on so-called -dumb terminals and in windowing systems that emulate terminals. For the -output to looks its best, the display environment needs to support reverse -video and cursor addressing. Set the TERM environment variable to the -correct terminal type, or to a value that has characteristics similar to the -actual terminal type. The display window or terminal must be at least -80 columns wide and 12 lines long. - - - -

    The afsmonitor program must run in the foreground, and in its -own separate, dedicated window or terminal. The window or terminal is -unavailable for any other activity as long as the afsmonitor -program is running. Any number of instances of the -afsmonitor program can run on a single machine, as long as each -instance runs in its own dedicated window or terminal. Note that it can -take up to three minutes to start an additional instance. -

    Options -

    -

    initcmd -
    Accommodates the command's use of the AFS command parser, and is -optional. -

    -config -
    Names the configuration file which lists the machines to monitor, -statistics to display, and threshold values, if any. A partial pathname -is interpreted relative to the current working directory. Provide this -argument if not providing the -fshosts argument, --cmhosts argument, or neither. For instructions on creating -this file, see the preceding Description section, and the section -on the afsmonitor program in the IBM AFS Administration -Guide. -

    -frequency -
    Specifies in seconds how often the afsmonitor program probes -the File Servers and Cache Managers. Valid values range from -1 to 86400 (which is 24 hours); the default value -is 60. This frequency applies to both File Servers and Cache -Managers, but the afsmonitor program initiates the two types of -probes, and processes their results, separately. The actual interval -between probes to a host is the probe frequency plus the time required for all -hosts to respond. -

    -output -
    Names the file to which the afsmonitor program writes all of -the statistics that it collects. By default, no output file is -created. See the section on the afsmonitor command in the -IBM AFS Administration Guide for information on this file. -

    -detailed -
    Formats the information in the output file named by -output -argument in a maximally readable format. Provide the -output -argument along with this one. -

    -fshosts -
    Names one or more machines from which to gather File Server -statistics. For each machine, provide either a fully qualified host -name, or an unambiguous abbreviation (the ability to resolve an abbreviation -depends on the state of the cell's name service at the time the command -is issued). This argument can be combined with the -cmhosts -argument, but not with the -config argument. -

    -cmhosts -
    Names one or more machines from which to gather Cache Manager -statistics. For each machine, provide either a fully qualified host -name, or an unambiguous abbreviation (the ability to resolve an abbreviation -depends on the state of the cell's name service at the time the command -is issued). This argument can be combined with the -fshosts -argument, but not with the -config argument. -

    -buffers -
    Is nonoperational and provided to accommodate potential future -enhancements to the program. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The afsmonitor program displays its data on three screens: -

      -

    • System Overview: This screen appears automatically when -the afsmonitor program initializes. It summarizes separately -for File Servers and Cache Managers the number of machines being monitored and -how many of them have alerts (statistics that have exceeded their -thresholds). It then lists the hostname and number of alerts for each -machine being monitored, indicating if appropriate that a process failed to -respond to the last probe. -

    • File Server: This screen displays File Server statistics -for each file server machine being monitored. It highlights statistics -that have exceeded their thresholds, and identifies machines that failed to -respond to the last probe. -

    • Cache Managers: This screen displays Cache Manager -statistics for each client machine being monitored. It highlights -statistics that have exceeded their thresholds, and identifies machines that -failed to respond to the last probe. -
    -

    Fields at the corners of every screen display the following -information: -

      -

    • In the top left corner, the program name and version number. -

    • In the top right corner, the screen name, current and total page numbers, -and current and total column numbers. The page number (for example, -p. 1 of 3) indicates the index of the current page and the -total number of (vertical) pages over which data is displayed. The -column number (for example, c. 1 of 235) indicates the index -of the current leftmost column and the total number of columns in which data -appears. (The symbol >>> indicates that there is additional -data to the right; the symbol <<< indicates that -there is additional data to the left.) -

    • In the bottom left corner, a list of the available commands. Enter -the first letter in the command name to run that command. Only the -currently possible options appear; for example, if there is only one page -of data, the next and prev commands, which scroll the -screen up and down respectively, do not appear. For descriptions of the -commands, see the following section about navigating the display -screens. -

    • In the bottom right corner, the probes field reports how many -times the program has probed File Servers (fs), Cache Managers -(cm), or both. The counts for File Servers and Cache -Managers can differ. The freq field reports how often the -program sends probes. -
    -

    Navigating the afsmonitor Display Screens -

    As noted, the lower left hand corner of every display screen displays the -names of the commands currently available for moving to alternate screens, -which can either be a different type or display more statistics or machines of -the current type. To execute a command, press the lowercase version of -the first letter in its name. Some commands also have an uppercase -version that has a somewhat different effect, as indicated in the following -list. -

    -

    cm -
    Switches to the Cache Managers screen. Available only on -the System Overview and File Servers screens. -

    fs -
    Switches to the File Servers screen. Available only on -the System Overview and the Cache Managers -screens. -

    left -
    Scrolls horizontally to the left, to access the data columns situated to -the left of the current set. Available when the <<< -symbol appears at the top left of the screen. Press uppercase -L to scroll horizontally all the way to the left (to display the -first set of data columns). -

    next -
    Scrolls down vertically to the next page of machine names. -Available when there are two or more pages of machines and the final page is -not currently displayed. Press uppercase N to scroll to the -final page. -

    oview -
    Switches to the System Overview screen. Available only -on the Cache Managers and File Servers screens. -

    prev -
    Scrolls up vertically to the previous page of machine names. -Available when there are two or more pages of machines and the first page is -not currently displayed. Press uppercase N to scroll to the -first page. -

    right -
    Scrolls horizontally to the right, to access the data columns situated to -the right of the current set. This command is available when the ->>> symbol appears at the upper right of the screen. Press -uppercase R to scroll horizontally all the way to the right (to -display the final set of data columns). -
    -

    The System Overview Screen -

    The System Overview screen appears automatically as the -afsmonitor program initializes. This screen displays the -status of as many File Server and Cache Manager processes as can fit in the -current window; scroll down to access additional information. -

    The information on this screen is split into File Server information on the -left and Cache Manager information on the right. The header for each -grouping reports two pieces of information: -

      -

    • The number of machines on which the program is monitoring the indicated -process -

    • The number of alerts and the number of machines affected by them (an -alertmeans that a statistic has exceeded its threshold or a process -failed to respond to the last probe) -
    -

    A list of the machines being monitored follows. If there are any -alerts on a machine, the number of them appears in square brackets to the left -of the hostname. If a process failed to respond to the last probe, the -letters PF (probe failure) appear in square brackets to the left of -the hostname. -

    The File Servers Screen -

    The File Servers screen displays the values collected at the -most recent probe for File Server statistics. -

    A summary line at the top of the screen (just below the standard program -version and screen title blocks) specifies the number of monitored File -Servers, the number of alerts, and the number of machines affected by the -alerts. -

    The first column always displays the hostnames of the machines running the -monitored File Servers. -

    To the right of the hostname column appear as many columns of statistics as -can fit within the current width of the display screen or window; each -column requires space for 10 characters. The name of the statistic -appears at the top of each column. If the File Server on a machine did -not respond to the most recent probe, a pair of dashes (--) appears -in each column. If a value exceeds its configured threshold, it is -highlighted in reverse video. If a value is too large to fit into the -allotted column width, it overflows into the next row in the same -column. -

    The Cache Managers Screen -

    The Cache Managers screen displays the values collected at the -most recent probe for Cache Manager statistics. -

    A summary line at the top of the screen (just below the standard program -version and screen title blocks) specifies the number of monitored Cache -Managers, the number of alerts, and the number of machines affected by the -alerts. -

    The first column always displays the hostnames of the machines running the -monitored Cache Managers. -

    To the right of the hostname column appear as many columns of statistics as -can fit within the current width of the display screen or window; each -column requires space for 10 characters. The name of the statistic -appears at the top of each column. If the Cache Manager on a machine -did not respond to the most recent probe, a pair of dashes (--) -appears in each column. If a value exceeds its configured threshold, it -is highlighted in reverse video. If a value is too large to fit into -the allotted column width, it overflows into the next row in the same -column. -

    Writing to an Output File -

    Include the -output argument to name the file into which the -afsmonitor program writes all of the statistics it collects. -The output file can be useful for tracking performance over long periods of -time, and enables the administrator to apply post-processing techniques that -reveal system trends. The AFS distribution does not include any -post-processing programs. -

    The output file is in ASCII format and records the same information as the -File Server and Cache Manager display screens. -Each line in the file uses the following format to record the time at which -the afsmonitor program gathered the indicated statistic from the -Cache Manager (CM) or File Server (FS) running on the -machine called host_name. If a probe failed, the error code --1 appears in the statistic field. -

       time  host_name  CM|FS   statistic
    -   
    -
    -

    If the administrator usually reviews the output file manually, rather than -using it as input to an automated analysis program or script, including the --detail flag formats the data in a more easily readable -form. -

    Examples -

    For examples of commands, display screens, and configuration files, see the -section about the afsmonitor program in the IBM AFS -Administration Guide. -

    Privilege Required -

    None -

    Related Information -

    afsmonitor Configuration File -

    fstrace -

    scout -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf060.htm b/doc/html/AdminReference/auarf060.htm deleted file mode 100644 index 5c59c78ed..000000000 --- a/doc/html/AdminReference/auarf060.htm +++ /dev/null @@ -1,267 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup

    - - - - - -

    Purpose -

    Introduction to the backup command suite -

    Description -

    The commands in the backup command suite are the administrative -interface to the AFS Backup System. There are several categories of -commands in the suite: -

      -

    • Commands to copy data from AFS volumes to tape or a backup data file, and -to restore it to the file system: backup diskrestore, -backup dump, backup volrestore, and backup -volsetrestore -

    • Commands to administer the records in the Backup Database: -backup adddump, backup addhost, backup -addvolentry, backup addvolset, backup deldump, -backup deletedump, backup delhost, backup -delvolentry, backup delvolset, backup dumpinfo, -backup listdumps, backup listhosts, backup -listvolsets, backup scantape, backup setexp, and -backup volinfo -

    • Commands to write and read tape labels: backup labeltape -and backup readlabel -

    • Commands to list and change the status of backup operations and the -machines performing them: (backup) jobs, (backup) -kill, and backup status -

    • Commands to enter and leave interactive mode: backup -(interactive) and (backup) quit -

    • Commands to check for and repair corruption in the Backup Database: -backup dbverify, backup restoredb, and backup -savedb -

    • Commands to obtain help: backup apropos and backup -help -
    -

    The backup command interpreter interacts with two other -processes: - - -

      -

    • The Backup Server (buserver) process. It maintains the -Backup Database, which stores most of the administrative information used by -the Backup System. In the standard configuration, the Backup Server -runs on each database server machine in the cell, and uses AFS's -distributed database technology, Ubik, to synchronize its copy of the database -with the copies on the other database server machines. -

    • The Backup Tape Coordinator (butc) process. A separate -instance of the process controls each tape device or backup data file used to -dump or restore data. The Tape Coordinator runs on a Tape Coordinator -machine, which is an AFS server or client machine that has one or more tape -devices attached, or has sufficient disk space to accommodate one or more -backup data files on its local disk. -

      Each Tape Coordinator must be registered in the Backup Database and in the -/usr/afs/backup/tapeconfig configuration file on the Tape -Coordinator machine's local disk, and information in the two places must -be consistent for proper Backup System performance. The optional -/usr/afs/backup/CFG_device_name for each Tape Coordinator -records information used to automate its operation. -

    -

    In addition to the standard command line interface, the backup -command suite provides an interactive interface, which has several -useful features described on the backup (interactive) reference -page. Three of the commands in the suite are available only in -interactive mode: (backup) jobs, (backup) kill, -and (backup) quit. -

    Options -

    The following options are available on many commands in the -backup suite. The reference page for each command also lists -them, but they are described here in greater detail. - - - -

    -

    -cell <cell name> -
    Names the cell in which to run the command. It is acceptable to -abbreviate the cell name to the shortest form that distinguishes it from the -other entries in the /usr/vice/etc/CellServDB file on the local -machine. If the -cell argument is omitted, the command -interpreter determines the name of the local cell by reading the following in -order: -
      -

    1. The value of the AFSCELL environment variable -

    2. The local /usr/vice/etc/ThisCell file -
    -

    -

    Do not combine the -cell and -localauth -options. A command on which the -localauth flag is included -always runs in the local cell (as defined in the server machine's local -/usr/afs/etc/ThisCell file), whereas a command on which the --cell argument is included runs in the specified foreign -cell. -

    The -cell argument is not available on commands issued in -interactive mode. The cell defined when the backup command -interpreter enters interactive mode applies to all commands issued during the -interactive session. - -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -

    - --localauth -
    Constructs a server ticket using the server encryption key with the -highest key version number in the local /usr/afs/etc/KeyFile -file. The backup command interpreter presents the ticket, -which never expires, to the Backup Server, Volume Server and Volume Location -(VL) Server during mutual authentication. -

    Use this flag only when issuing a command on a server machine; client -machines do not usually have a /usr/afs/etc/KeyFile file. -The issuer of a command that includes this flag must be logged on to the -server machine as the local superuser root. The flag is -useful for commands invoked by an unattended application program, such as a -process controlled by the UNIX cron utility or by a cron entry in -the machine's /usr/afs/local/BosConfig file. It is also -useful if an administrator is unable to authenticate to AFS but is logged in -as the local superuser root. -

    Do not combine the -cell and -localauth -options. A command on which the -localauth flag is included -always runs in the local cell (as defined in the server machine's local -/usr/afs/etc/ThisCell file), whereas a command on which the --cell argument is included runs in the specified foreign -cell. -

    The -localauth argument is not available on commands issued in -interactive mode. The local identity and AFS tokens with which the -backup command interpreter enters interactive mode apply to all -commands issued during the interactive session. -

    - --portoffset <TC port offset> -
    Specifies the port offset number of the Tape Coordinator that is to -execute the backup command. The port offset number uniquely -identifies a pairing of a Tape Coordinator (butc) process and tape -device or backup data file. -

    The backup command interpreter and Tape Coordinator process -communicate via a UDP socket, or port. Before issuing a -backup command that involves reading or writing a tape, the backup -operator must start a butc process that controls the appropriate -tape device and listens for requests sent to its port number. If a -Backup System machine has multiple tape devices attached, they can perform -backup operations simultaneously because each device has its own associated -butc process and port offset number. -

    The Backup System associates a tape capacity and file mark size with each -port offset (as defined in the tapeconfig file). For a -compressing tape device, the capacity and file mark values differ for -compression and non-compression modes, so the two modes have distinct port -offset numbers. -

    The Backup Database can store up to 58,511 port offsets, so the legal -values for this argument are the integers 0 through -58510. If the issuer omits the argument, it defaults to -0. (The limit of 58,511 port offsets results from the fact -that UDP socket numbers are identified by a 16-bit integer, and the lowest -socket number used by the Backup System is 7025. The largest number -that a 16-bit integer can represent is 65,535. Subtracting 7,025 yields -58,510. The addition of port offset 0 (zero) increases the maximum to -58,511.) -

    Although it is possible to define up to 58,511 port offset numbers for a -cell, it is not possible to run 58,511 tape devices simultaneously, due to the -following limits: -

      -

    • The maximum number of dump or restore operations that can run -simultaneously is 64. -

    • The maximum number of tape devices that can work together on a restore -operation is 128 (that is the maximum number of values that can be provided -for the -portoffset argument to the backup diskrestore, -backup volrestore, or backup volsetrestore -command). -
    -

    -

    The Backup System does not reserve UDP sockets. If another -application is already using the Tape Coordinator's socket when it tries -to start, the butc process fails and the following error message -appears at the shell prompt: -

       bind: Address already in use
    -   rxi_GetUDPSocket: bind failed
    -   
    -
    -
    -

    Privilege Required - - -

    To issue any backup command that accesses the Backup Database -only, the issuer must be listed in the /usr/afs/etc/UserList file -on every machine where the Backup Server is running. To issue any -backup command that accesses volume data, the issuer must appear in -the UserList file on every Backup Server machine, every Volume -Location (VL) Server machine, and every file server machine that houses -affected volumes. By convention, a common UserList file is -distributed to all database server and file server machines in the -cell. See the chapter on privileged users in the IBM AFS -Administration Guide for more information on this type of -privilege. -

    If the -localauth flag is included, the user must instead be -logged on as the local superuser root on the server machine where -the backup command is issued. -

    Related Information -

    BosConfig -

    CFG_device_name -

    CellServDB (client version) -

    KeyFile -

    ThisCell (client version) -

    ThisCell (server version) -

    UserList -

    tapeconfig -

    backup adddump -

    backup addhost -

    backup addvolentry -

    backup addvolset -

    backup dbverify -

    backup deldump -

    backup deletedump -

    backup delhost -

    backup delvolentry -

    backup delvolset -

    backup diskrestore -

    backup dump -

    backup dumpinfo -

    backup help -

    backup interactive -

    backup jobs -

    backup kill -

    backup labeltape -

    backup listdumps -

    backup listhosts -

    backup listvolsets -

    backup quit -

    backup readlabel -

    backup restoredb -

    backup savedb -

    backup scantape -

    backup setexp -

    backup status -

    backup volinfo -

    backup volrestore -

    backup volsetrestore -

    buserver -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf061.htm b/doc/html/AdminReference/auarf061.htm deleted file mode 100644 index 1aaf9c803..000000000 --- a/doc/html/AdminReference/auarf061.htm +++ /dev/null @@ -1,186 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup adddump

    - - - - - - - - - - - -

    Purpose -

    Defines a dump level in the dump hierarchy -

    Synopsis -

    backup adddump -dump <dump level name>+ [-expires <expiration date>+]
    -               [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup addd -d  <dump level name>+ [-e <expiration date>+]  [-l]  
    -            [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup adddump command creates one or more dump levels in -the dump hierarchy stored in the Backup Database, and optionally assigns an -expiration date to each one. All of the dump levels in the Backup -Database collectively constitute the dump hierarchy. -

    Use the -expires argument to associate an expiration date with -each dump level. When the Backup System subsequently creates a dump at -the dump level, it uses the specified value to derive the dump's -expiration date, which it records on the label of the tape (or backup data -file). The Backup System refuses to overwrite a tape until after the -latest expiration date of any dump that the tape contains, unless the -backup labeltape command is used to relabel the tape. If a -dump level does not have an expiration date, the Backup System treats dumps -created at the level as expired as soon as it creates them. -

    (Note that the Backup System does not automatically remove a dump's -record from the Backup Database when the dump reaches its expiration date, but -only if the tape that contains the dump is recycled or relabeled. To -remove expired and other obsolete dump records, use the backup -deletedump command.) -

    Define either an absolute or relative expiration date: -

      -

    • An absolute expiration date defines the month/day/year (and, optionally, -hour and minutes) at which a dump expires. If the expiration date -predates the dump creation time, the Backup System immediately treats the dump -as expired. -

    • A relative date defines the number of years, months, or days (or a -combination of the three) after the dump's creation that it -expires. When the Backup System creates a dump at the dump level, it -calculates an actual expiration date by adding the relative date to the start -time of the dump operation. -
    -

    Options -

    -

    -dump -
    Names each dump level to add to the dump hierarchy. Precede full -dump level names with a slash (for example, /full). Indicate -an incremental dump level by preceding it with an ordered list of the dump -levels directly above it in the hierarchy (its parent dump levels); use -the slash as a separator. The parent dump levels must already -exist. For example, the dump levels /full and -/full/incremental1 must exist when the incremental dump level -/full/incremental1/incremental2 is created. -

    Dump level names can have any number of levels, but cannot exceed 256 -characters in length, including the slashes. The maximum length for any -single level (the text between slashes) is 28 characters, not including the -preceding slash. -

    All alphanumeric characters are allowed in dump level names. Do not -use the period (.), however, because it is the separator -between the volume set name and dump level name in the dump name assigned -automatically by the backup dump command. It is best not to -include other metacharacters either; if using them, enclose them in -double quotes (" ") when issuing the backup adddump -command outside interactive mode. -

    -expires -
    Defines the absolute or relative expiration date to associate with each -dump level named by the -dump argument. Absolute expiration -dates have the following format: -

    -

       [at] {NEVER | mm/dd/yyyy [hh:MM] }
    -   
    -
    -

    where the optional word at is followed either by the string -NEVER, which indicates that dumps created at the dump level never -expire, or by a date value with a required portion (mm for month, -dd for day, and yyyy for year) and an optional portion -(hh for hours and MM for minutes). -

    Omit the hh:MM portion to use the default of -midnight (00:00 hours), or provide a value in 24-hour format (for -example, 20:30 is 8:30 p.m.). -Valid values for the year range from 1970 to 2037; -higher values are not valid because the latest possible date in the standard -UNIX representation is in February 2038. The command interpreter -automatically reduces later dates to the maximum value. -

    Relative expiration dates have the following format: -

       [in] [yearsy] [monthsm] [daysd]
    -   
    -
    -

    -

    where the optional word in is followed by at least one of a -number of years (maximum 9999) followed by the letter y, -a number of months (maximum 12) followed by the letter -m, or a number of days (maximum 31) followed by the -letter d. If providing more than one of the three, list them -in the indicated order. If the date that results from adding the -relative expiration value to a dump's creation time is later than the -latest possible date in the UNIX time representation, the Backup System -automatically reduces it to that date. -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition to be -associated with each dump level specified by the -dump -argument. -
    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command defines a full dump called /1999 with a -relative expiration date of one year: -

       % backup adddump -dump /1999 -expires in 1y
    -   
    -
    -

    The following command defines an incremental dump called -/sunday1/monday1 with a relative expiration date of 13 days: -

       % backup adddump -dump /sunday1/monday1 -expires in 13d
    -   
    -
    -

    The following command defines two dump incremental dump levels, -/Monthly/Week1 and /Monthly/Week2. Their parent, -the full dump level /Monthly, must already exist. The -expiration date for both levels is 12:00 a.m. on 1 January -2000. -

       % backup adddump -dump /Monthly/Week1 /Monthly/Week2 -expires at 01/01/2000
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup deldump -

    backup deletedump -

    backup listdumps -

    backup setexp -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf062.htm b/doc/html/AdminReference/auarf062.htm deleted file mode 100644 index 39ba17433..000000000 --- a/doc/html/AdminReference/auarf062.htm +++ /dev/null @@ -1,116 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup addhost

    - - - - - - - - - - -

    Purpose -

    Adds a Tape Coordinator entry to the Backup Database -

    Synopsis -

    backup addhost -tapehost <tape machine name> [-portoffset <TC port offset>]
    -               [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup addh -t <tape machine name>  [-p <TC port offset>]
    -            [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup addhost command creates a Tape Coordinator entry in -the Backup Database. The entry records -

      -

    • The host name of the Tape Coordinator machine where the Tape Coordinator -(butc) process runs, as specified with the -tapehost -argument. -

    • The Tape Coordinator's port offset number, as specified with the --portoffset argument. An entry for the port offset must also -appear in the /usr/afs/backup/tapeconfig file on the Tape -Coordinator machine, where it is mapped to a UNIX device name (for a tape -device) or pathname (for a backup data file). -
    -

    Each Tape Coordinator must have its own port offset number, and the command -fails if a Backup Database entry already exists for the requested port offset -number. To display existing Tape Coordinator entries, use the -backup listhosts command. -

    Options -

    -

    -tapehost -
    Specifies the fully-qualified hostname of the machine for which to create -a Tape Coordinator entry in the Backup Database. The machine must have -an entry in either the cell's naming service (such as the Domain Name -Service) or the host file (/etc/hosts or equivalent) on the machine -where the command is issued. -

    -portoffset -
    Specifies the Tape Coordinator's port offset number. Provide -an integer from the range 0 through 58510, or omit this -argument to use the default value of 0 (zero). The value -must match the port offset number recorded for the same combination of Tape -Coordinator and tape device or file in the -/usr/afs/backup/tapeconfig file on the Tape Coordinator machine -named by the -tapehost argument. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command creates an entry in the Backup Database that assigns -port offset number 4 to a Tape Coordinator running on the machine -backup1.abc.com: -

       % backup addhost -tapehost backup1.abc.com -portoffset 4
    -   
    -
    -

    The following command creates a Backup Database entry that assigns port -offset number 0 to a Tape Coordinator on the machine -backup3.abc.com: -

       % backup addhost backup3.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup delhost -

    backup listhosts -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf063.htm b/doc/html/AdminReference/auarf063.htm deleted file mode 100644 index c0de2f716..000000000 --- a/doc/html/AdminReference/auarf063.htm +++ /dev/null @@ -1,189 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup addvolentry

    - - - - - - - - - - - - - - -

    Purpose -

    Defines a volume entry in a volume set -

    Synopsis -

    backup addvolentry -name <volume set name>  -server <machine name>
    -                   -partition <partition name> 
    -                   -volumes <volume name (regular expression)>   
    -                   [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup addvole -n <volume set name>  -s <machine name> -p <partition name>
    -               -v <volume name (regular expression)>
    -               [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup addvolentry command adds a volume entry definition to -the existing volume set named by the -name argument. A -volume entry definition can match one or more volumes, depending on the -combination of the -server, -partition, and --volumes arguments. -

    For the -server and -partition arguments, provide -either -

      -

    • The name of one machine or partition -

    • The metacharacter expression .* (period and asterisk), -which matches every machine name or partition name in the Volume Location -Database (VLDB). -
    -

    For the -volumes argument, specify a combination of alphanumeric -characters and one or more metacharacters to wildcard part or all of the -volume name. The Options section lists the acceptable -metacharacters. -

    Cautions -

    It is best to issue this command in interactive mode. If issuing it -at the shell prompt, enclose any strings containing metacharacters in double -quotes, or escape the metacharacters with other delimiters, to prevent the -shell from interpreting them. Adding volume entries to a temporary -volume set is possible only within the interactive session in which the volume -set was created. -

    Options -

    -

    -name -
    Names the volume set to which to add this volume entry definition. -The volume set must already exist (use the backup addvolset command -to create it). -

    -server -
    Defines the set of one or more file server machines that house the volumes -in the volume entry. Provide either one fully-qualified hostname (such -as fs1.abc.com) or the metacharacter expression -.* (period and asterisk), which matches all machine names in -the VLDB. -

    -partition -
    Defines the set of one or more partitions that house the volumes in the -volume entry. Provide either one complete partition name (such as -/vicepa) or the metacharacter expression .* -(period and asterisk), which matches all partition names. -

    -volumes -
    Defines the set of one or more volumes included in the volume -entry. Specify the volumes by name, by using any combination of regular -alphanumeric characters and one or more of the following metacharacter -expressions: - - -
    -

    . -
    The period matches any single character. -

    * -
    The asterisk matches zero or more instances of the preceding -character. Combine it with any other alphanumeric character or -metacharacter. -

    [ ] -
    Square brackets around a list of characters match a single instance of any -of the characters, but no other characters; for example, [abc] -matches a single a or b or c, but not -d or A. This expression can be combined with the -asterisk. -

    ^ -
    The caret, when used as the first character in a square-bracketed set, -designates a match with any single character except the characters -that follow it; for example, [^a] matches any single character -except lowercase a. This expression can be combined with the -asterisk. -

    \ -
    A backslash preceding any of the metacharacters in this list makes it -match its literal value only. For example, the expression -\. (backslash and period) matches a single period, -\* a single asterisk, and \\ a single backslash. -Such expressions can be combined with the asterisk (for example, -\.* matches any number of periods). -
    -

    -

    Perhaps the most common metacharacter expression is the period followed by -an asterisk (.*). This expression matches any string -of any length, because the period matches any character and the asterisk means -any number of that character. As mentioned, it is the only acceptable -metacharacter expression for the -server and -partition -arguments. In a volume definition it can stand alone (in which case it -matches every volume listed in the VLDB), or can combine with regular -characters. The following example matches any volume name that begins -with the string user and ends with backup: -

       user.*backup
    -   
    -
    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command adds a volume entry to the volume set called -sys. The entry matches all volumes on any machine or -partition whose names begin with the string sun4x_56 followed by a -period: -

       backup> addvolentry sys .* .* sun4x_56\..*
    -   
    -
    -

    The following command adds a volume entry to the volume set called -fs2, to match all volumes on the /vicepb partition of -file server machine fs2.abc.com. Because it is -issued at the shell prompt, double quotes surround the metacharacters in the --volumes argument. (The command is shown here on two lines -only for legibility reasons.) -

       % backup addvolentry -name fs2 -server fs2.abc.com \
    -                        -partition /vicepb -volumes ".*"
    -   
    -
    -

    The chapter in the IBM AFS Administration Guide about -configuring the AFS Backup System presents additional examples as well as -advice on grouping volumes. -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addvolset -

    backup delvolentry -

    backup delvolset -

    backup listvolsets -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf064.htm b/doc/html/AdminReference/auarf064.htm deleted file mode 100644 index b6bf0a9bc..000000000 --- a/doc/html/AdminReference/auarf064.htm +++ /dev/null @@ -1,109 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup addvolset

    - - - - - - -

    Purpose -

    Creates a new (empty) volume set -

    Synopsis -

    backup addvolset -name <volume set name> [-temporary] 
    -                 [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup addvols -n <volume set name> [-t]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup addvolset command creates a new volume set, by -default adding it to the Backup Database. It is best that the volume -set's name indicate the volume set's contents; for example, -define the volume entries in the user volume set to match all user -volumes. The volume set name must be unique within the Backup Database -of the local cell. -

    After issuing this command, issue the backup addvolentry command -to define the volume entries in the volume set. -

    Sometimes it is convenient to create volume sets without recording them -permanently in the Backup Database, for example when using the backup -volsetrestore command to restore a group of volumes that were not -necessarily backed up together. To create a temporary volume -set, include the -temporary flag. A temporary volume set -exists only during the lifetime of the current interactive session, so the -flag is effective only when used during an interactive session (opened by -issuing the backup interactive command). If it is included -when the command is issued at the regular command shell prompt, the command -appears to succeed, but the volume set is not created. As noted, a -temporary volume set ceases to exist when the current interactive session -ends, or use the backup delvolset command to delete it before -that. -

    One advantage of temporary volume sets is that the backup -addvolset command, and any backup addvolentry commands -subsequently used to add volume entries to it, complete more quickly than for -regular volume sets, because no records are created in the Backup -Database. -

    Options -

    -

    -name -
    Names the new volume set. The name can include up to 31 of any -character other than the period. Avoid other metacharacters as -well. -

    -temporary -
    Creates a volume set that exists only within the context of the current -interactive session. It is not added to the Backup Database. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command creates a volume set called sys: -

       % backup addvolset sys
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addvolentry -

    backup delvolentry -

    backup delvolset -

    backup listvolsets -

    backup volsetrestore -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf065.htm b/doc/html/AdminReference/auarf065.htm deleted file mode 100644 index 0d3d45e5c..000000000 --- a/doc/html/AdminReference/auarf065.htm +++ /dev/null @@ -1,73 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    backup apropos -topic <help string>  [-help] 
    -  
    -backup ap -t <help string>  [-h]
    -
    -

    Description -

    The backup apropos command displays the first line of the online -help entry for any backup command that has in its name or short -description the string specified by the -topic argument. -

    To display the syntax for a command, use the backup help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes -(" ") or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -backup command where the string specified with the --topic argument is part of the command name or first line. -

    Examples -

    The following example lists all backup commands that include the -word tape in their names or short descriptions: -

       % backup apropos tape
    -   labeltape: label a tape
    -   readlabel: read the label on tape
    -   scantape: dump information recovery from tape
    -   status: get tape coordinator status
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    backup -

    backup help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf066.htm b/doc/html/AdminReference/auarf066.htm deleted file mode 100644 index 94dea056e..000000000 --- a/doc/html/AdminReference/auarf066.htm +++ /dev/null @@ -1,124 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup dbverify

    - - - -

    Purpose -

    Checks the integrity of the Backup Database -

    Synopsis -

    backup dbverify [-detail]  [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup db [-d]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup dbverify command checks the integrity of the Backup -Database. The command's output indicates whether the Backup -Database is damaged (data is corrupted) or not. If the Backup Database -is undamaged, it is safe to continue using it. If it is corrupted, -discontinue any backup operations until it is repaired. -

    Cautions -

    While this command runs, no other backup operation can access the Backup -Database; the other commands do not run until this command -completes. Avoid issuing this command when other backup operations are -likely to run. The backup savedb command repairs some types -of corruption. -

    Options -

    -

    -detail -
    Reports the number of orphaned blocks found, any inconsistencies, and the -name of the server machine running the Backup Server that is checking its copy -of the database. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The command displays one of the following two messages: -

    -

    Database OK -
    The database is undamaged and can be used. -

    Database not OK -
    The database is damaged. You can use the backup savedb -command to repair many kinds of corruption as it creates a backup copy. -For more detailed instructions, see the IBM AFS Administration -Guide chapter about performing backup operations. -
    -

    The -detail flag provides additional information: -

      -

    • The number of orphan blocks found. These are ranges of -memory that the Backup Server preallocated in the database but cannot -use. Orphan blocks do not interfere with database access, but do waste -disk space. To free the unusable space, dump the database to tape by -using the backup savedb command, and then restore it by using the -backup restoredb command. -

    • Any inconsistencies in the database, such as invalid hostnames for Tape -Coordinator machines. -

    • The name of the database server machine on which the Backup Database was -checked, designated as the Database checker. For a detailed -trace of the verification operation, see the -/usr/afs/logs/BackupLog file on the indicated machine. You -can use the bos getlog command to display it. -
    -

    Examples -

    The following command confirms that the Backup Database is undamaged: -

       % backup dbverify
    -   Database OK
    -   
    -
    -

    The following command confirms that the Backup Database is undamaged and -that it has no orphan blocks or invalid Tape Coordinator entries. The -Backup Server running on the machine db1.abc.com -checked its copy of the Database. -

       % backup dbverify -detail
    -   Database OK
    -   Orphan blocks 0
    -   Database checker was db1.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BackupLog -

    bos getlog -

    backup -

    backup restoredb -

    backup savedb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf067.htm b/doc/html/AdminReference/auarf067.htm deleted file mode 100644 index 735b58b39..000000000 --- a/doc/html/AdminReference/auarf067.htm +++ /dev/null @@ -1,82 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup deldump

    - - - - - - - - -

    Purpose -

    Deletes a dump level from the Backup Database -

    Synopsis -

    backup deldump -dump <dump level name>  [-localauth]  
    -               [-cell <cell name>]  [-help]
    -   
    -backup deld -d <dump level name>  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup deldump command deletes the indicated dump level and -all of its child dump levels from the dump hierarchy in the Backup -Database. Use the backup listdumps command to display the -dump hierarchy. -

    Options -

    -

    -dump -
    Specifies the complete pathname of the dump level to delete. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command deletes the dump level /sunday1/monday1 -from the dump hierarchy, along with any of its child dump levels. -

       % backup deldump /sunday1/monday1
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup adddump -

    backup listdumps -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf068.htm b/doc/html/AdminReference/auarf068.htm deleted file mode 100644 index 2f91153a1..000000000 --- a/doc/html/AdminReference/auarf068.htm +++ /dev/null @@ -1,183 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup deletedump

    - - - - - -

    Purpose -

    Deletes one or more dump records from the Backup Database -

    Synopsis -

    backup deletedump [-dumpid <dump id>+]  [-from <date time>+]  [-to <date time>+]
    -                  [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup dele [-d <dump id>+]  [-f <date time>+]  [-t <date time>+]
    -            [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup deletedump command deletes one or more dump records -from the Backup Database. Either use the -dumpid argument to -specify the dump ID number of one or more dumps, or use the -from -and -to arguments to delete the records for all regular dumps -created during the time period bracketed by the specified values. -

    Use this command to remove dump records that are incorrect (possibly -because a dump operation was interrupted or failed), or that correspond to -dumps that are expired or otherwise no longer needed. -

    Cautions -

    The only way to remove the dump record for an appended dump is to remove -the record for its initial dump, and doing so removes the records for all of -the initial dump's associated appended dumps. -

    The only way to remove the record for a Backup Database dump (created with -the backup savedb command) is to specify its dump ID number with -the -dumpid argument. Using the -from and --to arguments never removes database dump records. -

    Removing records of a dump makes it impossible to restore data from the -corresponding tapes or from any dump that refers to the deleted dump as its -parent, directly or indirectly. That is, restore operations must begin -with the full dump and continue with each incremental dump in order. If -the records for a specific dump are removed, it is not possible to restore -data from later incremental dumps unless the deleted records are restored by -running the backup scantape command with the -dbadd -flag. -

    If a dump set contains any dumps that were created outside the time range -specified by the -from and -to arguments, the command -does not delete any of the records associated with the dump set, even if some -of them represent dumps created during the time range. -

    Options -

    -

    -dumpid -
    Specifies the dump ID of each dump record to delete. The -corresponding dumps must be initial dumps; it is not possible to delete -appended dump records directly, but only by deleting the record of their -associated initial dump. Using this argument is the only way to delete -records of Backup Database dumps (created with the backup savedb -command). -

    Provide either this argument or the -to (and optionally --from) argument. -

    -from -
    Specifies the beginning of a range of dates; the record for any dump -created during the indicated period of time is deleted. -

    Omit this argument to indicate the default of midnight (00:00 hours) -on 1 January 1970 (UNIX time zero), or provide a date value in the format -mm/dd/yyyy [hh:MM]. The month (mm), -day (dd), and year (yyyy) are required. The hour and -minutes (hh:MM) are optional, but if provided must be -in 24-hour format (for example, the value 14:36 represents -2:36 p.m.). If omitted, the time defaults to -midnight (00:00 hours). -

    The -to argument must be provided along with this one. -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition. -
    -

    -to -
    Specifies the end of a range of dates; the record of any dump created -during the range is deleted from the Backup Database. -

    Provide either the value NOW to indicate the current date and -time, or a date value in the same format as for the -from -argument. Valid values for the year (yyyy) range from -1970 to 2037; higher values are not valid because -the latest possible date in the standard UNIX representation is in February -2038. The command interpreter automatically reduces any later date to -the maximum value. -

    If the time portion (hh:MM) is omitted, it defaults to 59 -seconds after midnight (00:00:59 hours). Similarly, the -backup command interpreter automatically adds 59 seconds to any -time value provided. In both cases, adding 59 seconds compensates for -how the Backup Database and backup dumpinfo command represent dump -creation times in hours and minutes only. For example, the Database -records a creation timestamp of 20:55 for any dump operation -that begins between 20:55:00 and 20:55:59. -Automatically adding 59 seconds to a time thus includes the records for all -dumps created during that minute. -

    Provide either this argument, or the -dumpid argument. -This argument is required if the -from argument is provided. -

    Caution: Specifying the value NOW for this -argument when the -from argument is omitted deletes all dump -records from the Backup Database (except for Backup Database dump records -created with the backup savedb command). -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition. -
    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    At the conclusion of processing, the output lists the dump IDs of all dump -records deleted in the following format: -

       The following dumps were deleted:
    -        dump ID 1
    -        dump ID 2
    -        etc.
    -   
    -
    -

    Examples -

    The following command deletes the dump record with dump ID 653777462, and -for any appended dumps associated with it: -

       % backup deletedump -dumpid 653777462
    -   The following dumps were deleted:
    -        653777462
    -   
    -
    -

    The following command deletes the Backup Database record of all dumps -created between midnight on 1 January 1997 and 23:59:59 hours on -31 December 1997: -

       % backup deletedump -from 01/01/1997 -to 12/31/1997
    -   The following dumps were deleted:
    -        598324045
    -        598346873
    -           ...
    -           ...
    -        653777523
    -        653779648
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup dumpinfo -

    backup scantape -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf069.htm b/doc/html/AdminReference/auarf069.htm deleted file mode 100644 index 8f98cb4d2..000000000 --- a/doc/html/AdminReference/auarf069.htm +++ /dev/null @@ -1,93 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup delhost

    - - - - - -

    Purpose -

    Deletes a Tape Coordinator entry from the Backup Database -

    Synopsis -

    backup delhost -tapehost <tape machine name> [-portoffset <TC port offset>]
    -               [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup delh -t <tape machine name>  [-p <TC port offset>]
    -            [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup delhost command deletes the indicated Tape -Coordinator entry from the Backup Database. It is then impossible to -submit backup operations to that Tape Coordinator, even if it is still -running. To keep configuration information consistent, also remove the -corresponding entry from the /usr/afs/backup/tapeconfig file on the -Tape Coordinator machine. -

    To list the Tape Coordinator machines and port offsets defined in the -Backup Database, issue the backup listhosts command. -

    Options -

    -

    -tapehost -
    Specifies the hostname of the machine housing the Tape Coordinator to -delete. -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator to delete. -If omitted, it defaults to 0. If provided, it is an integer -between 0 (zero) and 58510, and must match the port -offset number assigned to the same combination of Tape Coordinator and tape -device or file in the /usr/afs/backup/tapeconfig file on the Tape -Coordinator machine indicated by the -tapehost argument. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command deletes the Backup Database entry for the Tape -Coordinator with port offset 2 on the Tape Coordinator machine -backup3.abc.com: -

       % backup delhost -tapehost backup3.abc.com -portoffset 2
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addhost -

    backup listhosts -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf070.htm b/doc/html/AdminReference/auarf070.htm deleted file mode 100644 index 4308ba898..000000000 --- a/doc/html/AdminReference/auarf070.htm +++ /dev/null @@ -1,94 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup delvolentry

    - - - - - - -

    Purpose -

    Deletes a volume entry from a volume set -

    Synopsis -

    backup delvolentry -name <volume set name>  -entry <volume set index> 
    -                   [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup delvole  -n <volume set name>  -e <volume set index>
    -                [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup delvolentry command deletes the indicated volume -entry from the volume set specified with the -name argument. -Use the -entry argument to identify the volume entry by its index -number. To display the index numbers, use the backup -listvolsets command. -

    If there are any remaining volume entries with index numbers higher than -the deleted entry, their indexes are automatically decremented to eliminate -any gaps in the indexing sequence. -

    Cautions -

    Deleting volume entries from a temporary volume set is possible only within -the interactive session in which the volume set was created. -

    Options -

    -

    -name -
    Names the volume set from which to delete a volume entry. -

    -entry -
    Specifies the index number of the volume entry to delete. Use the -backup listvolsets command to display the index numbers for a -volume set's volume entries. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command deletes the fourth volume entry from the volume set -called sys: -

       % backup delvolentry -name sys -entry 4
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addvolentry -

    backup addvolset -

    backup delvolset -

    backup listvolsets -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf071.htm b/doc/html/AdminReference/auarf071.htm deleted file mode 100644 index 04a0651fa..000000000 --- a/doc/html/AdminReference/auarf071.htm +++ /dev/null @@ -1,86 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup delvolset

    - - - - - -

    Purpose -

    Deletes one or more volume sets from the Backup Database -

    Synopsis -

    backup delvolset -name <volume set name>+
    -                 [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup delvols -n <volume set name>+  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup delvolset command deletes each volume set named by -the -name argument, and the volume entries each contains, from the -Backup Database. The backup listvolsets command lists the -volume sets (and their volume entries) currently defined in the Backup -Database. -

    Cautions -

    Deleting a temporary volume set is possible only within the interactive -session in which it was created. Exiting the interactive session also -destroys the temporary volume set automatically. -

    Options -

    -

    -name -
    Names each volume set to delete. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command deletes the volume set called user and all -volume entries in it: -

       % backup delvolset user
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addvolentry -

    backup addvolset -

    backup delvolentry -

    backup listvolsets -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf072.htm b/doc/html/AdminReference/auarf072.htm deleted file mode 100644 index 56f8b69d9..000000000 --- a/doc/html/AdminReference/auarf072.htm +++ /dev/null @@ -1,256 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup diskrestore

    - - - - - - -

    Purpose -

    Restores the entire contents of a partition -

    Synopsis -

    backup diskrestore -server <machine to restore> 
    -                   -partition <partition to restore>
    -                   [-portoffset <TC port offset>+]  
    -                   [-newserver <destination machine>]
    -                   [-newpartition <destination partition>]
    -                   [-extension <new volume name extension>]
    -                   [-n]  [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup di -s <machine to restore> -pa <partition to restore>
    -          [-po <TC port offset>+]  [-news <destination machine>]
    -          [-newp <destination partition>]  [-e <new volume name extension>]
    -          [-n]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup diskrestore command restores all of the volumes for -which the Volume Location Database (VLDB) lists a read/write site on the -partition specified with the -server and -partition -arguments. It is useful if a disk or machine failure corrupts or -destroys the data on an entire partition. (To restore any read-only or -backup volumes that resided on the partition, use the vos release -and vos backup commands, respectively, after restoring the -read/write version.) -

    If restoring only selected volumes to a single site, it is usually more -efficient to use the backup volrestore command. To restore -multiple volumes to many different sites, use the backup -volsetrestore command. -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file on the Tape -Coordinator machine associated with the specified port offset, then the Backup -System restores data from the backup data file listed for that port offset in -the Tape Coordinator's /usr/afs/backup/tapeconfig file, -instead of from tape. For the sake of clarity, the following text -refers to tapes only, but the Backup System handles backup data files in much -the same way.) -

    The Backup System determines whether the read/write or backup version of -each volume was dumped more recently, and restores the dumps of that version, -starting with the most recent full dump. It resets the creation -timestamp of each restored volume to the date and time at which it begins -restoring the volume (the creation timestamp appears in the -Creation field of the output from the vos examine and -vos listvol commands). -

    If all of the full and incremental dumps of all relevant volumes were not -written on compatible tape devices, use the -portoffset argument to -list multiple port offset numbers in the order in which the tapes are needed -(first list the port offset for the full dump, second the port offset for the -level 1 incremental dump, and so on). This implies that the full dumps -of all relevant volumes must have been written to a type of tape that the -first Tape Coordinator can read, the level 1 incremental dumps to a type of -tape the second Tape Coordinator can read, and so on. If dumps are on -multiple incompatible tape types, use the backup volrestore command -to restore individual volumes, or the backup volsetrestore command -after defining groups of volumes that were dumped to compatible tape -types. For further discussion, see the IBM AFS Administration -Guide. -

    By default, the Backup System restores the contents of the specified -partition to that same partition. To restore the contents to an -alternate site, combine the following options as indicated. The Backup -System removes each volume from the original site, if it still exists, and -records the change of site in the VLDB. -

      -

    • To restore to a different partition on the same file server machine, -provide the -newpartition argument. -

    • To restore to the partition with the same name on a different file server -machine, provide the -newserver argument. -

    • To restore to a completely different site, combine the --newserver and -newpartition arguments. -
    -

    By default, the Backup System overwrites the contents of existing volumes -with the restored data. To create a new volume to house the restored -data instead, use the -extension argument. The Backup System -creates the new volume at the site designated by the -newserver and --newpartition arguments if they are used or the -server -and -partition arguments otherwise. It derives the volume -name by adding the extension to the read/write base name listed in the VLDB, -and creates a new VLDB entry. The command does not affect the existing -volume in any way. However, if a volume with the specified extension -also already exists, the command overwrites it. -

    To print out a list of the tapes containing the needed dumps, without -actually performing the restore operation, include the -n flag -along with the other options to be used on the actual command. -

    The Tape Coordinator's default response to this command is to access -the first tape it needs by invoking the MOUNT instruction in the -local CFG_device_name file, or by prompting the backup -operator to insert the tape if there is no MOUNT -instruction. However, if the AUTOQUERY NO instruction -appears in the CFG_device_name file, or if the issuer of -the butc command included the -noautoquery flag, the -Tape Coordinator instead expects the tape to be in the device already. -If it is not, or is the wrong tape, the Tape Coordinator invokes the -MOUNT instruction or prompts the operator. It also invokes -the MOUNT instruction or prompts for any additional tapes needed to -complete the restore operation; the backup operator must arrange to -provide them. -

    Cautions -

    If issuing this command to recover data after a disk crash or other damage, -be sure not to issue the vos syncserv command first. Doing -so destroys the VLDB record of the volumes that resided on the -partition. -

    Options -

    -

    -server -
    Names the file server machine that the VLDB lists as the site of the -volumes that need to be restored. -

    -partition -
    Names the partition that the VLDB lists as the site of the volumes that -need to be restored. -

    -portoffset -
    Specifies one or more port offset numbers (up to a maximum of 128), each -corresponding to a Tape Coordinator to use in the operation. If there -is more than one value, the Backup System uses the first one when restoring -the full dump of each volume, the second one when restoring the level 1 -incremental dump of each volume, and so on. It uses the final value in -the list when restoring dumps at the corresponding depth in the dump hierarchy -and at all lower levels. -

    Provide this argument unless the default value of 0 (zero) is appropriate -for all dumps. If 0 is just one of the values in the list, -provide it explicitly in the appropriate order. -

    -newserver -
    Names an alternate file server machine to which to restore the -volumes. If this argument is omitted, the volumes are restored to the -file server machine named by the -server argument. -

    -newpartition -
    Names an alternate partition to which to restore the data. If this -argument is omitted, the volumes are restored to the partition named by the --partition argument. -

    -extension -
    Creates a new volume for each volume being restored, to house the restored -data. The Backup System derives the new volume's name by appending -the specified string to the read/write base name listed in the VLDB, and -creates a new VLDB volume entry. The Backup System preserves the -contents of the volumes on the partition, if any still exist. Any -string other than .readonly or .backup is -acceptable, but the combination of the base name and extension cannot exceed -22 characters in length. To use a period to separate the extension from -the name, specify it as the first character of the string (as in -.rst, for example). -

    -n -
    Displays a list of the tapes necessary to perform the requested restore, -without actually performing the operation. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If a tape error occurs during the restore operation, the Tape Coordinator -displays the following messages: -

       Restore operation on volume name failed due to tape error
    -   Do you want to continue (y/n)?
    -   
    -
    -

    where name is the name of the volume that was being restored when -the tape error occurred. Enter the value y to continue the -operation without restoring the indicated volume or the value n to -terminate the operation. In the latter case, the operator can then -attempt to determine the cause of the tape error. -

    If the issuer includes the -n flag with the command, the -following string appears at the head of the list of the tapes necessary to -perform the restore operation: -

       Tapes needed:
    -   
    -
    -

    Examples -

    The following command restores the volumes for which the VLDB lists a -read/write site on the /vicepd partition of the machine -fs5.abc.com. The Tape Coordinator associated -with port offset 3 performs the operation. -

       % backup diskrestore -server fs5.abc.com -partition /vicepd -portoffset 3
    -   
    -
    -

    The following command restores the volumes for which the VLDB lists a -read/write site on the /vicepb partition of the machine -fs1.abc.com to a new site: the -/vicepa partition on the machine -fs3.abc.com. The Tape Coordinator associated -with port offset 0 performs the operation. (The command appears here on -two lines only for legibility.) -

       % backup diskrestore  -server fs1.abc.com -partition /vicepb   \
    -                         -newserver fs3.abc.com -newpartition /vicepa
    -   
    -
    -

    The following command lists the tapes required to restore the volumes for -which the VLDB lists a read/write site on the /vicepm partition of -the machine fs4.abc.com: -

       % backup diskrestore -server fs4.abc.com -partition /vicepm -n
    -   Tapes needed:
    -   user.sunday1.1
    -   user.sunday1.2
    -   user.monday1.1
    -   user.tuesday1.1
    -   user.wednesday1.1
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server or Volume Location (VL) Server is -running, and on every file server machine that houses an affected -volume. If the -localauth flag is included, the issuer must -instead be logged on to a server machine as the local superuser -root. -

    Related Information -

    backup -

    backup dump -

    backup volrestore -

    backup volsetrestore -

    butc -

    vos backup -

    vos examine -

    vos listvol -

    vos release -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf073.htm b/doc/html/AdminReference/auarf073.htm deleted file mode 100644 index 4711d5df1..000000000 --- a/doc/html/AdminReference/auarf073.htm +++ /dev/null @@ -1,480 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup dump

    - - - - - - - - - - - - - - -

    Purpose -

    Creates a dump (dumps a volume set at a particular dump level) -

    Synopsis -

    backup dump [-volumeset <volume set name>]  [-dump <dump level name>]
    -            [-portoffset <TC port offset>]  [-at <Date/time to start dump>+]
    -            [-append]  [-n]  [-file <load file>]
    -            [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup dump [-v <volume set name>]  [-d <dump level name>]
    -            [-p <TC port offset>]  [-at <Date/time to start dump>+]
    -            [-ap]  [-n]  [-f <load file>]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup dump command either dumps the volume set specified by -the -volumeset argument at the dump level specified by the --dump argument and creates a Backup Database dump record about it, -or executes the dump instructions listed in the file named by the --file argument. The Tape Coordinator indicated by the --portoffset argument (or on each command in the file) executes the -operation. -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file on the Tape -Coordinator machine associated with the specified port offset, then the Backup -System dumps data to the backup data file listed for that port offset in the -Tape Coordinator's /usr/afs/backup/tapeconfig file, rather -than to tape. For the sake of clarity, the following text refers to -tapes only, but the Backup System handles backup data files in much the same -way.) -

    The term dumping refers to copying a collection of data to tape -or a backup data file, and the resulting collection is termed a -dump. The set of tapes that contain one or more dumps is -called a dump set. The first dump in a dump set is its -initial dump, and any dumps subsequently added to the dump set (by -use of the -append argument) are appended dumps. -Creating appended dumps is optional, and appended dumps can be of different -volume sets, and at different dump levels, than the initial dump. -

    A full dump, created at a full dump level in the dump hierarchy, -contains all of the data that existed at the time of the dump in the volumes -belonging to the volume set. An incremental dump, created at -an incremental dump level, contains only data that has changed since the -volume set was dumped at the incremental level's parent dump -level (the dump level immediately above the incremental level in the -hierarchy), which can be a full or incremental level. More -specifically, an incremental dump includes only the files and directories that -have modification timestamps later than the clone date of the -volume included at the parent dump level. For backup and read-only -volumes, the clone date is the time at which the volume was cloned from its -read/write source before being included in the parent dump; for -read/write volumes, it represents the time at which the volume was locked for -inclusion in the parent dump. The clone date appears in the clone -date field of the output from the backup volinfo -command. As an example, an incremental dump at the -/full/week1/thursday level includes only files and directories that -have changed since the volume set was dumped at the /full/week1 -level. -

    Initiating different types of dump operations -

    To initiate a dump operation that is to start as soon as the relevant Tape -Coordinator is available, provide only the -volumeset, --dump, -portoffset, and optionally -append -options. To schedule a single backup dump command to execute -in the future, also include the -at argument to specify the start -time. -

    To append a dump to an existing dump set, include the -append -flag. The Backup System imposes the following conditions on appended -dumps: -

      -

    • If writing to tape, the Tape Coordinator checks that it is the final one -in a dump set for which there are complete and valid tape and dump records in -the Backup Database. If not, it rejects the tape and requests an -acceptable one. The operator can use the -dbadd argument to -the backup scantape command to insert the necessary records into -the database. -

    • The most recent dump on the tape or in the backup data file must have -completed successfully. -

    • The dump set must begin with an initial dump that is recorded in the -Backup Database. If there are no dumps on the tape, then the Backup -System treats the dump operation as an initial dump and imposes the relevant -requirements (for example, checks the AFS tape name if appropriate). -
    -

    To schedule multiple dump operations, list the operations in the file named -by the -file argument. Optionally include the -at -argument to specify when the backup command interpreter reads the -file; otherwise it reads it immediately. Do not combine the --file argument with the command's first three arguments or the --append or -n flags. The commands in the file can -include any of the backup dump command's arguments, including -the -at argument to schedule them to run even later in the -future. -

    To generate a list of the volumes included in a dump, without actually -dumping them, combine the -n flag with the options to be used on -the actual command. -

    How the Backup System executes a dump operation -

    Before beginning a dump operation, the Backup System verifies that there is -a Backup Database entry for the volume set, dump level, and port -offset. If the command is correctly formed and issued in interactive -mode, it is assigned a job number and added to the jobs list. List jobs -in interactive mode by using the (backup) jobs command; -terminate them with the (backup) kill command. -

    After obtaining the list of volumes to dump from the Volume Location (VL) -Server, the Backup System sorts the list by site (server and -partition). It groups volumes from the same site together in the dump -to minimize the number of times the operator must change tapes during restore -operations. -

    The dependence of an incremental dump on its parent means that a valid -parent dump must already exist for the Backup System to create its child -incremental dump. If the Backup System does not find a record of a dump -created at the immediate parent dump level, it looks in the Backup Database -for a dump created at one level higher in the hierarchy, and so on, up to the -full dump level if necessary. It creates an incremental dump at the -level one below the lowest valid parent dump set that it finds. If it -fails to find even a full dump, it dumps the volume set at the full dump -level. -

    If the Backup System is unable to access a volume during a dump operation, -it skips the volume and dumps the remaining volumes from the volume -set. Possible reasons a volume is inaccessible include server machine -or process outages, or that the volume was moved between the time the Volume -Location (VL) Server generated the list of sites for the volume in the volume -set and the time the Backup System actually attempts to dump the data in -it. After the first dumping pass, the Backup System attempts to dump -each volume it skipped. If it still cannot dump a volume and the -ASK NO instruction does not appear in the -CFG_device_name file, it queries the operator as to -whether it needs to attempt to dump the volume again, omit the volume from the -dump, or halt the dump operation altogether. When prompted, the -operator can attempt to solve whatever problem prevented the Backup System -from accessing the volumes. If the ASK NO instruction -appears in the CFG_device_name file, the Backup System -omits the volume from the dump. -

    Before scheduling a dump operation, the Backup System verifies that the -date specified by the -at argument is in the future, and checks the -validity of the volume set, dump level and port offset as for a regular dump -operation. It checks the validity of the parameters again just before -actually running the scheduled operation. -

    Before writing an initial dump to a tape that does not have a permanent -name on the label, the Backup System checks that the AFS tape name on the -label is acceptable. If desired, disable name checking by including the -NAME_CHECK NO instruction in the -CFG_device_name file. -

    If AFS tape name checking is enabled, the Backup System accepts the -following three types of values for the AFS tape name. If the name on -the label does not conform, the Backup System obtains a tape with an -acceptable label by invoking the MOUNT instruction in the -CFG_device_name file or prompting the operator. -

      -

    1. A name of the form -volume_set_name.dump_level_name.tape_index, where -volume_set_name matches the value of the -volumeset -argument, dump_level_name matches the last element in the pathname -value of the -dump argument, and tape_index reflects the -tape's place in a multitape dump set. As an example, the first -tape in a dump set for which the initial dump is of volume set user -at the dump level /sunday2/monday has AFS tape name -user.monday.1. If the label records this type -of AFS tape name, the Backup System retains the AFS tape name and writes the -dump to the tape. -

    2. The string <NULL>, which usually indicates that a backup -operator has used the backup labeltape command to write a label on -the tape, but did not include the -name argument to assign an AFS -tape name. Presumably, the operator did include the -pname -argument to assign a permanent name. If the label records a -<NULL> value, the Backup System constructs and records on the -label the appropriate AFS tape name, and writes the dump on the tape. -

    3. No value at all, because the tape has never been labeled or used in the -Backup System. As when the AFS tape name is <NULL>, the -Backup System constructs and records on the label the appropriate AFS tape -name, and writes the dump on the tape. -
    -

    To determine how much data it can write to a tape, the Tape Coordinator -reads the capacity recorded on the tape's label (placed there by -including the -size argument to the backup labeltape -command). If the label's capacity field is empty, the Tape -Coordinator uses the capacity recorded for the specified port offset in the -local tapeconfig file. If the capacity field in the -tapeconfig file is also empty, the Tape Coordinator uses the -maximum capacity of 2 TB. -

    During a dump operation, the Tape Coordinator tracks how much data it has -written and stops shortly before it reaches what it believes is the -tape's capacity. If it is in the middle of writing the data for a -volume when it reaches that point, it writes a special marker that indicates -an interrupted volume and continues writing the volume on the next -tape. It can split a volume this way during both an initial and an -appended dump, and the fact that the volume resides on multiple tapes is -automatically recorded in the Backup Database. -

    If the tape is actually larger than the expected capacity, then the Tape -Coordinator simply does not use the excess tape. If the tape is smaller -than the expected capacity, the Tape Coordinator can reach the end-of-tape -(EOT) unexpectedly while it is writing data. If the Tape Coordinator is -in the middle of the writing data from a volume, it obtains a new tape and -rewrites the entire contents of the interrupted volume to it. The data -from the volume that was written to the previous tape remains there, but is -never used. -

    The Backup System allows recycling of tapes (writing a new dump set over an -old dump set that is no longer needed), but imposes the following -conditions: -

      -

    • All dumps in the old dump set must be expired. The Backup System -always checks expiration dates, even when name checking is disabled. -

    • If the tape to be recycled does not have a permanent name and name -checking is enabled, then the AFS tape name derived from the new initial -dump's volume set name and dump level name must match the AFS tape name -already recorded on the label. -

    • The tape cannot already have data on it that belongs to the dump currently -being performed, because that implies that the operator or automated tape -device has not removed the previous tape from the drive, or has mistakenly -reinserted it. The Tape Coordinator generates the following message and -attempts to obtain another tape: -
         Can't overwrite tape containing the dump in progress
      -   
      -
      -

    • The tape cannot contain data from a parent dump of the current -(incremental) dump, because overwriting a parent dump makes it impossible to -restore data from the current dump. The Tape Coordinator generates the -following message and attempts to obtain another tape: -
         Can't overwrite the parent dump parent_name (parent_dump_ID)
      -   
      -
      -
    -

    To recycle a tape before all dumps on it have expired or if the AFS tape -name is wrong, use the backup labeltape command to overwrite the -tape's label and remove all associated tape and dump records from the -Backup Database. -

    The Tape Coordinator's default response to this command is to access -the first tape by invoking the MOUNT instruction in the -CFG_device_name file, or by prompting the backup operator -to insert the tape if there is no MOUNT instruction. -However, if the AUTOQUERY NO instruction appears in the -CFG_device_name file, or if the issuer of the -butc command included the -noautoquery flag, the Tape -Coordinator instead expects the tape to be in the device already. If it -is not, the Tape Coordinator invokes the MOUNT instruction or -prompts the operator. It also invokes the MOUNT instruction -or prompts for any additional tapes needed to complete the dump -operation; the issuer must arrange to provide them. -

    Cautions -

    If a dump operation is interrupted or fails for any reason, data from all -volumes written to tape before the interrupt are valid can be used in a -restore operation. The Backup Database includes an entry for the failed -dump and for each volume that was successfully dumped. See the IBM -AFS Administration Guide for information on dealing with interrupted -dumps. -

    If dumping to tape rather than a backup data file, it is best to use only -compatible tape devices (ones that can read the same type of tape). -Using compatible devices greatly simplifies restore operations. The --portoffset argument to the backup diskrestore and -backup volsetrestore commands accepts multiple port offset numbers, -but the Backup System uses the first listed port offset when restoring all -full dumps, the second port offset when restoring all level 1 dumps, and so -on. At the very least, use compatible tape devices to perform dumps at -each level. If compatible tape devices are not used, the backup -volrestore command must be used to restore one volume at a time. -

    Valid (unexpired) administrative tokens must be available to the -backup command interpreter both when it reads the file named by the --file argument and when it runs each operation listed in the -file. Presumably, the issuer is scheduling dumps for times when no -human operator is present, and so must arrange for valid tokens to be -available on the local machine. One option is to issue all commands (or -run all scripts) on file server machines and use the -localauth -flag on the backup and vos commands. To protect -against improper access to the machine or the tokens, the machine must be -physically secure (perhaps even more protected than a Tape Coordinator machine -monitored by a human operator during operation). Also, if an unattended -dump requires multiple tapes, the operator must properly configure a tape -stacker or jukebox and the device configuration file. -

    When the command is issued in regular (non-interactive) mode, the command -shell prompt does not return until the dump operation completes. To -avoid having to open additional connections, issue the command in interactive -mode, especially when including the -at argument to schedule dump -operations. -

    Options -

    -

    -volumeset -
    Names the volume set to dump. The -dump argument must be -provided along with this one; do not combine them with the --file argument. If using a temporary volume set, the -vos dump command must be issued within the interactive session in -which the backup addvolset command was issued with the --temporary flag. -

    -dump -
    Specifies the complete pathname of the dump level at which to dump the -volume set. The -volumeset argument must be provided along -with this one; do not combine them with the -file -argument. -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator handling the -tapes for this operation. It must be provided unless the default value -of 0 (zero) is appropriate; do not combine it with the -file -argument. -

    -at -
    Specifies the date and time in the future at which to run the command, or -to read the file named by the -file argument. Provide a -value in the format mm/dd/yyyy [hh:MM], where the -month (mm), day (dd), and year (yyyy) are -required. Valid values for the year range from 1970 to -2037; higher values are not valid because the latest possible -date in the standard UNIX representation is in February 2038. The -Backup System automatically reduces any later date to the maximum -value. -

    The hour and minutes (hh:MM) are optional, but if provided -must be in 24-hour format (for example, the value 14:36 -represents 2:36 p.m.). If omitted, the time -defaults to midnight (00:00 hours). -

    As an example, the value 04/23/1999 20:20 schedules the -command for 8:20 p.m. on 23 April 1999. -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition. -
    -

    -append -
    Appends the dump onto the end of a tape that already contains data from -another dump. However, if the tape is not in fact part of an existing -dump set, the Backup System creates a new dump set using the parameters of -this dump. If the tape is not the last tape in the dump set, the Tape -Coordinator prompts for insertion of the appropriate tape. Do not -combine this argument with the -file argument. -

    -n -
    Displays the names of volumes to be included in the indicated dump, -without actually performing the dump operation. Do not combine this -argument with the -file argument. -

    -file -
    Specifies the local disk or AFS pathname of a file containing -backup commands. The Backup System reads the file -immediately, or at the time specified by the -at argument if it is -provided. A partial pathname is interpreted relative to the current -working directory. -

    Place each backup dump command on its own line in the indicated -file, using the same syntax as for the command line, but without the word -backup at the start of the line. Each command must include a -value for the -volumeset and -dump arguments, and for -the -portoffset argument unless the default value of 0 is -appropriate. Commands in the file can also include any of the -backup dump command's optional options. In the -following example file, the first command runs as soon as the Backup System -reads the file, whereas the other commands are themselves scheduled; the -specified date and time must be later than the date and time at which the -Backup System reads the file. -

       dump user /sunday1/wednesday -port 1 
    -   dump sun4x_56 /sunday1/friday -port 2 -at 04/08/1999
    -   dump sun4x_55 /sunday1/friday -port 2 -at 04/08/1999 02:00 -append
    -   
    -
    -

    -

    Do not combine this argument with the -volumeset, --dump, -portoffset, -append, or -n -options. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The command interpreter first generates a list of the volumes to be -included in the dump by matching the entries in the volume set against the -volumes listed in the Volume Location Database (VLDB). It prints the -list following the header: -

       Preparing to dump the following volumes:
    -   
    -
    -

    The following message then indicates that the command interpreter has -passed the dump request to the appropriate Tape Coordinator for -processing: -

       Starting dump.
    -   
    -
    -

    If the issuer includes the -n flag, the output is of the -following form: -

       Starting dump of volume set 'volume set' (dump set 'dump level')
    -   Total number of volumes : number dumped
    -   Would have dumped the following volumes:
    -   list_of_volumes
    -   
    -
    -

    where list_of_volumes identifies each volume by name and volume ID -number. -

    If the Tape Coordinator is unable to access a volume, it prints an error -message in its window and records the error in its log and error files. -

    Examples -

    The following command dumps the volumes in the volume set called -user at the dump level /full/sunday2/monday. The -issuer places the necessary tapes in the device with port offset 5. -

       % backup dump -volumeset user -dump /full/sunday2/monday -portoffset 5
    -   Preparing to dump the following volumes:
    -   user.jones.backup   387623900
    -   user.pat.backup     486219245
    -   user.smith.backup   597315841
    -          .                .
    -          .                .
    -   Starting dump.
    -   
    -
    -

    The following command displays the list of volumes to be dumped when the -user dumps the sys_sun volume set at the /full dump -level. -

       % backup dump -volumeset sys_sun -dump /full -n
    -   Starting dump of volume set 'sys_sun' (dump set '/full')
    -   Total number of volumes: 24
    -   Would have dumped the following volumes:
    -   sun4x_56      124857238
    -   sun4x_56.bin  124857241
    -       .            .
    -       .            .
    -   sun4x_55      124857997
    -       .            .
    -       .            .
    -   
    -
    -

    The following command schedules a dump of the volumes in the volume set -user at the dump level /sunday2/monday1 for 11:00 -p.m. on 14 June 1999. The appropriate Tape Coordinator -has port offset 0 (zero), so that argument is omitted. -

       % backup dump -volumeset user -dump /sunday2/monday1 -at 06/14/1999 23:00
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server or Volume Location (VL) Server is -running, and on every file server machine that houses an affected -volume. If the -localauth flag is included, the issuer must -instead be logged on to a server machine as the local superuser -root. -

    Related Information -

    backup -

    backup adddump -

    backup addvolentry -

    backup addvolset -

    backup diskrestore -

    backup labeltape -

    backup volrestore -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf074.htm b/doc/html/AdminReference/auarf074.htm deleted file mode 100644 index 0af90a5fb..000000000 --- a/doc/html/AdminReference/auarf074.htm +++ /dev/null @@ -1,340 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup dumpinfo

    - - - - - - - - -

    Purpose -

    Displays a dump record from the Backup Database -

    Synopsis -

    backup dumpinfo [-ndumps <no. of dumps>]  [-id <dump id>]
    -                [-verbose]  [-localauth]  [-cell <cell name>]  [-help ]
    -   
    -backup dumpi [-n <no. of dumps>]  [-i <dump id>]
    -             [-v]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup dumpinfo command formats and displays the Backup -Database record for the specified dumps. To specify how many of the -most recent dumps to display, starting with the newest one and going back in -time, use the -ndumps argument. To display more detailed -information about a single dump, use the -id argument. To -display the records for the 10 most recent dumps, omit both the --ndumps and -id arguments. -

    The -verbose flag produces very detailed information that is -useful mostly for debugging purposes. It can be combined only with the --id argument. -

    Options -

    -

    -ndumps -
    Displays the Backup Database record for each of the specified number of -dumps that were most recently performed. If the database contains fewer -dumps than are requested, the output includes the records for all existing -dumps. Do not combine this argument with the -id or --verbose options; omit all options to display the records for -the last 10 dumps. -

    -id -
    Specifies the dump ID number of a single dump for which to display the -Backup Database record. Precede the dump id value with the --id switch; otherwise, the command interpreter interprets it -as the value of the -ndumps argument. Combine this argument -with the -verbose flag, but not with the -ndumps -argument; omit all options to display the records for the last 10 -dumps. -

    -verbose -
    Provides more detailed information about the dump specified with the --id argument, which must be provided along with it. Do not -combine this flag with the -ndumps argument. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the -ndumps argument is provided, the output presents the -following information in table form, with a separate line for each dump: -

    -

    dumpid -
    The dump ID number. -

    parentid -
    The dump ID number of the dump's parent dump. A value of -0 (zero) identifies a full dump. -

    lv -
    The depth in the dump hierarchy of the dump level used to create the -dump. A value of 0 (zero) identifies a full dump, in which -case the value in the parentid field is also 0. A -value of 1 or greater indicates an incremental dump made at the -corresponding level in the dump hierarchy. -

    created -
    The date and time at which the Backup System started the dump operation -that created the dump. -

    nt -
    The number of tapes that contain the data in the dump. A value of -0 (zero) indicates that the dump operation was terminated or -failed. Use the backup deletedump command to remove such -entries. -

    nvols -
    The number of volumes from which the dump includes data. If a -volume spans tapes, it is counted twice. A value of 0 (zero) -indicates that the dump operation was terminated or failed; the value in -the nt field is also 0 in this case. -

    dump name -
    The dump name in the form -
       volume_set_name.dump_level_name (initial_dump_ID)
    -   
    -
    -

    -

    where volume_set_name is the name of the volume set, and -dump_level_name is the last element in the dump level pathname at -which the volume set was dumped. -

    The initial_dump_ID, if displayed, is the dump ID of the initial -dump in the dump set to which this dump belongs. If there is no value -in parentheses, the dump is the initial dump in a dump set that has no -appended dumps. -

    -

    If the -id argument is provided alone, the first line of output -begins with the string Dump and reports information for the entire -dump in the following fields: -

    -

    id -
    The dump ID number. -

    level -
    The depth in the dump hierarchy of the dump level used to create the -dump. A value of 0 (zero) identifies a full dump. A -value of 1 (one) or greater indicates an incremental dump made at -the specified level in the dump hierarchy. -

    volumes -
    The number of volumes for which the dump includes data. -

    created -
    The date and time at which the dump operation began. -
    -

    If an XBSA server was the backup medium for the dump (rather than a tape -device or backup data file), the following line appears next: -

       Backup Service: XBSA_program: Server: hostname
    -
    -

    where XBSA_program is the name of the XBSA-compliant program and -hostname is the name of the machine on which the program runs. -

    Next the output includes an entry for each tape that houses volume data -from the dump. Following the string Tape, the first two -lines of each entry report information about that tape in the following -fields: -

    -

    name -
    The tape's permanent name if it has one, or its AFS tape name -otherwise, and its tape ID number in parentheses. -

    nVolumes -
    The number of volumes for which this tape includes dump data. -

    created -
    The date and time at which the Tape Coordinator began writing data to this -tape. -
    -

    Following another blank line, the tape-specific information concludes with -a table that includes a line for each volume dump on the tape. The -information appears in columns with the following headings: -

    -

    Pos -
    The relative position of each volume in this tape or file. On a -tape, the counter begins at position 2 (the tape label occupies position 1), -and increments by one for each volume. For volumes in a backup data -file, the position numbers start with 1 and do not usually increment only by -one, because each is the ordinal of the 16 KB offset in the file at which the -volume's data begins. The difference between the position numbers -therefore indicates how many 16 KB blocks each volume's data -occupies. For example, if the second volume is at position 5 and the -third volume in the list is at position 9, that means that the dump of the -second volume occupies 64 KB (four 16-KB blocks) of space in the file. -

    Clone time -
    For a backup or read-only volume, the time at which it was cloned from its -read/write source. For a Read/Write volume, it is the same as the dump -creation date reported on the first line of the output. -

    Nbytes -
    The number of bytes of data in the dump of the volume. -

    Volume -
    The volume name, complete with .backup or -.readonly extension if appropriate. -
    -

    If both the -id and -verbose options are provided, -the output is divided into several sections: -

      -

    • The first section, headed by the underlined string Dump, -includes information about the entire dump. The fields labeled -id, level, created, and nVolumes -report the same values (though in a different order) as appear on the first -line of output when the -id argument is provided by itself. -Other fields of potential interest to the backup operator are: -
      -

      Group id -
      The dump's group ID number, which is recorded in the -dump's Backup Database record if the GROUPID instruction -appears in the Tape Coordinator's -/usr/afs/backup/CFG_tcid file when the dump is created. -

      maxTapes -
      The number of tapes that contain the dump set to which this dump -belongs. -

      Start Tape Seq -
      The ordinal of the tape on which this dump begins in the set of tapes that -contain the dump set. -
      -

    • For each tape that contains data from this dump, there follows a section -headed by the underlined string Tape. The fields labeled -name, written, and nVolumes report the same -values (though in a different order) as appear on the second and third lines -of output when the -id argument is provided by itself. Other -fields of potential interest to the backup operator are: -
      -

      expires -
      The date and time when this tape can be recycled, because all dumps it -contains have expired. -

      nMBytes Data and nBytes Data -
      Summed together, these fields represent the total amount of dumped data -actually from volumes (as opposed to labels, filemarks, and other -markers). -

      KBytes Tape Used -
      The number of kilobytes of tape (or disk space, for a backup data file) -used to store the dump data. It is generally larger than the sum of the -values in the nMBytes Data and nBytes Data fields, -because it includes the space required for the label, file marks and other -markers, and because the Backup System writes data at 16 KB offsets, even if -the data in a given block doesn't fill the entire 16 KB. -
      -

    • For each volume on a given tape, there follows a section headed by the -underlined string Volume. The fields labeled -name, position, clone, and nBytes -report the same values (though in a different order) as appear in the table -that lists the volumes in each tape when the -id argument is -provided by itself. Other fields of potential interest to the backup -operator are: -
      -

      id -
      The volume ID. -

      tape -
      The name of the tape containing this volume data. -
      -
    -

    Examples -

    The following example displays information about the last five dumps: -

       % backup dumpinfo -ndumps 5
    -      dumpid   parentid lv created          nt nvols dump name
    -   924424000          0 0  04/18/1999 04:26  1    22 usr.sun (924424000)
    -   924685000  924424000 1  04/21/1999 04:56  1    62 usr.wed (924424000)
    -   924773000  924424000 1  04/22/1999 05:23  1    46 usr.thu (924424000)
    -   924860000  924424000 1  04/23/1999 05:33  1    58 usr.fri (924424000)
    -   925033000          0 0  04/25/1999 05:36  2    73 sys.week
    -   
    -
    -

    The following example displays a more detailed record for a single -dump. -

       % backup dumpinfo -id 922097346
    -   Dump: id 922097346, level 0, volumes 1, created Mon Mar 22 05:09:06 1999
    -   Tape: name monday.user.backup (922097346)
    -   nVolumes 1, created 03/22/1999 05:09
    -    Pos       Clone time   Nbytes Volume
    -      1 03/22/1999 04:43 27787914 user.pat.backup
    -   
    -
    -

    The following example displays even more detailed information about the -dump displayed in the previous example (dump ID 922097346). This -example includes only one exemplar of each type of section (Dump, -Tape, and Volume): -

       % backup dumpinfo -id 922097346 -verbose
    -   Dump
    -   ----
    -   id = 922097346
    -   Initial id = 0
    -   Appended id = 922099568
    -   parent = 0
    -   level = 0
    -   flags = 0x0
    -   volumeSet = user
    -   dump path = /monday1
    -   name = user.monday1
    -   created = Mon Mar 22 05:09:06 1999
    -   nVolumes = 1
    -   id  = 0
    -   tapeServer =
    -   format= user.monday1.%d
    -   maxTapes = 1
    -   Start Tape Seq = 1
    -   name = pat
    -   instance =
    -   cell =
    -   Tape
    -   ----
    -   tape name = monday.user.backup
    -   AFS tape name = user.monday1.1
    -   flags = 0x20
    -   written = Mon Mar 22 05:09:06 1999
    -   expires = NEVER
    -   kBytes Tape Used = 121
    -   nMBytes Data = 0
    -   nBytes  Data = 19092
    -   nFiles = 0
    -   nVolumes = 1
    -   seq = 1
    -   tapeid = 0
    -   useCount = 1
    -   dump = 922097346
    -   Volume
    -   ------
    -   name = user.pat.backup
    -   flags = 0x18
    -   id = 536871640
    -   server =
    -   partition = 0
    -   nFrags = 1
    -   position = 2
    -   clone = Mon Mar 22 04:43:06 1999
    -   startByte = 0
    -   nBytes = 19092
    -   seq = 0
    -   dump = 922097346
    -   tape = user.monday1.1
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup deletedump -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf075.htm b/doc/html/AdminReference/auarf075.htm deleted file mode 100644 index 0c75938b7..000000000 --- a/doc/html/AdminReference/auarf075.htm +++ /dev/null @@ -1,86 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup help

    - - - -

    Purpose -

    Displays the syntax of specified backup commands or lists -functional descriptions of all backup commands -

    Synopsis -

    backup help  [-topic <help string>+]  [-help]
    -  
    -backup h [-t <help string>+]  [-h]
    -
    -

    Description -

    The backup help command displays the complete online help entry -(short description and syntax statement) for each operation code specified by -the -topic argument. If the -topic argument is -omitted, the output includes the first line (name and short description) of -the online help entry for every backup command. -

    To list every backup command whose name or short description -includes a specified keyword, use the backup apropos -command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the backup part of the command name, providing -only the operation code (for example, specify dump, not backup -dump). If this argument is omitted, the output briefly describes -every backup command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each backup command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following example displays the online help entry for the backup -dump command: -

       % backup help dump
    -   backup dump: start dump
    -   Usage: backup dump -volumeset <volume set name> -dump <dump level name> 
    -   [-portoffset <TC port offset>]  [-at <Date/time to start dump>+] 
    -   [-append]  [-n]  [-file <load file>]  [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    backup -

    backup apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf076.htm b/doc/html/AdminReference/auarf076.htm deleted file mode 100644 index bbd916852..000000000 --- a/doc/html/AdminReference/auarf076.htm +++ /dev/null @@ -1,109 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup interactive

    - - - - - -

    Purpose -

    Enters interactive mode -

    Synopsis -

    -

    backup [interactive]  [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup [i]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup interactive initiates an interactive session for -issuing backup commands. As indicated in the syntax -statement, the operation code (interactive) is optional. -

    Several features of interactive mode distinguish it from regular -mode: -

      -

    • In interactive mode, the backup> prompt replaces the system -(shell) prompt. The operator enters only a command's operation -code (omitting the command suite name, backup). -

    • If the -localauth flag or the -cell argument is -included on the backup (interactive) command, the settings apply to -all commands issued during that interactive session. The issuer does -not need to type them on every command. Another consequence is that the -flag and argument do not appear in the syntax statement generated by the -help subcommand or -help flag on an individual command -issued at the backup> prompt. -

    • The (backup) jobs and (backup) kill commands are -available only in interactive mode. It is not possible to track and -terminate backup operations as cleanly in non-interactive mode. -

    • It is not necessary to enclose strings that include metacharacters in -double quotes or other delimiters. -

    • The backup command interpreter establishes a connection to the -Backup Server, Volume Server and Volume Location (VL) Server processes as it -enters interactive mode, and uses the same connection for all commands during -the session. Execution time can therefore be faster than in -non-interactive mode, in which the command interpreter must establish a new -connection for each command. -
    -

    To exit an interactive session, issue the (backup) quit -command. -

    Options -

    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example shows how the -localauth flag and --cell argument do not appear when the help dump -subcommand is issued in interactive mode. -

       % backup
    -   backup> help dump
    -   dump: start dump 
    -   Usage: dump [-volumeset <volume set name>] [-dump <dump level name>] 
    -   [-portoffset <TC port offset>] [-at <Date/time to start dump>+]
    -   [-append ] [-n ] [-file <load file>] [-help ] 
    -   
    -
    -

    Privilege Required -

    None. However, backup commands that require privilege in -regular mode still require it in interactive mode. -

    Related Information -

    backup -

    backup jobs -

    backup kill -

    backup quit -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf077.htm b/doc/html/AdminReference/auarf077.htm deleted file mode 100644 index 2c95ab0da..000000000 --- a/doc/html/AdminReference/auarf077.htm +++ /dev/null @@ -1,176 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup jobs

    - - - - - - - -

    Purpose -

    Lists pending and running operations in interactive mode -

    Synopsis -

    jobs  [-help]
    -  
    -j [-h]
    -
    -

    Description -

    The (backup) jobs command lists the job ID number and status of -each backup operation running or pending in the current interactive -session. -

    This command can be issued in interactive mode only. If the issuer -of the backup (interactive) command included the --localauth flag, the -cell argument, or both, those -settings apply to this command also. -

    To terminate operations that appear in the output, issue the (backup) -kill command and identify the operation to cancel with the job ID number -from this command's output. -

    To check the status of a Tape Coordinator, rather than of a certain -operation, use the backup status command. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output always includes the expiration date and time of the tokens that -the backup command interpreter is using during the current -interactive session, in the following format: -

       date   time: TOKEN EXPIRATION
    -
    -

    If the execution date and time specified for a scheduled dump operation is -later than date time, then its individual line (as described in the -following paragraphs) appears below this line to indicate that the current -tokens will not be available to it. -

    If the issuer of the backup command included the --localauth flag when entering interactive mode, the line instead -reads as follows: -

       :  TOKEN NEVER EXPIRES
    -
    -

    The entry for a scheduled dump operation has the following format: -

       Job job_ID:  timestamp:  dump  volume_set  dump_level
    -
    -

    where -

    -

    job_ID -
    Is a job identification number assigned by the Backup System. -

    timestamp -
    Indicates the date and time the dump operation is to begin, in the format -month/date/year -hours:minutes (in 24-hour format) -

    volume_set -
    Indicates the volume set to dump. -

    dump_level -
    Indicates the dump level at which to perform the dump operation. -
    -

    The line for a pending or running operation of any other type has the -following format: -

       Job job_ID:  operation  status
    -
    -

    where -

    -

    job_ID -
    Is a job identification number assigned by the Backup System. -

    operation -
    Identifies the operation the Tape Coordinator is performing, which is -initiated by the indicated command: -
    -

    Dump (dump name) -
    Initiated by the backup dump command. The dump -name has the following format: -

    volume_set_name.dump_level_name -

    Restore -
    Initiated by the backup diskrestore, backup -volrestore, or backup volsetrestore command. -

    Labeltape (tape_label) -
    Initiated by the backup labeltape command. The -tape_label is the name specified by the backup labeltape -command's -name or -pname argument. -

    Scantape -
    Initiated by the backup scantape command. -

    SaveDb -
    Initiated by the backup savedb command. -

    RestoreDb -
    Initiated by the backup restoredb command. -
    -

    status -
    Indicates the job's current status in one of the following -messages. If no message appears, the job is either still pending or has -finished. -
    -

    number Kbytes, volume volume_name -
    For a running dump operation, indicates the number of kilobytes copied to -tape or a backup data file so far, and the volume currently being -dumped. -

    number Kbytes, restore.volume -
    For a running restore operation, indicates the number of kilobytes copied -into AFS from a tape or a backup data file so far. -

    [abort requested] -
    The (backup) kill command was issued, but the termination -signal has yet to reach the Tape Coordinator. -

    [abort sent] -
    The operation is canceled by the (backup) kill command. -Once the Backup System removes an operation from the queue or stops it from -running, it no longer appears at all in the output from the command. -

    [butc contact lost] -
    The backup command interpreter cannot reach the Tape -Coordinator. The message can mean either that the Tape Coordinator -handling the operation was terminated or failed while the operation was -running, or that the connection to the Tape Coordinator timed out. -

    [done] -
    The Tape Coordinator has finished the operation. -

    [drive wait] -
    The operation is waiting for the specified tape drive to become -free. -

    [operator wait] -
    The Tape Coordinator is waiting for the backup operator to insert a tape -in the drive. -
    -
    -

    Examples -

    The following example shows that two restore operations and one dump -operation are running (presumably on different Tape Coordinators) and that the -backup command interpreter's tokens expire on 22 April 1999 at -10:45 am: -

       backup> jobs
    -   Job 1: Restore, 1306 Kbytes, restore.volume
    -   Job 2: Dump (user.sunday1), 34 Kbytes, volume user.pat.backup
    -   Job 3: Restore, 2498 Kbytes, restore.volume
    -          04/22/1999 10:45: TOKEN EXPIRATION
    -   
    -
    -

    Privilege Required -

    None. However, queuing any operation requires privilege, and it is -possible to issue this command only within the interactive session in which -the jobs are queued. -

    Related Information -

    backup -

    backup interactive -

    backup kill -

    backup quit -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf078.htm b/doc/html/AdminReference/auarf078.htm deleted file mode 100644 index 2e20bf68a..000000000 --- a/doc/html/AdminReference/auarf078.htm +++ /dev/null @@ -1,139 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup kill

    - - - - - - -

    Purpose -

    Terminates a pending or running operation -

    Synopsis -

    kill -id <job ID or dump set name> [-help]
    -  
    -k -i <job ID or dump set name>  [-h]
    -
    -

    Description -

    The (backup) kill command dequeues a Backup System operation -that is pending, or terminates an operation that is running, in the current -interactive session. It is available only in interactive mode. -If the issuer of the backup (interactive) command included the --localauth flag, the -cell argument, or both, then those -settings apply to this command also. -

    To terminate a dump operation, specify either the dump name -(volume_set_name.dump_level_name) or its job ID -number, which appears in the output from the (backup) jobs -command. To terminate any other type of operation, provide the job ID -number. -

    The effect of terminating an operation depends on the type and current -state of the operation: -

      -

    • If an operation is still pending, the Tape Coordinator removes it from the -queue with no other lasting effects. -

    • If the Tape Coordinator is unable to process the termination signal before -an operation completes, it simply confirms the operation's -completion. The operator must take the action necessary to undo the -effects of the incorrect operation. -

    • If a tape labeling operation is running, the effect depends on when the -Tape Coordinator receives the termination signal. The labeling -operation is atomic, so it either completes or does not begin at all. -Use the backup readlabel command to determine if the labeling -operation completed, and reissue the backup labeltape command to -overwrite the incorrect label if necessary. -

    • If a tape scanning operation is running, it terminates with no other -effects unless the -dbadd flag was included on the -backup command. In that case, the Backup System possibly has -already written new Backup Database records to represent dumps on the scanned -tape. If planning to restart the scanning operation, first locate and -remove the records created during the terminated operation: a repeated -backup scantape operation exits automatically when it finds that a -record that it needs to create already exists. -

    • If a dump operation is running, all of the volumes written to the tape or -backup data file before the termination signal is received are complete and -usable. If the operation is restarted, the Backup System performs all -the dumps again from scratch, and assigns a new dump ID number. If -writing the new dumps to the same tape or file, the operator must relabel it -first if the interrupted dump is not expired. If writing the new dump -to a different tape or file, the operator can remove the dump record -associated with the interrupted dump to free up space in the database. -

    • If a restore operation is running, completely restored volumes are online -and usable. However, it is unlikely that many volumes are completely -restored, given that complete restoration usually requires data from multiple -tapes. If the termination signal comes before the Backup System has -accessed all of the necessary tapes, each volume is only partially written and -is never brought online. It is best to restart the restore operation -from scratch to avoid possible inconsistencies. See also the -Cautions section. -
    -

    Cautions -

    It is best not to issue the (backup) kill command against -restore operations. If the termination signal interrupts a restore -operation as the Backup System is overwriting an existing volume, it is -possible to lose the volume entirely (that is, to lose both the contents of -the volume as it was before the restore and any data that was restored before -the termination signal arrived). The data being restored still exists -on the tape, but some data can be lost permanently. -

    Options -

    -

    -id -
    Identifies the backup operation to terminate. Provide one of two -types of values: -
      -

    • The operation's job ID number, as displayed in the output of the -(backup) jobs command. -

    • For a dump operation, either the job ID number or a dump name of the form -volume_set_name.dump_level_name, where -volume_set_name is the name of the volume set being dumped and -dump_level_name is the last element in the dump level pathname at -which the volume set is being dumped. The dump name appears in the -output of the (backup) jobs command along with the job ID -number. -
    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command terminates the operation with job ID 5: -

       backup> kill 5
    -   
    -
    -

    The following command terminates the dump operation called -user.sunday1: -

       backup> kill user.sunday1
    -   
    -
    -

    Privilege Required -

    The issuer must have the privilege required to initiate the operation being -cancelled. Because this command can be issued only within the -interactive session during which the operation was initiated, the required -privilege is essentially guaranteed. -

    Related Information -

    backup -

    backup interactive -

    backup jobs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf079.htm b/doc/html/AdminReference/auarf079.htm deleted file mode 100644 index 3b532ad13..000000000 --- a/doc/html/AdminReference/auarf079.htm +++ /dev/null @@ -1,224 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup labeltape

    - - - - - - - - - - - - -

    Purpose -

    Creates the magnetic label on a tape -

    Synopsis -

    backup labeltape [-name <AFS tape name, defaults to NULL>]
    -                 [-size <tape size in Kbytes, defaults to size in tapeconfig>]
    -                 [-portoffset <TC port offset>] 
    -                 [-pname <permanent tape name>] 
    -                 [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup la [-n <AFS tape name, defaults to NULL>]
    -          [-s <tape size in Kbytes, defaults to size in tapeconfig>]
    -          [-po <TC port offset>]  [-pn <permanent tape name>]
    -          [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup labeltape command creates a magnetic label, readable -by the Backup System, at the beginning of a tape. The label records the -tape's name (either a permanent name, or an AFS tape -name that reflects the tape's contents in a prescribed format) and -its capacity. -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file on the Tape -Coordinator machine associated with the specified port offset, then the -backup command writes label information to the first 16 KB block in -the backup data file listed for that port offset in the Tape -Coordinator's /usr/afs/backup/tapeconfig file, rather than at -the beginning of a tape. For the sake of clarity, the following text -refers to tapes only, but the Backup System handles backup data files in much -the same way.) -

    Relabeling a tape that already contains AFS backup data effectively makes -the data unusable, because the command removes the Backup Database record of -the complete dump set of which the tape is a part. Use this command to -enable recycling of a tape that contains unexpired dumps that are not actually -still needed. -

    To write a permanent name on the label, include the -pname -argument to specify a string of up to 32 characters. The permanent name -persists until the -pname argument is again included on the -backup labeltape command, regardless of the tape's contents -and of how often the tape is otherwise relabeled or recycled. Include -this argument or the -name argument, but not both. If this -argument is included, the AFS tape name is set to <NULL>. -The permanent name is set to <NULL> if this argument is omitted -and no permanent name already exists. -

    The issuer must ensure that a permanent name is unique among the tapes used -for AFS backup in the cell, because the backup command interpreter -does not verify that another tape does not already have the same permanent -name. When a tape has a permanent name, the Backup System uses it -instead of the AFS tape name in most prompts and when referring to the tape in -output from backup commands. The permanent name appears in -the tape name field of the output from the backup -readlabel command. -

    To write an AFS tape name on the label, provide a value for the --name argument in the required format described in the -Options section. Include the -name argument or -the -pname argument, but not both. If this argument is -omitted, the AFS tape name is set to <NULL>, but the Backup -System automatically assigns the appropriate name when the tape is used in a -future backup dump or backup savedb operation. -The AFS tape name appears in the AFS tape -name field of the output from the backup readlabel and -backup scantape commands. -

    The backup command interpreter does not accept the --name argument if the tape already has a permanent name. To -erase a tape's permanent name, provide a null value to the --pname argument by issuing the following command: -

       % backup labeltape -pname ""
    -   
    -
    -

    To record the tape's capacity on the label, specify a number of -kilobytes as the -size argument. If the argument is omitted -the first time a tape is labeled, the Backup System records the default tape -capacity recorded for the specified port offset in the -/usr/afs/backup/tapeconfig file on the Tape Coordinator -machine. Subsequently, the value in the size field persists until the --size argument is again included on the backup labeltape -command. -

    To determine how much data can be written to a tape during a backup -dump or backup savedb operation, the Tape Coordinator reads -the capacity recorded on the tape's label (or uses the value associated -with its port offset in the /usr/afs/backup/tapeconfig file, if the -tape was never labeled). For further description, see the backup -dump reference page. -

    The Tape Coordinator's default response to this command is to access -the tape by invoking the MOUNT instruction in the local -/usr/afs/backup/CFG_device_name file, or by prompting the -backup operator to insert the tape if there is no MOUNT -instruction. However, if the AUTOQUERY NO instruction -appears in the CFG_device_name file, or if the issuer of -the butc command included the -noautoquery flag, the -Tape Coordinator instead expects the tape to be in the device already. -If it is not, the Tape Coordinator invokes the MOUNT instruction or -prompts the operator. -

    Options -

    -

    -name -
    Specifies the AFS tape name to record on the label. Include this -argument or the -pname argument, but not both. If this -argument is omitted, the AFS tape name is set to <NULL>. -If this argument is provided, it must have the following format: -
       volume_set_name.dump_level_name.tape_index
    -   
    -
    -

    for the tape to be acceptable for use in a future backup dump -operation. The volume_set_name must match the volume set name -of the initial dump to be written to the tape, dump_level_name must -match the last element of the dump level pathname at which the volume set will -be dumped, and tape_index indicates the order of the tape in the dump -set (indexing begins with 1). To disable this type of name -checking, include the NAME_CHECK NO instruction in the -CFG_device_name file. -

    For the tape to be acceptable for use in a future backup savedb -operation, the value specified for the -name argument must have the -following format: -

       Ubik_db_dump.tape_index
    -   
    -
    -

    where tape_index indicates the order of the tape in the set of -tapes that house the Backup Database dump; indexing begins with 1 -(one). -

    -size -
    Specifies the tape capacity to record on the label. Provide an -integer value followed by a letter that indicates units, with no intervening -space. A unit value of k or K indicates -kilobytes, m or M indicates megabytes, and g -or G indicates gigabytes. If the units letter is omitted, -the default is kilobytes. -

    If this argument is omitted the first time a tape is labeled, the Backup -System records the capacity that is associated with the specified port offset -in the /usr/afs/backup/tapeconfig file on the Tape Coordinator -machine. The value recorded the first time then persists until the --size argument is provided on a future issuance of the -command. -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator handling the tape -for this operation. -

    -pname -
    Specifies the permanent name to record on the label. It can be up -to 32 characters in length, and include any alphanumeric characters. -Avoid metacharacters that have a special meaning to the shell, to avoid having -to mark them as literal in commands issued at the shell prompt. -

    Include this argument or the -name argument, but not -both. If this argument is provided, the AFS tape name is set to -<NULL>. If this argument is omitted, any existing -permanent name is retained. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command records the AFS tape name -user.monthly.1 on the label of the tape in the device -with port offset 3: -

       % backup labeltape -name user.monthly.1 -portoffset 3
    -   
    -
    -

    The following three commands are equivalent in effect: they all -record a capacity of 2 GB on the label of the tape in the device with port -offset 4. They set the AFS tape name to <NULL> and leave -the permanent name unchanged. -

       % backup labeltape -size 2g -portoffset 4
    -   % backup labeltape -size 2048M -portoffset 4
    -   % backup labeltape -size 2097152 -portoffset 4
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    CFG_device_name -

    backup -

    backup readlabel -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf080.htm b/doc/html/AdminReference/auarf080.htm deleted file mode 100644 index 0325d88e0..000000000 --- a/doc/html/AdminReference/auarf080.htm +++ /dev/null @@ -1,138 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup listdumps

    -

    Purpose - - - - - - - - -

    Displays the dump hierarchy from the Backup Database -

    Synopsis -

    backup listdumps  [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup listd  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup listdumps command displays the dump hierarchy from -the Backup Database. -

    Options -

    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output displays the complete dump hierarchy and indicates the -relationship between full and incremental dump levels. Full dump levels -appear at the left margin. The hierarchy can include more than one full -dump level; each one defines a subhierarchy of dump levels that can be -used for dumping different volume sets. -

    Incremental dump levels appear below and indented to the right of their -parent dump levels, which can be either full or incremental. Since -multiple incremental dump levels can share the same parent, an incremental -dump level is not always directly below its parent; the amount of -indentation indicates the parent/child relationship. -

    If a dump level has an associated expiration date, it appears along with -the level name. Absolute expiration dates appear in the format -

       dump_level expires at day month date time year    
    -   
    -
    -

    and relative expiration dates in the format -

       dump_level expires in {yearsy | monthsm | daysd}
    -   
    -
    -

    to indicate the number of years, months, days, or combination of the three -after creation a dump expires when created at this level. -

    Examples -

    The following example depicts six dump hierarchies. The expiration -date for all incremental dump levels is 13 days so that the corresponding -tapes can be recycled two weeks after their creation. The expiration -dates for all full dump levels is 27 days so that the corresponding tapes can -be recycled four weeks after their creation. -

       % backup listdumps
    -   /week1  expires in  27d
    -         /tuesday  expires in  13d
    -                 /thursday  expires in  13d
    -         /sunday  expires in  13d
    -                /tuesday expires in  13d
    -                        /thursday expires in  13d
    -   /week3  expires in  27d
    -         /tuesday  expires in  13d
    -                 /thursday  expires in  13d
    -         /sunday  expires in  13d
    -                /tuesday  expires in  13d
    -                        /thursday  expires in  13d
    -   /sunday1  expires in  27d
    -           /monday1  expires in  13d
    -           /tuesday1  expires in  13d 
    -           /wednesday1  expires in  13d
    -           /thursday1  expires in  13d
    -           /friday1  expires in  13d
    -   /sunday2  expires in  27d
    -           /monday2  expires in  13d
    -           /tuesday2  expires in  13d
    -           /wednesday2  expires in  13d
    -           /thursday2  expires in  13d
    -           /friday2  expires in  13d
    -   /sunday3  expires in  27d
    -           /monday1  expires in  13d
    -           /tuesday1  expires in  13d 
    -           /wednesday1  expires in  13d
    -           /thursday1  expires in  13d
    -           /friday1  expires in  13d
    -   /sunday4  expires in  27d
    -           /monday2  expires in  13d
    -           /tuesday2  expires in  13d
    -           /wednesday2  expires in  13d
    -           /thursday2  expires in  13d
    -           /friday2  expires in  13d
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup adddump -

    backup deldump -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf081.htm b/doc/html/AdminReference/auarf081.htm deleted file mode 100644 index a87875a23..000000000 --- a/doc/html/AdminReference/auarf081.htm +++ /dev/null @@ -1,101 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup listhosts

    -

    Purpose - - - - - - - - - -

    Lists Tape Coordinator machines registered in the Backup Database -

    Synopsis -

    backup listhosts [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup listh [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup listhosts command displays the Backup Database record -of the port offset numbers defined for Tape Coordinator machines. A -Tape Coordinator must have an entry in the list to be available for backup -operations. -

    The existence of an entry does not necessarily indicate that the Tape -Coordinator process (butc) is currently running at that port -offset. To check, issue the backup status command. -

    Options -

    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    After a Tape hosts: header, the output reports -two things about each Tape Coordinator currently defined in the Backup -Database: -

      -

    • The hostname of the machine housing the Tape Coordinator. The -format of this name depends on the hostname format used when the backup -addhost command was issued. -

    • The Tape Coordinator's port offset number. -
    -

    The Tape Coordinators appear in the order in which they were added to the -Backup Database. -

    Examples -

    The following example shows the result of the command in the ABC -Corporation cell: -

       % backup listhosts
    -   Tape hosts:
    -       Host backup1.abc.com, port offset 0
    -       Host backup1.abc.com, port offset 1
    -       Host backup3.abc.com, port offset 4
    -       Host backup2.abc.com, port offset 3
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addhost -

    backup delhost -

    backup status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf082.htm b/doc/html/AdminReference/auarf082.htm deleted file mode 100644 index 37eec26eb..000000000 --- a/doc/html/AdminReference/auarf082.htm +++ /dev/null @@ -1,103 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup listvolsets

    - - - - - - -

    Purpose -

    Lists volume set entries from the Backup Database -

    Synopsis -

    backup listvolsets [-name <volume set name>]
    -                   [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup listv [-n <volume set name>]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup listvolsets command displays the Backup Database -records for either -

      -

    • All volume sets and their volume entries, if the -name argument -is omitted -

    • The volume set specified by the -name argument, along with its -volume entries -
    -

    Options -

    -

    -name -
    Names the volume set to display. If this argument is omitted, the -output lists all volume sets defined in the Backup Database. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The entry for each volume set begins with the Volume set header -and the volume set's name. A temporary volume set's name is -followed by the string (temporary). Each volume entry -follows on a separate line, indicating the entry's index number and the -server, partition, and volume names it matches. The output uses the -metacharacter notation described on the backup addvolentry -reference page. Use the index number to identify volume entries when -deleting them with the backup delvolentry command. -

    Examples -

    The following example shows the volume entries in the three volume sets -currently defined in the Backup Database: -

       % backup listvolsets
    -   Volume set user:
    -       Entry   1: server .*, partition .*, volumes: user.*\.backup
    -   Volume set sun
    -       Entry   1: server .*, partition .*, volumes: sun4x_55\..*
    -       Entry   2: server .*, partition .*, volumes: sun4x_56\..*
    -   Volume set rs
    -       Entry   1: server .*, partition .*, volumes: rs_aix42\..*
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup addvolentry -

    backup addvolset -

    backup delvolentry -

    backup delvolset -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf083.htm b/doc/html/AdminReference/auarf083.htm deleted file mode 100644 index d2d710a30..000000000 --- a/doc/html/AdminReference/auarf083.htm +++ /dev/null @@ -1,83 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup quit

    - - - - - - -

    Purpose -

    Leaves interactive mode -

    Synopsis -

    quit  [-help]
    -  
    -q [-h]
    -   
    -
    -

    Description -

    The (backup) quit command exits interactive mode, returning the -issuer to the regular shell prompt at which the backup or -backup interactive command was issued to enter interactive -mode. The command has no effect when issued outside interactive -mode. Issuing the <Ctrl-d> command also exits interactive -mode. -

    Cautions -

    To exit interactive mode, all jobs must be completed. Use the -(backup) jobs command to list any jobs currently pending or -executing, and the (backup) kill command to terminate them as -necessary. -

    Options -

    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command exits interactive mode: -

       backup> quit
    -   %
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    backup -

    backup interactive -

    backup jobs -

    backup kill -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf084.htm b/doc/html/AdminReference/auarf084.htm deleted file mode 100644 index 22ab1a90e..000000000 --- a/doc/html/AdminReference/auarf084.htm +++ /dev/null @@ -1,216 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup readlabel

    - - - - - - - - -

    Purpose -

    Reads and displays a tape's label -

    Synopsis -

    backup readlabel [-portoffset <TC port offset>]
    -                 [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup rea [-p <TC port offset>]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup readlabel command displays information from the -magnetic tape label of a tape. The information includes the tape's -name (either a permanent name, or an AFS tape name that -reflects the tape's contents in a prescribed format) and its -capacity. -

    If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file associated with the -specified port offset, then the backup readlabel command reads the -label information from the first 16 KB block in the backup data file listed -for that port offset in the Tape Coordinator's -/usr/afs/backup/tapeconfig file, rather than from the beginning of -a tape. -

    The Tape Coordinator's default response to this command is to access -the tape by invoking the MOUNT instruction in the local -/usr/afs/backup/CFG_device_name file, or by prompting the -backup operator to insert the tape if there is no MOUNT -instruction. However, if the AUTOQUERY NO instruction -appears in the CFG_device_name file, or if the issuer of -the butc command included the -noautoquery flag, the -Tape Coordinator instead expects the tape to be in the device already. -If it is not, the Tape Coordinator invokes the MOUNT instruction or -prompts the operator. -

    Options -

    -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator handling the -tapes for this operation. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    Output from this command appears in both the shell window where the command -is issued, and in the Tape Coordinator window. -

    If the tape is unlabeled or if the specified tape device is empty, the -output reads -

       Failed to read tape label.
    -   
    -
    -

    Otherwise, the output in the shell window has the following format: -

       Tape read was labelled: tape name (dump id)
    -        size: size Kbytes
    -    
    -
    -

    where tape name is the permanent name if the tape has one, or the -AFS tape name otherwise. The dump ID is dump ID of the initial -dump on the tape, and size is the recorded capacity of the tape in -kilobytes. -

    The output in the Tape Coordinator windows is bounded by an underlined -Tape label header at the top, and the following string -at the bottom: -

       -- End of tape label --
    -   
    -
    -

    In between are lines reporting the following information: -

    -

    tape name -
    The permanent name assigned by using the -pname argument of the -backup labeltape command. This name remains on the tape -until that argument is used again, no matter how many times the tape is -recycled or otherwise relabeled. If the tape does not have a permanent -name, the value <NULL> appears in this field. -

    AFS tape name -
    A tape name in one of the following prescribed formats. The Backup -System automatically writes the appropriate AFS tape name to the label as part -of a backup dump or backup savedb operation, or the -operator can assign it with the -name argument to the backup -labeltape command. -
      -

    • volume_set_name.dump_level_name.tape_index, -if the tape contains volume data. The volume_set_name is the -name of the volume set that was dumped to create the initial dump in the dump -set of to which this tape belongs; dump_level_name is the last -pathname element of the dump level at which the initial dump was backed -up; and tape_index is the numerical position of the tape in the -dump set. -

    • Ubik.db.dump.tape_index if the -tape contains a dump of the Backup Database, created with the backup -savedb command. The tape_index is the ordinal of the -tape in the dump set. -

    • <NULL> if the tape has no AFS tape name. This is -normally the case if the -name argument was not included the last -time the backup labeltape command was used on this tape, and no -data has been written to it since. -
    -

    creationTime -
    The date and time at which the Backup System started performing the dump -operation that created the initial dump. -

    cell -
    The cell in which the dump set was created. This is the cell whose -Backup Database contains a record of the dump set. -

    size -
    The tape's capacity (in kilobytes) as recorded on the label, rather -than the amount of data on the tape. The value is assigned by the --size argument to the backup labeltape command or -derived from the /usr/afs/backup/tapeconfig file on the Tape -Coordinator machine, not from a measurement of the tape. -

    dump path -
    The dump level of the initial dump in the dump set -

    dump id -
    The dump ID number of the initial dump in the dump set, as recorded in the -Backup Database -

    useCount -
    The number of times a dump has been written to the tape, or it has been -relabeled -
    -

    The message ReadLabel: Finished indicates the completion -of the output. -

    Examples -

    The following example shows the output for the tape with permanent name -oct.guest.dump and capacity 2 MB, expressed in -kilobyte units (2097152 equals 2 times 10242). -

       % backup readlabel -portoffset 6
    -   Tape read was labelled: oct.guest.dump (907215000)
    -        size: 2097152 Kbytes
    -   
    -
    -

    The output in the Tape Coordinator window reads: -

       Tape label
    -   ----------
    -   tape name = oct.guest.dump
    -   AFS tape name = guests.monthly.3
    -   creationTime = Thu Oct 1 00:10:00 1998
    -   cell = abc.com
    -   size = 2097152 Kbytes
    -   dump path = /monthly
    -   dump id = 907215000
    -   useCount = 5
    -   ---- End of tape label ----
    -   
    -
    -

    The following example is for a tape that does not have a permanent -tape. -

       % backup readlabel -portoffset 6
    -   Tape read was labelled: guests.monthly.2 (909899900)
    -        size: 2097152 Kbytes
    -   
    -
    -

    The output in the Tape Coordinator window reads: -

       Tape label
    -   ----------
    -   tape name = <NULL>
    -   AFS tape name = guests.monthly.2
    -   creationTime = Sun Nov 1 00:58:20 1998
    -   cell = abc.com
    -   size = 2097152 Kbytes
    -   dump path = /monthly
    -   dump id = 909899900
    -   useCount = 1
    -   ---- End of tape label ----
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup labeltape -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf085.htm b/doc/html/AdminReference/auarf085.htm deleted file mode 100644 index 2902fb1c2..000000000 --- a/doc/html/AdminReference/auarf085.htm +++ /dev/null @@ -1,117 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup restoredb

    - - - -

    Purpose -

    Restores a saved copy of the Backup Database -

    Synopsis -

    backup restoredb [-portoffset <TC port offset>]
    -                 [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup res [-p <TC port offset>]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup restoredb command restores to the Backup Server -machine's local disk a version of the Backup Database previously written -to tape by using the backup savedb command. -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file associated with the -specified port offset, then the backup restoredb command restores -data from the backup data file listed for that port offset in the Tape -Coordinator's /usr/afs/backup/tapeconfig file, instead of from -tape. For the sake of clarity, the following text refers to tapes only, -but the Backup System handles backup data files in much the same way.) -

    The most common reason to run this command is to replace a corrupted or -otherwise damaged Backup Database; use the backup dbverify -command to determine the database's status. The command can also -be used to restore records that were removed from the database when the --archive argument was included on a previous backup -savedb command. -

    The command completely overwrites the existing Backup Database records for -volume sets, Tape Coordinators, and the dump hierarchy with the corresponding -information from the saved version. It does not overwrite existing dump -records, but instead interleaves the records from the copy being -restored. If both the existing database (on the Backup Server -machine's disk) and the copy being restored include a record about the -same dump, the Backup System retains the one in the existing database. -

    The Tape Coordinator's default response to this command is to access -the first tape it needs by invoking the MOUNT instruction in the -local /usr/afs/backup/CFG_device_name file, or by -prompting the backup operator to insert the tape if there is no -MOUNT instruction. However, if the AUTOQUERY NO -instruction appears in the CFG_device_name file, or if the -issuer of the butc command included the -noautoquery -flag, the Tape Coordinator instead expects the tape to be in the device -already. If it is not, or is the wrong tape, the Tape Coordinator -invokes the MOUNT instruction or prompts the operator. It -also invokes the MOUNT instruction or prompts for any additional -tapes needed to complete the restore operation; the backup operator must -arrange to provide them. -

    Cautions -

    If the database is corrupted, do not attempt to restore a saved database on -top of it. Instead, use the instructions for repairing a corrupted -database in the IBM AFS Administration Guide chapter about -performing backup operations. -

    Options -

    -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator handling the -tapes for this operation. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example shows the Backup Database being restored from the -Tape Coordinator with port offset 0: -

       % backup restoredb
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup dbverify -

    backup savedb -

    butc -

    IBM AFS Administration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf086.htm b/doc/html/AdminReference/auarf086.htm deleted file mode 100644 index bf69d18f4..000000000 --- a/doc/html/AdminReference/auarf086.htm +++ /dev/null @@ -1,151 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup savedb

    - - - -

    Purpose -

    Creates a saved copy of the Backup Database -

    Synopsis -

    backup savedb [-portoffset <TC port offset>]  [-archive <date time>+]
    -              [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup sa  [-p <TC port offset>]  [-a <date time>+]
    -           [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup savedb command creates a backup copy of the entire -Backup Database and writes it to the tape in the device controlled by the Tape -Coordinator indicated with the -portoffset argument. If the -database is damaged (as reported by the backup dbverify command), -this command repairs as much of the corruption as possible as it creates the -saved copy. The Backup Server creates a dump record for the saved -database in the Backup Database (but in the disk version of the database only, -not in the version written to tape). -

    If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file associated with the -specified port offset, then the backup savedb command dumps the -database copy to the backup data file listed for that port offset in the Tape -Coordinator's /usr/afs/backup/tapeconfig file, instead of to -tape. For the sake of clarity, the following text refers to tapes only, -but the Backup System handles backup data files in much the same way. -

    If the -archive flag is provided, after writing the saved copy -of the database the Backup System truncates the copy of the database on disk -by deleting volume dump records with timestamps prior to the specified date -and time (it does not delete the dump records created by previous backup -savedb commands, however). -

    If the tape to which the database copy is written has an AFS tape name, it -must be Ubik_db_dump.1 or <NULL>. Any -permanent name is acceptable. -

    The Tape Coordinator's default response to this command is to access -the first tape by invoking the MOUNT instruction in the local -/usr/afs/backup/CFG_device_name file, or by prompting the -backup operator to insert the tape if there is no MOUNT -instruction. However, if the AUTOQUERY NO instruction -appears in the CFG_device_name file, or if the issuer of -the butc command included the -noautoquery flag, the -Tape Coordinator instead expects the tape to be in the device already. -If it is not, the Tape Coordinator invokes the MOUNT instruction or -prompts the operator. It also invokes the MOUNT instruction -or prompts for any additional tapes needed to complete the operation; the -backup operator must arrange to provide them. -

    Options -

    -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator handling the -tapes for this operation. -

    -archive -
    Specifies a date and time; volume dump records with earlier -timestamps are deleted from the disk copy of the Backup Database after the -Backup System dumps the database (a dump's timestamp appears in the -created field of the output from the backup dumpinfo -command). However, if a dump set contains any dump created after the -specified date, none of the dump records associated with the dump set are -deleted. Dump records for previous dumps of the database (created with -the backup savedb command) are never deleted; use the -backup deletedump command to remove them. -

    Provide one of two values: -

      -

    • The string NOW to indicate the current date and time, in which -case the Backup System deletes all dump records except those for dumps of the -Backup Database itself. -

    • A date value in the format mm/dd/yyyy -[hh:MM]. The month (mm), day (dd), and -year (yyyy) are required, and valid values for the year range from -1970 to 2037; higher values are not valid because -the latest possible date in the standard UNIX representation is in February -2038. The Backup System automatically reduces any later date to the -maximum value. -

      The hour and minutes (hh:MM) are optional, but if -provided must be in 24-hour format (for example, the value -14:36 represents 2:36 p.m.). If -omitted, the time defaults to 59 seconds after midnight (00:00:59 -hours). Similarly, the backup command interpreter -automatically adds 59 seconds to any time value provided. In both -cases, adding 59 seconds compensates for how the Backup Database and -backup dumpinfo command represent dump creation times in hours and -minutes only. That is, the Database records a creation timestamp of -20:55 for any dump created between 20:55:00 and -20:55:59. Automatically adding 59 seconds to a time thus -includes the records for all dumps created during that minute. -

    -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition. -
    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example writes a copy of the Backup Database to the tape -device controlled by the Tape Coordinator with port offset 1: -

       % backup savedb -portoffset 1
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup dbverify -

    backup restoredb -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf087.htm b/doc/html/AdminReference/auarf087.htm deleted file mode 100644 index 488be6714..000000000 --- a/doc/html/AdminReference/auarf087.htm +++ /dev/null @@ -1,292 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup scantape

    - - - - - - -

    Purpose -

    Extracts dump information from a tape -

    Synopsis -

    backup scantape [-dbadd]  [-portoffset <TC port offset>]
    -                [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup sc [-d]  [-p <TC port offset>]  [-l]  [-c <cell name>]  [-help]
    -
    -

    Description -

    The backup scantape command extracts information from the dump -labels and volume headers on the tape in the device controlled by the Tape -Coordinator indicated by the -portoffset argument. The Tape -Coordinator displays the information for each volume in its window as soon as -it extracts it (rather than waiting until it has scanned the entire -tape). -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file associated with the -specified port offset, then the backup scantape command extracts -dump information from the backup data file named in that port offset's -entry in the /usr/afs/backup/tapeconfig file on the Tape -Coordinator machine, rather than from a tape. For the sake of clarity, -the following text refers to tapes only, but the Backup System handles backup -data files in much the same way.) -

    If the -dbadd flag is provided, the backup scantape -command creates new dump and volume records in the Backup Database for the -scanned information. However, if it finds that a record already exists -in the database for the same dump, it terminates the scanning -operation. -

    The scanning operation works only on tapes containing volume data. -The command fails with an error message if the tape contains a copy of the -Backup Database (was created with the backup savedb command, or has -the AFS tape name Ubik_db_dump.1). -

    The Tape Coordinator's default response to this command is to access -the tape by invoking the MOUNT instruction in the -CFG_device_name file, or by prompting the backup operator -to insert the tape if there is no MOUNT instruction. -However, if the AUTOQUERY NO instruction appears in the -CFG_device_name file, or if the issuer of the -butc command included the -noautoquery flag, the Tape -Coordinator instead expects the tape to be in the device already. If it -is not, the Tape Coordinator invokes the MOUNT instruction or -prompts the operator. -

    To terminate a tape scanning operation in interactive mode, issue the -(backup) kill command. In noninteractive mode, the only -choice is to use a termination signal such as <Ctrl-c> to halt -the Tape Coordinator completely. -

    Cautions -

    A scanning operation does not have to begin with the first tape in a dump -set, but the Backup System can process tapes only in sequential order after -the initial tape provided. The Tape Coordinator automatically requests -any subsequent tapes by invoking the MOUNT instruction in the local -/usr/afs/backup/CFG_device_name file, or by prompting the -operator if there is no MOUNT instruction. -

    The Tape Coordinator's success in scanning a tape that is corrupted or -damaged depends on the extent of the damage and what type of data is -corrupted. It can almost always scan the tape successfully up to the -point of damage. If the damage is minor, the Tape Coordinator can -usually skip over it and scan the rest of the tape, but more major damage can -prevent further scanning. Because a scanning operation can start on any -tape in a dump set, damage on one tape does not prevent scanning of the others -in the dump set. However, it is possible to scan either the tapes that -precede the damaged one or the ones that follow it, but not both. -

    If a tape is relabeled with the backup labeltape command, it is -not possible to recover data from it for the purposes of rebuilding the Backup -Database. -

    If the -dbadd flag is included on the command, it is best not to -terminate the tape scanning operation before it completes (for example, by -issuing the (backup) kill command in interactive mode). The -Backup System writes a new record in the Backup Database for each dump as soon -as it scans the relevant information on the tape, and so it possibly has -already written new records. If the operator wants to rerun the -scanning operation, he or she must locate and remove the records created -during the terminated operation: the second operation exits -automatically if it finds that a record that it needs to create already -exists. -

    If the -dbadd flag is included and the first tape provided is -not the first tape in the dump set, the following restrictions apply: -

      -

    • If the first data on the tape is a continuation of a volume that begins on -the previous (unscanned) tape in the dump set, the Backup System does not add -a record for that volume to the Backup Database. -

    • The Backup System must read the marker that indicates the start of an -appended dump to add database records for the volumes in it. If the -first volume on the tape belongs to an appended dump, but is not immediately -preceded by the appended-dump marker, the Backup System does not create a -Backup Database record for it or any subsequent volumes that belong to that -appended dump. -
    -

    Options -

    -

    -dbadd -
    Adds the information extracted from the tape to the Backup Database (but -only if the database does not already contain an entry with the same dump ID -number). -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator handling the -tapes for this operation. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    For every dump on a tape, the backup scantape command displays -in the Tape Coordinator window the dump label and the volume header of each -volume in the dump. If a dump spans more than one tape, the dump label -does not repeat at the beginning of subsequent tapes. -

    A dump label contains the following fields, which are the same as in the -output from the backup readlabel command: -

    -

    tape name -
    The permanent name assigned by using the -pname argument of the -backup labeltape command. This name remains on the tape -until that argument is used again, no matter how many times the tape is -recycled or otherwise relabeled. If the tape does not have a permanent -name, the value <NULL> appears in this field. -

    AFS tape name -
    A tape name in one of the following prescribed formats. The Backup -System automatically writes the appropriate AFS tape name to the label as part -of a backup dump operation, or the operator can assign it with the --name argument to the backup labeltape command. -
      -

    • volume_set_name.dump_level_name.tape -_index, if the tape contains volume data. The -volume_set_name is the name of the volume set that was dumped to -create the initial dump in the dump set of which this tape is a part; -dump_level_name is the last pathname element of the dump level at -which the initial dump was backed up; and tape_index is the -numerical position of the tape in the dump set. -

    • <NULL> if the tape has no AFS tape name. This is -normally the case if the -name argument was not included the last -time the backup labeltape command was used on this tape, and no -data has been written to it since. -
    -

    creationTime -
    The date and time at which the Backup System started performing the dump -operation that created the initial dump. -

    cell -
    The cell in which the dump set was created. This is the cell whose -Backup Database contains a record of the dump set. -

    size -
    The tape's capacity (in kilobytes) as recorded on the label, rather -than the amount of data on the tape. The value is assigned by the --size argument to the backup labeltape command or -derived from the /usr/afs/backup/tapeconfig file on the Tape -Coordinator machine, not from a measurement of the tape. -

    dump path -
    The dump level of the initial dump in the dump set. -

    dump id -
    The dump ID number of the initial dump in the dump set, as recorded in the -Backup Database. -

    useCount -
    The number of times a dump has been written to the tape, or it has been -relabeled. -
    -

    The volume header contains the following fields: -

    -

    volume name -
    The volume name, complete with a .backup or -.readonly extension, if appropriate. -

    volume ID -
    The volume's volume ID. -

    dumpSetName -
    The dump to which the volume belongs. The dump name is of the form -volume_set_name.dump_level_name and -matches the name displayed in the dump label. -

    dumpID -
    The dump ID of the dump named in the dumpSetName field. -

    level -
    The depth in the dump hierarchy of the dump level used in creating the -dump. A value of 0 indicates a full dump. A value of -1 or greater indicates an incremental dump made at the indicated -depth in the hierarchy. The value reported is for the entire dump, not -necessarily for the volume itself; for example, it is possible for a dump -performed at an incremental level to include a full dump of an individual -volume if the volume was omitted from previous dumps. -

    parentID -
    The dump ID number of dumpSetName's parent dump. It -is 0 if the value in the level field is -0. -

    endTime -
    Is always 0; it is reserved for internal use. -

    cloneDate -
    The date and time at which the volume was created. For a backup or -read-only volume, this represents the time at which it was cloned from its -read/write source. For a read/write volume, it indicates the time at -which the Backup System locked the volume for purposes of including it in the -dump named in the dumpSetName field. -
    -

    The message Scantape: Finished indicates the completion of -the output. -

    In normal circumstances, the Backup System writes a marker to indicate that -a volume is the last one on a tape, or that the volume continues on the next -tape. However, if a backup operation terminated abnormally (for -example, because the operator terminated the Tape Coordinator by issuing the -<Ctrl-c> command during the operation), then there is no such -marker. Some very early versions of the Backup System also did not -write these markers. If a tape does not conclude with one of the -expected markers, the Tape Coordinator cannot determine if there is a -subsequent tape in the dump set and so generates the following message in its -window: -

       Are there more tapes? (y/n)
    -   
    -
    -

    Examples -

    The following example shows the output for the first two volumes on a tape -in the device with port offset 0: -

       % backup scantape
    -   Dump label
    -   ----------
    -   tape name = monthly_guest
    -   AFS tape name = guests.monthly.3
    -   creationTime =  Mon Feb  1 04:06:40 1999
    -   cell = abc.com
    -   size = 2150000 Kbytes
    -   dump path = /monthly
    -   dump id = 917860000
    -   useCount = 44
    -   -- End of dump label --
    -   -- volume --
    -   volume name: user.guest10.backup
    -   volume ID 1937573829
    -   dumpSetName: guests.monthly
    -   dumpID 917860000
    -   level 0
    -   parentID 0
    -   endTime 0
    -   clonedate Mon Feb  1 03:03:23 1999
    -   -- volume --
    -   volume name: user.guest11.backup
    -   volume ID 1938519386
    -   dumpSetName: guests.monthly
    -   dumpID 917860000
    -   level 0
    -   parentID 0
    -   endTime 0
    -   clonedate Mon Feb  1 03:05:15 1999
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup dump -

    backup dumpinfo -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf088.htm b/doc/html/AdminReference/auarf088.htm deleted file mode 100644 index a4d79ef63..000000000 --- a/doc/html/AdminReference/auarf088.htm +++ /dev/null @@ -1,160 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup setexp

    - - - - - - -

    Purpose -

    Sets the expiration date for existing dump levels. -

    Synopsis -

    backup setexp -dump <dump level name>+  [-expires <expiration date>+]
    -              [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup se -d <dump level name>+  [-e <expiration date>+]
    -          [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup setexp command sets or changes the expiration date -associated with each specified dump level, which must already exist in the -dump hierarchy. -

    Use the -expires argument to associate an expiration date with -each dump level. When the Backup System subsequently creates a dump at -the dump level, it uses the specified value to derive the dump's -expiration date, which it records on the label of the tape (or backup data -file). The Backup System refuses to overwrite a tape until after the -latest expiration date of any dump that the tape contains, unless the -backup labeltape command is used to relabel the tape. If a -dump level does not have an expiration date, the Backup System treats dumps -created at the level as expired as soon as it creates them. -

    (Note that the Backup System does not automatically remove a dump's -record from the Backup Database when the dump reaches its expiration date, but -only if the tape that contains the dump is recycled or relabeled. To -remove expired and other obsolete dump records, use the backup -deletedump command.) -

    Define either an absolute or relative expiration date: -

      -

    • An absolute expiration date defines the month/day/year (and, optionally, -hour and minutes) at which a dump expires. If the expiration date -predates the dump creation time, the Backup System immediately treats the dump -as expired. -

    • A relative date defines the number of years, months, or days (or a -combination of the three) after the dump's creation that it -expires. When the Backup System creates a dump at the dump level, it -calculates an actual expiration date by adding the relative date to the start -time of the dump operation. -
    -

    If the command is used to change an existing expiration date associated -with a dump level, the new date applies only to dumps created after the -change. Existing dumps retain the expiration date assigned at the time -they were created. -

    Options -

    -

    -dump -
    Specifies the full pathname of each dump level to assign the expiration -date specified by the -expires argument. -

    -expires -
    Defines the absolute or relative expiration date to associate with each -dump level named by the -dump argument. Absolute expiration -dates have the following format: -

    -

       [at] {NEVER | mm/dd/yyyy [hh:MM] }
    -   
    -
    -

    where the optional word at is followed either by the string -NEVER, which indicates that dumps created at the dump level never -expire, or by a date value with a required portion (mm for month, -dd for day, and yyyy for year) and an optional portion -(hh for hours and MM for minutes). -

    Omit the hh:MM portion to use the default of -midnight (00:00 hours), or provide a value in 24-hour format (for -example, 20:30 is 8:30 p.m.). -Valid values for the year range from 1970 to 2037; -higher values are not valid because the latest possible date in the standard -UNIX representation is in February 2038. The command interpreter -automatically reduces later dates to the maximum value. -

    Relative expiration dates have the following format: -

       [in] [yearsy] [monthsm] [daysd]
    -   
    -
    -

    -

    where the optional word in is followed by at least one of a -number of years (maximum 9999) followed by the letter y, -a number of months (maximum 12) followed by the letter -m, or a number of days (maximum 31) followed by the -letter d. If providing more than one of the three, list them -in the indicated order. If the date that results from adding the -relative expiration value to a dump's creation time is later than the -latest possible date in the UNIX time representation, the Backup System -automatically reduces it to that date. -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition to be -associated with each dump level specified by the -dump -argument. -
    -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example associates an absolute expiration date of 10:00 -p.m. on 31 December 1999 with the dump level -/1998/december: -

       % backup setexp -dump /1998/december -expires at 12/31/1999 22:00
    -   
    -
    -

    The following example associates a relative expiration date of 7 days with -the two dump levels /monthly/week1 and -/monthly/week2: -

       % backup setexp -dump /monthly/week1 /monthly/week -expires 7d
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    backup adddump -

    backup deldump -

    backup listdumps -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf089.htm b/doc/html/AdminReference/auarf089.htm deleted file mode 100644 index 4b26ce65a..000000000 --- a/doc/html/AdminReference/auarf089.htm +++ /dev/null @@ -1,145 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup status

    - - - - -

    Purpose -

    Reports a Tape Coordinator's status -

    Synopsis -

    backup status [-portoffset <TC port offset>]
    -              [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup st [-p <TC port offset>]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup status command displays which operation, if any, the -indicated Tape Coordinator is currently executing. -

    Options -

    -

    -portoffset -
    Specifies the port offset number of the Tape Coordinator for which to -report the status. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The following message indicates that the Tape Coordinator is not currently -performing an operation: -

       Tape coordinator is idle
    -
    -

    Otherwise, the output includes a message of the following format for each -running or pending operation: -

       Task task_ID:  operation:   status
    -
    -

    where -

    -

    task_ID -
    Is a task identification number assigned by the Tape Coordinator. -It begins with the Tape Coordinator's port offset number. -

    operation -
    Identifies the operation the Tape Coordinator is performing, which is -initiated by the indicated command: -
      -

    • Dump (the backup dump command) -

    • Restore (the backup diskrestore, backup -volrestore, or backup volsetrestore commands) -

    • Labeltape (the backup labeltape command) -

    • Scantape (the backup scantape command) -

    • SaveDb (the backup savedb command) -

    • RestoreDb (the backup restoredb command) -
    -

    status -
    Indicates the job's current status in one of the following -messages. -
    -

    number Kbytes transferred, volume volume_name -
    For a running dump operation, indicates the number of kilobytes copied to -tape or a backup data file so far, and the volume currently being -dumped. -

    number Kbytes, restore.volume -
    For a running restore operation, indicates the number of kilobytes copied -into AFS from a tape or a backup data file so far. -

    [abort requested] -
    The (backup) kill command was issued, but the termination -signal has yet to reach the Tape Coordinator. -

    [abort sent] -
    The operation is canceled by the (backup) kill command. -Once the Backup System removes an operation from the queue or stops it from -running, it no longer appears at all in the output from the command. -

    [butc contact lost] -
    The backup command interpreter cannot reach the Tape -Coordinator. The message can mean either that the Tape Coordinator -handling the operation was terminated or failed while the operation was -running, or that the connection to the Tape Coordinator timed out. -

    [done] -
    The Tape Coordinator has finished the operation. -

    [drive wait] -
    The operation is waiting for the specified tape drive to become -free. -

    [operator wait] -
    The Tape Coordinator is waiting for the backup operator to insert a tape -in the drive. -
    -
    -

    If the Tape Coordinator is communicating with an XBSA server (a third-party -backup utility that implements the Open Group's Backup Service API -[XBSA]), the following message appears last in the output: -

       XBSA_program Tape coordinator
    -
    -

    where XBSA_program is the name of the XBSA-compliant -program. -

    Examples -

    The following example shows that the Tape Coordinator with port offset 4 -has so far dumped about 1.5 MB of data for the current dump operation, -and is currently dumping the volume named -user.pat.backup: -

       % backup status -portoffset 4
    -   Task 4001:  Dump:   1520 Kbytes transferred,  volume user.pat.backup
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server is running, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    backup -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf090.htm b/doc/html/AdminReference/auarf090.htm deleted file mode 100644 index 1185524f7..000000000 --- a/doc/html/AdminReference/auarf090.htm +++ /dev/null @@ -1,121 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup volinfo

    - - - - - - -

    Purpose -

    Displays a volume's dump history from the Backup Database -

    Synopsis -

    backup volinfo -volume <volume name>
    -               [-localauth]  [-cell <cell name>]  [-help]
    -  
    -backup voli -v <volume name>  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup volinfo command displays a dump history of the -specified volume, reporting information such as the date on which the volume -was dumped and the tapes that contain it. Include the -.backup extension on the volume name if the backup version -of the volume was dumped. -

    Options -

    -

    -volume -
    Names the volume for which to display the dump history. Include -the .backup or .readonly extension if the -backup or read-only version of the volume was dumped. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes a line for each Backup Database dump record that -mentions the specified volume, order from most to least recent. The -output for each record appears in a table with six columns: -

    -

    dumpID -
    The dump ID of the dump that includes the volume. -

    lvl -
    The depth in the dump hierarchy of the dump level at which the volume was -dumped. A value of 0 indicates a full dump. A value -of 1 or greater indicates an incremental dump made at the specified -depth in the dump hierarchy. -

    parentid -
    The dump ID of the dump's parent dump. A value of 0 -indicates a full dump, which has no parent; in this case, the value in -the lvl column is also 0. -

    creation date -
    The date and time at which the Backup System started the dump operation -that created the dump. -

    clone date -
    For a backup or read-only volume, the time at which it was cloned from its -read/write source. For a read/write volume, the same as the value in -the creation date field. -

    tape name -
    The name of the tape containing the dump: either the permanent tape -name, or an AFS tape name in the format -volume_set_name.dump_level_name.tape_index -where volume_set_name is the name of the volume set associated with -the initial dump in the dump set of which this tape is a part; -dump_level_name is the name of the dump level at which the initial -dump was backed up; tape_index is the ordinal of the tape in -the dump set. Either type of name can be followed by a dump ID in -parentheses; if it appears, it is the dump ID of the initial dump in the -dump set to which this appended dump belongs. -
    -

    Examples -

    The following example shows part of the dump history of the Backup volume -user.smith.backup: -

       % backup volinfo -volume user.smith.backup
    -   DumpID    lvl parentID  creation date    clone date       tape name
    -   924600000 1   924427600 04/20/1999 05:20 04/20/1999 05:01 user_incr_2 (924514392)
    -   924514392 1   924427600 04/19/1999 05:33 04/19/1999 05:08 user_incr_2 
    -   924427600 0           0 04/18/1999 05:26 04/18/1999 04:58 user_full_6 
    -       .     .      .         .       .       .      .         .
    -       .     .      .         .       .       .      .         .
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    backup -

    backup dumpinfo -

    backup volrestore -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf091.htm b/doc/html/AdminReference/auarf091.htm deleted file mode 100644 index 7451a1f84..000000000 --- a/doc/html/AdminReference/auarf091.htm +++ /dev/null @@ -1,290 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup volrestore

    - - - - - - -

    Purpose -

    Restores one or more volumes -

    Synopsis -

    backup volrestore -server <destination machine>
    -                  -partition <destination partition>
    -                  -volume <volume(s) to restore>+  
    -                  [-extension <new volume name extension>]
    -                  [-date <date from which to restore>+]
    -                  [-portoffset <TC port offsets>+]  [-n]
    -                  [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup volr -s <destination machine>  -pa <destination partition>
    -            -v <volume(s) to restore>+  [-e <new volume name extension>]
    -            [-d <date from which to restore>+]  [-po <TC port offsets>+]
    -            [-n]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup volrestore command restores the contents of one or -more volumes to the site indicated by the -server and --partition arguments. Use the command either to overwrite -the contents of existing volumes with the restored data or to create new -volumes while retaining the existing ones. The specified site does not -have to be the current site for the volumes. -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file associated with the -specified port offset, then the backup volrestore command restores -data from the backup data file listed for that port offset in the Tape -Coordinator's /usr/afs/backup/tapeconfig file, rather than -from tape. For the sake of clarity, the following text refers to tapes -only, but the Backup System handles backup data files in much the same -way.) -

    The command's arguments can be combined as indicated: -

      -

    • To preserve a volume's current contents and also create a new volume -to house the restored version, use the -extension argument. -The Backup System creates the new volume on the server and partition named by -the -server and -partition arguments, assigns it the -same name as the current volume with the addition of the specified extension, -and creates a new Volume Location Database (VLDB) entry for it. -Creating a new volume enables the administrator to compare the two -versions. -

    • To overwrite a volume's existing contents with the restored version, -omit the -extension argument, and specify the site as -indicated: -
        -

      • To retain the current site, specify it with the -server and --partition arguments. -

      • To move the volume to a different site while overwriting it, specify the -new site with the -server argument, -partition argument, -or both. The Backup System creates a new volume at that site, removes -the existing volume, and updates the site information in the volume's -VLDB entry. The backup version of the volume is not removed -automatically from the original site, if it exists. Use the vos -remove command to remove it and the vos backup command to -create a backup version at the new site. -
      -

    • To restore a volume that no longer exists in the file system, specify its -name with the -volume argument and use the -server and --partition arguments to place it at the desired site. The -Backup System creates a new volume and new VLDB entry. -
    -

    In each case, the command sets each volume's creation date to the date -and time at which it restores it. The creation date appears in the -Creation field in the output from the vos examine and -vos listvol commands. -

    If restoring all of the volumes that resided on a single partition, it is -usually more efficient to use the backup diskrestore -command. If restoring multiple volumes to many different sites, it can -be more efficient to use the backup volsetrestore command. -

    By default, the backup volrestore command restores the most -recent full dump and all subsequent incremental dumps for each volume, -bringing the restored volumes to the most current possible state. To -restore the volumes to their state at some time in the past, use the --date argument. The Backup System restores the most recent -full dump and each subsequent incremental dump for which the clone -date of the volume included in the dump is before the indicated date and -time (the clone date timestamp appears in the clone date field of -the output from the backup volinfo command). For backup and -read-only volumes, the clone date represents the time at which the volume was -copied from its read/write source; for read/write volumes, it represents -the time at which the volume was locked for inclusion in the dump. The -resemblance of a restored volume to its actual state at the indicated time -depends on the amount of time that elapsed between the volume's clone -date in the last eligible dump and the specified time. -

    If the -volume argument specifies the base (read/write) form of -the volume name, the Backup System searches the Backup Database for the newest -dump set that includes a dump of either the read/write or the backup version -of the volume. It restores the dumps of that version of the volume, -starting with the most recent full dump. If, in contrast, the volume -name explicitly includes the .backup or -.readonly extension, the Backup System restores dumps of the -corresponding volume version only. -

    To generate a list of the tapes the Backup System needs to perform the -restore operation, without actually performing it, combine the -n -flag with the options to be used on the actual command. -

    If all of the full and incremental dumps of all relevant volumes were not -written to a type of tape that a single Tape Coordinator can read, use the --portoffset argument to list multiple port offset numbers in the -order in which the tapes are needed (first list the port offset for the full -dump, second the port offset for the level 1 incremental dump, and so -on). If restoring multiple volumes, the same ordered list of port -offsets must apply to all of them. If not, either issue this command -separately for each volume, or use the vos volsetrestore command -after defining groups of volumes that were dumped to compatible tape -types. For further discussion, see the IBM AFS Administration -Guide. -

    The Tape Coordinator's default response to this command is to access -the first tape it needs by invoking the MOUNT instruction in the -local /usr/afs/backup/CFG_device_name file, or by -prompting the backup operator to insert the tape if there is no -MOUNT instruction. However, if the AUTOQUERY NO -instruction appears in the CFG_device_name file, or if the -issuer of the butc command included the -noautoquery -flag, the Tape Coordinator instead expects the tape to be in the device -already. If it is not, or is the wrong tape, the Tape Coordinator -invokes the MOUNT instruction or prompts the operator. It -also invokes the MOUNT instruction or prompts for any additional -tapes needed to complete the restore operation; the backup operator must -arrange to provide them. -

    Options -

    -

    -server -
    Names the file server machine on which to restore each volume. If -this argument and the -partition argument indicate a site other -than the current site for each volume, and the -extension argument -is not also provided, the Backup System removes the existing volumes from -their current sites, places the restored contents at the specified site, and -changes the site information in the volume's VLDB entry. -

    -partition -
    Names the partition to which to restore each volume. If this -argument and the -server argument indicate a site other than the -current site for each volume, and the -extension argument is not -also provided, the Backup System removes the existing volumes from their -current sites, places the restored contents at the specified site, and changes -the site information in the volume's VLDB entry. -

    -volume -
    Names one or more volumes to restore, using the volume name as listed in -the Backup Database. Provide the base (read/write) name of each volume -to have the Backup System search the Backup Database for the newest dump set -that includes a dump of either the read/write or the backup version of the -volume; it restores the dumps of that version of the volume, starting -with the most recent full dump. If, in contrast, a volume name -explicitly includes the .backup or -.readonly extension, the Backup System restores dumps of the -corresponding volume version only. -

    -extension -
    Creates a new volume to house the restored data, with a name derived by -appending the specified string to each volume named by the -volume -argument. The Backup System creates a new VLDB entry for the -volume. Any string other than .readonly or -.backup is acceptable, but the combination of the existing -volume name and extension cannot exceed 22 characters in length. To use -a period to separate the extension from the name, specify it as the first -character of the string (as in .rst, for example). -

    -date -
    Specifies a date and optionally time; the restored volume includes -data from dumps performed before the date only. Provide a value in the -format mm/dd/yyyy [hh:MM], -where the required mm/dd/yyyy portion indicates the month -(mm), day (dd), and year (yyyy), and the optional -hh:MM portion indicates the hour and minutes in 24-hour format -(for example, the value 14:36 represents 2:36 -p.m.). If omitted, the time defaults to 59 seconds after -midnight (00:00:59 hours). -

    Valid values for the year range from 1970 to -2037; higher values are not valid because the latest possible -date in the standard UNIX representation is in February 2038. The -command interpreter automatically reduces any later date to the maximum -value. -

    If this argument is omitted, the Backup System restores all possible dumps -including the most recently created. -
    Note:A plus sign follows this argument in the command's syntax statement -because it accepts a multiword value which does not need to be enclosed in -double quotes or other delimiters, not because it accepts multiple -dates. Provide only one date (and optionally, time) definition. -
    -

    -portoffset -
    Specifies one or more port offset numbers (up to a maximum of 128), each -corresponding to a Tape Coordinator to use in the operation. If there -is more than one value, the Backup System uses the first one when restoring -the full dump of each volume, the second one when restoring the level 1 -incremental dump of each volume, and so on. It uses the final value in -the list when restoring dumps at the corresponding depth in the dump hierarchy -and all dumps at lower levels. -

    Provide this argument unless the default value of 0 (zero) is appropriate -for all dumps. If 0 is just one of the values in the list, -provide it explicitly in the appropriate order. -

    -n -
    Displays the list of tapes that contain the dumps required by the restore -operation, without actually performing the operation. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the issuer includes the -n flag with the command, the -following string appears at the head of the list of the tapes necessary to -complete the restore operation. -

       Tapes needed:
    -   
    -
    -

    Examples -

    The following command restores the volume user.pat to -partition /vicepa on machine -fs5.abc.com: -

       % backup volrestore -server fs5.abc.com -partition a -volume user.pat
    -   
    -
    -

    The following command restores the volumes user.smith and -user.terry to partition /vicepb on machine -fs4.abc.com, adding a .rst -extension to each volume name and preserving the existing -user.smith and user.terry volumes. -Only dumps created before 5:00 p.m. on 31 January 1998 are -restored. (The command is shown here on multiple lines only for -legibility reasons.) -

       % backup volrestore -server fs4.abc.com -partition b  \
    -                       -volume user.smith user.terry  \ 
    -                       -extension .rst -date 1/31/1998 17:00
    -   
    -
    -

    The following command restores the volume user.pat to -partition /vicepb on machine -fs4.abc.com. The Tape Coordinator with port -offset 1 handles the tape containing the full dump; the Tape Coordinator -with port offset 0 handles all tapes containing incremental dumps. (The -command is shown here on two lines only for legibility reasons.) -

       % backup volrestore -server fs5.abc.com -partition a  \
    -                       -volume user.pat -portoffset 1 0
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server or Volume Location (VL) Server is -running, and on every file server machine that houses an affected -volume. If the -localauth flag is included, the issuer must -instead be logged on to a server machine as the local superuser -root. -

    Related Information -

    backup -

    backup dump -

    backup diskrestore -

    backup volsetrestore -

    butc -

    vos backup -

    vos remove -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf092.htm b/doc/html/AdminReference/auarf092.htm deleted file mode 100644 index 0d69fd32d..000000000 --- a/doc/html/AdminReference/auarf092.htm +++ /dev/null @@ -1,352 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    backup volsetrestore

    - - - - - - - -

    Purpose -

    Restores all volumes in a volume set -

    Synopsis -

    backup volsetrestore [-name <volume set name>]  [-file <file name>]
    -                     [-portoffset <TC port offset>+]  
    -                     [-extension <new volume name extension>]
    -                     [-n]  [-localauth]  [-cell <cell name>]  [-help]
    -   
    -backup vols [-na <volume set name>]  [-f <file name>]
    -            [-p <TC port offset>+]  [-e <new volume name extension>]
    -            [-n]  [-l]  [-c <cell name>]  [-h]
    -
    -

    Description -

    The backup volsetrestore command restores the complete contents -of a group of read/write volumes to the file system, by restoring data from -the last full dump and all subsequent incremental dumps of each volume. -It is most useful for recovering from loss of data on multiple partitions, -since it can restore each of a defined set of volumes to a different -site. -

    (If the FILE YES instruction appears in the -/usr/afs/backup/CFG_device_name file associated with the -specified port offset, then the backup volsetrestore command -restores data from the backup data file listed for that port offset in the -Tape Coordinator's /usr/afs/backup/tapeconfig file, instead of -from tape. For the sake of clarity, the following text refers to tapes -only, but the Backup System handles backup data files in much the same -way.) -

    If restoring one or more volumes to a single site only, it is usually more -efficient to use the backup volrestore command. If restoring -all volumes that resided on a single partition, it is usually more efficient -to use the backup diskrestore command. -

    Indicate the volumes to restore by providing either the -name -argument or the -file argument: -

      -

    • The -name argument names a volume set. The Backup System -restores all volumes listed in the Volume Location Database (VLDB) that match -the server, partition, and volume name criteria defined in the volume -set's volume entries, and for which dumps are available. It -restores the volumes to their current site (machine and partition), and by -default overwrites the existing volume contents. -

      It is not required that the volume set was previously used to back up -volumes (was used as the -volumeset option to the backup -dump command). It can be defined especially to match the volumes -that need to be restored with this command, and that is usually the better -choice. Indeed, a temporary volume set, created by including -the -temporary flag to the backup addvolset command, can -be especially useful in this context. A temporary volume set is not -added to the Backup Database and exists only during the current interactive -backup session, which is suitable if the volume set is needed only to complete -the single restore operation initialized by this command. -

      The reason that a specially defined volume set is probably better is that -volume sets previously defined for use in dump operations usually match the -backup version of volumes, whereas for a restore operation it is best to -define volume entries that match the base (read/write) name. In that -case, the Backup System searches the Backup Database for the newest dump set -that includes either the read/write or the backup version of the -volume. If, in contrast, a volume entry explicitly matches the -volume's backup or read-only version, the Backup System restores dumps of -that volume version only. -

    • The -file argument names a file that lists specific volumes and -the site to which to restore each. The volume name must match the name -used in Backup Database dump records rather than in the VLDB, if they differ, -because the Backup System does not look up volumes in the VLDB. The -specified site can be different than the volume's current one; in -that case, the Backup System removes the current version of the volume and -updates the volume's location information in the VLDB. -
    -

    If all of the full and incremental dumps of all relevant volumes were not -written to a type of tape that a single Tape Coordinator can read, use the --portoffset argument to list multiple port offset numbers in the -order in which the tapes are needed (first list the port offset for the full -dump, second the port offset for the level 1 incremental dump, and so -on). This implies that the full dumps of all relevant volumes must have -been written to a type of tape that the first Tape Coordinator can read, the -level 1 incremental dumps to a type of tape the second Tape Coordinator can -read, and so on. If dumps are on multiple incompatible tape types, use -the backup volrestore command to restore individual volumes, or use -this command after defining new volume sets that group together volumes that -were dumped to compatible tape types. For further discussion, see the -IBM AFS Administration Guide. -

    By default, the Backup System overwrites the contents of an existing volume -with the restored data. To create a new volume to house the restored -version instead, use the -extension argument. The Backup -System derives the new volume's name by adding the specified extension to -the read/write base name, and creates a new VLDB entry. The command -does not affect the existing volume in any way. However, if a volume -with the specified extension also already exists, the command overwrites -it. -

    The -n flag produces a list of the volumes to be restored if the --n flag were not included, without actually restoring any -volumes. See the Output section of this reference page for a -detailed description of the output, and suggestions on how to combine it most -effectively with the -file and -name arguments. -

    The execution time for a backup volsetrestore command depends on -the number of volumes to be restored and the amount of data in them, but it -can take hours to restore a large number of volumes. One way to reduce -the time is to run multiple instances of the command simultaneously, either -using the -name argument to specify disjoint volume sets for each -command, or the -file argument to name files that list different -volumes. This is possible if there are multiple available Tape -Coordinators that can read the required tapes. Depending on how the -volumes to be restored were dumped to tape, specifying disjoint volume sets -can also reduce the number of tape changes required. -

    The Tape Coordinator's default response to this command is to access -the first tape it needs by invoking the MOUNT instruction in the -local /usr/afs/backup/CFG_device_name file, or by -prompting the backup operator to insert the tape if there is no -MOUNT instruction. However, if the AUTOQUERY NO -instruction appears in the CFG_device_name file, or if the -issuer of the butc command included the -noautoquery -flag, the Tape Coordinator instead expects the tape to be in the device -already. If it is not, or is the wrong tape, the Tape Coordinator -invokes the MOUNT instruction or prompts the operator. It -also invokes the MOUNT instruction or prompts for any additional -tapes needed to complete the restore operation; the backup operator must -arrange to provide them. -

    Options -

    -

    -name -
    Names a volume set to restore. The Backup System restores all of -the volumes listed in the VLDB that match the volume set's volume -entries. Provide this argument or the -file argument, but -not both. -

    -file -
    Specifies the full pathname of a file that lists one or more volumes and -the site (file server machine and partition) to which to restore each. -Use either this argument or the -name argument, but not -both. -

    Each volume's entry must appear on its own (unbroken) line in the -file, and have the following format: -

        machine  partition
    - volume [comments...]
    -   
    -
    -

    -

    where -

    -

    machine -
    Names the file server machine to which to restore the volume. -

    partition -
    Names the partition to which to restore the volume. -

    volume -
    Names the volume to restore. It is generally best to specify the -base (read/write) name of each volume. In this case, the Backup System -searches the Backup Database for the newest dump set that includes a dump of -either the read/write or the backup version of the volume. It restores -the dumps of that version of the volume, starting with the most recent full -dump. If, in contrast, the name explicitly includes the -.backup or .readonly extension, the Backup -System restores dumps of that volume version only. -

    comments... -
    Is any other text. The Backup System ignores any text on each line -that appears after the volume name, so this field can be used for notes -helpful to the backup operator or other administrator. -
    -

    -

    Do not use wildcards (for example, .*) in the -machine, partition, or volume fields. It is -acceptable for multiple lines in the file to name the same volume, but the -Backup System processes only the first of them. -

    -extension -
    Creates a new volume for each volume specified by the -name or --file argument, to house the restored data from that volume. -The Backup System derives the new volume's name by appending the -specified string to the read/write base name, and creates a new VLDB volume -entry. It preserves the contents of each existing volume. Any -string other than .readonly or .backup is -acceptable, but the combination of the base name and extension cannot exceed -22 characters in length. To use a period to separate the extension from -the name, specify it as the first character of the string (as in -.rst, for example). -

    -portoffset -
    Specifies one or more port offset numbers (up to a maximum of 128), each -corresponding to a Tape Coordinator to use in the operation. If there -is more than one value, the Backup System uses the first one when restoring -the full dump of each volume, the second one when restoring the level 1 -incremental dump of each volume, and so on. It uses the final value in -the list when restoring dumps at the corresponding depth in the dump hierarchy -and all dumps at lower levels. -

    Provide this argument unless the default value of 0 (zero) is appropriate -for all dumps. If 0 is just one of the values in the list, -provide it explicitly in the appropriate order. -

    -n -
    Displays a list of the volumes to be restored if the flag were not -included, without actually restoring them. The Output -section of this reference page details the format of the output. When -combined with the -name argument, its output is easily edited for -use as input to the -file argument on a subsequent backup -volsetrestore command. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The backup command -interpreter presents it to the Backup Server, Volume Server and VL Server -during mutual authentication. Do not combine this flag with the --cell argument. For more details, see the introductory -backup reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory backup reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the -n flag is not provided, the command displays a unique -task ID number for the operation, in two places: -

      -

    • In the shell window, directly following the command line -

    • In the Tape Coordinator window, if the butc process was started -at debug level 1 -
    -

    The task ID number is not the same as the job ID number displayed by the -(backup) jobs command when the (backup) volsetrestore -command is issued in interactive mode. The Backup System does not -assign either type of ID number until the restoration process actually -begins. -

    When the -n flag is included, no task ID or job ID numbers are -reported because none are assigned. Instead, the output begins with a -count of the number of volumes to be restored, followed by a line for each -dump of a volume. For each volume, the line representing the most -recent full dump appears first, and lines for any subsequent incremental dumps -follow, ordered by dump level. The lines for a given volume do not -necessarily appear all together, however. -

    The format of each line is as follows (the output is shown here on two -lines only for legibility reasons): -

       machine partition volume_dumped  # as volume_restored; tape_name (tape_ID);  \
    -              pos position_number; date
    -   
    -
    -

    where -

    -

    machine -
    Names the file server machine that currently houses the volume, as listed -in the VLDB. -

    partition -
    Names the partition that currently houses the volume, as listed in the -VLDB. -

    volume_dumped -
    Specifies the version (read/write or backup) of the volume that was -dumped, as listed in the Backup Database. -

    volume_restored -
    Specifies the name under which to restore the volume. The Backup -System only restores data to read/write volumes. If the --extension argument is included, then the specified extension -appears on the name in this field (for example, -user.pat.rst). -

    tape_name -
    Names the tape containing the dump of the volume, from the Backup -Database. If the tape has a permanent name, it appears here; -otherwise, it is the AFS tape name. -

    tape_ID -
    The tape ID of the tape containing the dump of the volume, from the Backup -Database. -

    position_number -
    Specifies the dump's position on the tape (for example, 31 -indicates that 30 volume dumps precede the current one on the tape). If -the dump was written to a backup data file, this number is the ordinal of the -16 KB-offset at which the volume's data begins. -

    date -
    The date and time when the volume was dumped. -
    -

    One way to generate a file for use as input to the -file -argument is to combine the -name and -n options, -directing the output to a file. The IBM AFS Administration -Guide section on using the Backup System to restore data explains how to -edit the file as necessary before using it as input to the -file -argument. -

    The output of this command includes only volumes for which the Backup -Database includes at least one dump record. The command interpreter -generates a message on the standard error stream about volumes that do not -have dump records but either are listed in the file named by the --file argument, or appear in the VLDB as a match to a volume entry -in the volume set named by the -name argument. -

    Examples -

    The following command restores all volumes included in entries in the -volume set named data.restore, which was created expressly -to restore data to a pair of file server machines on which all data was -corrupted due to a software error. All volumes are restored to the -sites recorded in their entries in the VLDB. -

       % backup volsetrestore -name data.restore
    -   Starting restore
    -   backup: task ID of restore operation: 112
    -   backup: Finished doing restore
    -   
    -
    -

    The following command restores all volumes that have entries in the file -named /tmp/restore: -

       % backup volsetrestore -file /tmp/restore
    -   Starting restore
    -   backup: task ID of restore operation: 113
    -   backup: Finished doing restore
    -   
    -
    -

    The /tmp/restore file has the following contents: -

       fs1.abc.com b user.pat
    -   fs1.abc.com b user.terry
    -   fs1.abc.com b user.smith
    -   fs2.abc.com c user.jones
    -          .         .     .
    -          .         .     .
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server or Volume Location (VL) Server is -running, and on every file server machine that houses an affected -volume. If the -localauth flag is included, the issuer must -instead be logged on to a server machine as the local superuser -root. -

    Related Information -

    backup -

    backup addvolentry -

    backup addvolset -

    backup diskrestore -

    backup dump -

    backup volrestore -

    butc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf093.htm b/doc/html/AdminReference/auarf093.htm deleted file mode 100644 index 8d596d7c8..000000000 --- a/doc/html/AdminReference/auarf093.htm +++ /dev/null @@ -1,254 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos

    - - - - - - - -

    Purpose -

    Introduction to the bos command suite -

    Description -

    The commands in the bos command suite are the administrative -interface to the Basic OverSeer (BOS) Server, which runs on every file server -machine to monitor the other server processes on it. If a process -fails, the BOS Server can restart it automatically, taking into account -interdependencies between it and other processes. The BOS Server frees -system administrators from constantly monitoring the status of server machines -and processes. -

    There are several categories of commands in the bos command -suite: -

      -

    • Commands to administer server process binary files: bos -getdate, bos install, bos prune, and bos -uninstall -

    • Commands to maintain system configuration files: bos -addhost, bos addkey, bos adduser, bos -listhosts, bos listkeys, bos listusers, bos -removehost, bos removekey, bos removeuser, and -bos setcellname -

    • Commands to start and stop processes: bos create, -bos delete, bos restart, bos shutdown, -bos start, bos startup, and bos stop -

    • Commands to set and verify server process and server machine status: -bos getlog, bos getrestart, bos setauth, -bos setrestart, and bos status -

    • A command to restore file system consistency: bos salvage -

    • Commands to obtain help: bos apropos and bos -help -
    -

    The BOS Server and the bos commands use and maintain the -following configuration and log files: -

      -

    • The /usr/afs/etc/CellServDB file lists the local cell's -database server machines. These machines run the Authentication, -Backup, Protection and Volume Location (VL) Server processes, which maintain -databases of administrative information. The database server processes -consult the file to learn about their peers, whereas the other server -processes consult it to learn where to access database information as -needed. To administer the CellServDB file, use the following -commands: bos addhost, bos listhosts, bos -removehost, and bos setcellname. -

    • The /usr/afs/etc/KeyFile file lists the server encryption keys -that the server processes use to decrypt tickets presented by client processes -and one another. To administer the KeyFile file, use the -following commands: bos addkey, bos listkeys, and -bos removekey. -

    • The /usr/afs/etc/ThisCell file defines the cell to which the -server machine belongs for the purposes of server-to-server -communication. Administer it with the bos setcellname -command. There is also a /usr/vice/etc/ThisCell file that -defines the machine's cell membership with respect to the AFS command -suites and Cache Manager access to AFS data. -

    • The /usr/afs/etc/UserList file lists the user name of each -administrator authorized to issue privileged bos and vos -commands. To administer the UserList file, use the following -commands: bos adduser, bos listusers, and bos -removeuser. -

    • The /usr/afs/local/BosConfig file defines which AFS server -processes run on the server machine, and whether the BOS Server restarts them -automatically if they fail. It also defines when all processes restart -automatically (by default once per week), and when the BOS Server restarts -processes that have new binary files (by default once per day). To -administer the BosConfig file, use the following commands: -bos create, bos delete, bos getrestart, -bos setrestart, bos start, and bos -stop. -

    • The /usr/afs/log/BosLog file records important operations the -BOS Server performs and error conditions it encounters. -
    -

    For more details, see the reference page for each file. -

    Options -

    The following arguments and flags are available on many commands in the -bos suite. The reference page for each command also lists -them, but they are described here in greater detail. - - - -

    -

    -cell <cell name> -
    Names the cell in which to run the command. It is acceptable to -abbreviate the cell name to the shortest form that distinguishes it from the -other entries in the /usr/vice/etc/CellServDB file on the local -machine. If the -cell argument is omitted, the command -interpreter determines the name of the local cell by reading the following in -order: -
      -

    1. The value of the AFSCELL environment variable -

    2. The local /usr/vice/etc/ThisCell file -
    -

    -

    Do not combine the -cell and -localauth -options. A command on which the -localauth flag is included -always runs in the local cell (as defined in the server machine's local -/usr/afs/etc/ThisCell file), whereas a command on which the --cell argument is included runs in the specified foreign -cell. - -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -

    - --localauth -
    Constructs a server ticket using the server encryption key with the -highest key version number in the local /usr/afs/etc/KeyFile -file. The bos command interpreter presents the ticket, which -never expires, to the BOS Server during mutual authentication. -

    Use this flag only when issuing a command on a server machine; client -machines do not usually have a /usr/afs/etc/KeyFile file. -The issuer of a command that includes this flag must be logged on to the -server machine as the local superuser root. The flag is -useful for commands invoked by an unattended application program, such as a -process controlled by the UNIX cron utility or by a cron entry in -the machine's /usr/afs/local/BosConfig file. It is also -useful if an administrator is unable to authenticate to AFS but is logged in -as the local superuser root. -

    Do not combine the -cell and -localauth -options. A command on which the -localauth flag is included -always runs in the local cell (as defined in the server machine's local -/usr/afs/etc/ThisCell file), whereas a command on which the --cell argument is included runs in the specified foreign -cell. Also, do not combine the -localauth and --noauth flags. -

    - --noauth -
    Establishes an unauthenticated connection to the BOS Server, in which the -BOS Server treats the issuer as the unprivileged user -anonymous. It is useful only when authorization checking is -disabled on the server machine (during the installation of a file server -machine or when the bos setauth command has been used during other -unusual circumstances). In normal circumstances, the BOS Server allows -only privileged users to issue commands that change the status of a server or -configuration file, and refuses to perform such an action even if the --noauth flag is provided. Do not combine the --noauth and -localauth flags. -

    -server <machine name> - -
    Indicates the AFS server machine on which to run the command. -Identify the machine by its IP address in dotted decimal format, its -fully-qualified host name (for example, fs1.abc.com), -or by an abbreviated form of its host name that distinguishes it from other -machines. Successful use of an abbreviated form depends on the -availability of a name service (such as the Domain Name Service or a local -host table) at the time the command is issued. -

    For the commands that alter the administrative files shared by all server -machines in the cell (the bos addhost, bos addkey, -bos adduser, bos removehost, bos removekey, -and bos removeuser commands), the appropriate machine depends on -whether the cell uses the United States or international version of AFS: -

      -

    • If the cell runs the United States edition of AFS and (as recommended) -uses the Update Server to distribute the contents of the -/usr/afs/etc directory, provide the name of the system control -machine. After issuing the command, allow up to five minutes for the -Update Server to distribute the changed file to the other AFS server machines -in the cell. If the specified machine is not the system control machine -but is running an upclientetc process that refers to the system -control machine, then the change will be overwritten when the process next -brings over the relevant file from the system control machine. -

    • If the cell runs the international edition of AFS, do not use the Update -Server to distribute the contents of the /usr/afs/etc -directory. Instead, repeatedly issue the command, naming each of the -cell's server machines in turn. To avoid possible inconsistency -problems, finish issuing the commands within a fairly short time. -
    -
    -

    Privilege Required - - -

    To issue any bos command that changes a configuration file or -alters process status, the issuer must be listed in the -/usr/afs/etc/UserList file on the server machine named by the --server argument. Alternatively, if the --localauth flag is included the issuer must be logged on as the -local superuser root. -

    To issue a bos command that only displays information (other -than the bos listkeys command), no privilege is required. -

    Related Information -

    BosConfig -

    CellServDB (client version) -

    CellServDB (server version) -

    KeyFile -

    ThisCell (client version) -

    ThisCell (server version) -

    UserList -

    bos addhost -

    bos addkey -

    bos adduser -

    bos apropos -

    bos create -

    bos delete -

    bos exec -

    bos getdate -

    bos getlog -

    bos getrestart -

    bos help -

    bos install -

    bos listhosts -

    bos listkeys -

    bos listusers -

    bos prune -

    bos removehost -

    bos removekey -

    bos removeuser -

    bos restart -

    bos salvage -

    bos setauth -

    bos setcellname -

    bos setrestart -

    bos shutdown -

    bos start -

    bos startup -

    bos status -

    bos stop -

    bos uninstall -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf094.htm b/doc/html/AdminReference/auarf094.htm deleted file mode 100644 index 19053b485..000000000 --- a/doc/html/AdminReference/auarf094.htm +++ /dev/null @@ -1,124 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos addhost

    - - - - - -

    Purpose -

    Adds a database server machine to the /usr/afs/etc/CellServDB -file -

    Synopsis -

    bos addhost -server <machine name>  -host <host name>+
    -            [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -    
    -bos addh -s <machine name>  -ho <host name>+
    -         [-c <cell name>]  [-n]  [-l]  [-he]
    -
    -

    Description -

    The bos addhost command adds an entry for each database server -machine specified with the -host argument to the -/usr/afs/etc/CellServDB file on the machine named by the --server argument. -

    Cautions -

    After executing this command (and waiting for the Update Server to -propagate the changes, if it is used), restart the database server processes -on all database server machines to force election of a quorum that includes -the new set of machines listed in the /usr/afs/etc/CellServDB -file. The IBM AFS Quick Beginnings explains in more detail -how to add and remove database server machines. -

    It is best to maintain a one-to-one mapping between hostnames and IP -addresses on a multihomed database server machine (this is actually the -conventional configuration for any AFS machine). The BOS Server uses -the gethostbyname( ) routine to obtain the IP address -associated with the hostname specified by the -host -argument. If there is more than one address, the BOS Server records in -the CellServDB entry the one that appears first in the list of -addresses returned by the routine. The routine possibly returns -addresses in a different order on different machines, which can create -inconsistency. -

    Options -

    -

    -server -
    Identifies the server machine on which to change the -/usr/afs/etc/CellServDB file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is conventional to specify only the system control machine as a value for the --server argument. In cells that run the international -version of AFS, repeat the command for each file server machine. For -further discussion, see the introductory reference page for the bos -command suite. -

    -host -
    Specifies the fully-qualified host name (such as -db1.abc.com) of each database server machine to -register in the CellServDB file. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command adds the database server machines -db2.abc.com and db3.abc.com -to the /usr/afs/etc/CellServDB file on the machine -fs1.abc.com (the system control machine). -

       % bos addhost -server fs1.abc.com -host db2.abc.com db3.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    CellServDB (server version) -

    KeyFile -

    UserList -

    bos -

    bos listhosts -

    bos removehost -

    IBM AFS Quick Beginnings -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf095.htm b/doc/html/AdminReference/auarf095.htm deleted file mode 100644 index 8b07eba40..000000000 --- a/doc/html/AdminReference/auarf095.htm +++ /dev/null @@ -1,144 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos addkey

    - - - - - - - - - -

    Purpose -

    Adds a new server encryption key to the /usr/afs/etc/KeyFile -file -

    Synopsis -

    bos addkey -server <machine name>  [-key <key>]
    -           -kvno <key version number>  [-cell <cell name>]
    -           [-noauth]  [-localauth]  [-help]
    -    
    -bos addk -s <machine name>  [-ke <key>]  -kv <key version number>
    -         [-ce <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos addkey command constructs a server encryption key from -the text string provided, assigns it the key version number specified with the --kvno argument, and adds it to the /usr/afs/etc/KeyFile -file on the machine specified with the -server argument. Be -sure to use the kas setpassword or kas setkey command to -add the same key to the afs entry in the Authentication -Database. -

    Do not use the -key argument, which echoes the password string -visibly on the screen. If the argument is omitted, the BOS Server -prompts for the string and does not echo it visibly: -

       Input key:
    -   Retype input key:
    -   
    -
    -

    The BOS Server prohibits reuse of any key version number already listed in -the /usr/afs/etc/KeyFile file. This ensures that users who -still have tickets sealed with the current key are not prevented from -communicating with a server process because the current key is overwritten -with a new key. Use the bos listkeys command to display the -key version numbers in the /usr/afs/etc/KeyFile file. -

    Options -

    -

    -server -
    Indicates the server machine on which to change the -/usr/afs/etc/KeyFile file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is conventional to specify only the system control machine as a value for the --server argument. In cells that run the international -version of AFS, repeat the command for each file server machine. For -further discussion, see the introductory reference page for the bos -command suite. -

    -key -
    Specifies a character string just like a password; the BOS Server -calls a DES conversion function to encode it into a form appropriate for use -as an encryption key. Omit this argument to have the BOS Server prompt -for the string instead. -

    -kvno -
    Defines the new key's key version number. It must be an -integer in the range from 0 (zero) through 255. -For the sake of simplicity, use the number one higher than the current highest -key version number; use the bos listkeys command to display -key version numbers. - -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the strings typed at the Input key and Retype input -key prompts do not match, the following message appears, and the command -exits without adding a new key: -

       Input key mismatch
    -   
    -
    -

    Examples -

    The following command adds a new server encryption key with key version -number 14 to the KeyFile file kept on the machine -fs1.abc.com (the system control machine). The -issuer omits the -key argument, as recommended, and provides the -password at the prompts. -

       % bos addkey -server fs1.abc.com -kvno 14
    -   Input key:
    -   Retype input key:
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos listkeys -

    bos removekey -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf096.htm b/doc/html/AdminReference/auarf096.htm deleted file mode 100644 index b55291d83..000000000 --- a/doc/html/AdminReference/auarf096.htm +++ /dev/null @@ -1,105 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos adduser

    - - - - - - - -

    Purpose -

    Adds a privileged user to the /usr/afs/etc/UserList file -

    Synopsis -

    bos adduser -server <machine name>  -user <user names>+
    -            [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -     
    -bos addu -s <machine name>  -u <user names>+
    -         [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos adduser command adds each user name specified with the --user argument to the /usr/afs/etc/UserList file on the -machine named by the -server argument. It is the -issuer's responsibility to verify that an entry for the user exists in -the Authentication and Protection Databases. -

    Options -

    -

    -server -
    Indicates the server machine on which to change the -/usr/afs/etc/UserList file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is conventional to specify only the system control machine as a value for the --server argument. In cells that run the international -version of AFS, repeat the command for each file server machine. For -further discussion, see the introductory reference page for the bos -command suite. -

    -user -
    Specifies each user name to insert into the -/usr/afs/etc/UserList file. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command adds the user names pat and -smith to the /usr/afs/etc/UserList file on the machine -fs1.abc.com (the system control machine). -

       % bos adduser -server fs1.abc.com -user pat smith
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos listusers -

    bos removeuser -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf097.htm b/doc/html/AdminReference/auarf097.htm deleted file mode 100644 index be8ad0687..000000000 --- a/doc/html/AdminReference/auarf097.htm +++ /dev/null @@ -1,73 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos apropos

    - - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    bos apropos -topic <help string>  [-help]
    -    
    -bos ap -t <help string>  [-h]
    -
    -

    Description -

    The bos apropos command displays the first line of the online -help entry for any bos command that has in its name or short -description the string specified by the -topic argument. -

    To display the syntax for a command, use the bos help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -bos command where the string specified with the -topic -argument is part of the command name or first line. -

    Examples -

    The following command lists all bos commands that include the -word restart in their names or short descriptions: -

       % bos apropos restart
    -   getrestart: get restart times
    -   restart: restart all processes
    -   setrestart: set restart times
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    bos -

    bos help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf098.htm b/doc/html/AdminReference/auarf098.htm deleted file mode 100644 index bbb2048f0..000000000 --- a/doc/html/AdminReference/auarf098.htm +++ /dev/null @@ -1,367 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos create

    - - - - - - - - - - -

    Purpose -

    Defines a new process in the /usr/afs/local/BosConfig file and -starts it running -

    Synopsis -

    bos create -server <machine name>  -instance <server process name>
    -           -type <server type>  -cmd <command lines>+
    -           [-notifier <Notifier program>]  [-cell <cell name>]
    -           [-noauth]  [-localauth]  [-help]
    -   
    -bos c -s <machine name>  -i <server process name>  -t <server type>
    -      -cm <command lines>+  [-not <Notifier program>]  [-ce <cell name>]
    -      [-noa]  [-l]  [-h]
    -
    -

    Description -

    The bos create command creates a server process entry in the -/usr/afs/local/BosConfig file on the server machine named by the --server argument, sets the process's status to Run -in the BosConfig file and in memory, and starts the process. -

    A server process's entry in the BosConfig file defines its -name, its type, the command that initializes it, and optionally, the name of a -notifier program that runs when the process terminates. -

    Options -

    -

    -server -
    Indicates the server machine on which to define and start the new -process. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    -instance -
    Names the process to define and start. Any name is acceptable, but -for the sake of simplicity it is best to use the last element of the -process's binary file pathname, and to use the same name on every server -machine. The conventional names, as used in all AFS documentation, -are: -
    -

    buserver -
    The Backup Server process - - -

    fs -
    The process that combines the File Server, Volume Server, and Salvager -processes (fileserver, volserver, and -salvager) - - -

    kaserver -
    The Authentication Server process - - -

    ptserver -
    The Protection Server process - - -

    runntp -
    The controller process for the Network Time Protocol Daemon - - -

    upclientbin -
    The client portion of the Update Server process that retrieves binary -files from the /usr/afs/bin directory of the binary distribution -machine for this machine's CPU/operating system type. (The name of -the binary is upclient, but the bin suffix distinguishes -this process from upclientetc.) - - -

    upclientetc -
    The client portion of the Update Server process that retrieves -configuration files from the /usr/afs/etc directory of the system -control machine. Do not run this process in cells that use the -international edition of AFS. (The name of the binary is -upclient, but the etc suffix distinguishes this process -from upclientbin.) -

    upserver -
    The server portion of the Update Server process - - -

    vlserver -
    The Volume Location (VL) Server process - - -
    -

    -type -
    Specifies the process's type. The acceptable values are: -

    -

    -

    cron -
    Use this value for cron-type processes that the BOS Server starts only at -a defined daily or weekly time, rather than whenever it detects that the -process has terminated. AFS does not define any such processes by -default, but makes this value available for administrator use. Define -the time for command execution as part of the -cmd argument to the -bos create command. -

    fs -
    Use this value only for the fs process, which combines the File -Server, Volume Server and Salvager processes. If one of the component -processes terminates, the BOS Server shuts down and restarts the processes in -the appropriate order. -

    simple -
    Use this value for all processes listed as acceptable values to the --instance argument, except for the fs process. -There are no interdependencies between simple processes, so the BOS Server can -stop and start them independently as necessary. -
    -

    -cmd -
    Specifies each command the BOS Server runs to start the process. -Specify no more than six commands (which can include the command's -options, in which case the entire string is surrounded by double quotes); -any additional commands are ignored. -

    For a simple process, provide the complete pathname of the process's -binary file on the local disk (for example, /usr/afs/bin/ptserver -for the Protection Server). If including any of the initialization -command's options, surround the entire command in double quotes (" -"). The upclient process has a required argument, and -the commands for all other processes take optional arguments. - -

    For the fs process, provide the complete pathname of the local -disk binary file for each of the component processes: -fileserver, volserver, and salvager, in that -order. The standard binary directory is /usr/afs/bin. -If including any of an initialization command's options, surround the -entire command in double quotes (" "). - -

    For a cron process, provide two parameters: - -

      -

    • The complete local disk pathname of either an executable file or a command -from one of the AFS suites (complete with all of the necessary -arguments). Surround this parameter with double quotes (" ") -if it contains spaces. -

    • A specification of when the BOS Server executes the file or command -indicated by the first parameter. There are three acceptable -values: -
        -

      • The string now, which directs the BOS Server to execute the -file or command immediately and only once. It is usually simpler to -issue the command directly or issue the bos exec command. -

      • A time of day. The BOS Server executes the file or command daily at -the indicated time. Separate the hours and minutes with a colon -(hh:MM), and use either 24-hour format, or a value -in the range from 1:00 through 12:59 with -the addition of am or pm. For example, both -14:30 and "2:30 pm" indicate 2:30 in -the afternoon. Surround this parameter with double quotes (" -") if it contains a space. -

      • A day of the week and time of day, separated by a space and surrounded -with double quotes (" "). The BOS Server executes the file -or command weekly at the indicated day and time. For the day, provide -either the whole name or the first three letters, all in lowercase letters -(sunday or sun, thursday or thu, -and so on). For the time, use the same format as when specifying the -time alone. -
      -
    -

    -notifier -
    Specifies the complete pathname on the local disk of a program that the -BOS Server invokes when the process terminates. The AFS distribution -does not include any notifier programs, but this argument is available for -administrator use. See the Related Information -section. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command defines and starts the simple process -kaserver on the machine fs3.abc.com: -

       % bos create -server fs3.abc.com -instance kaserver -type simple  \              
    -                -cmd /usr/afs/bin/kaserver
    -   
    -
    -

    The following command defines and starts the simple process -upclientbin on the machine -fs4.abc.com. It references -fs1.abc.com as the source for updates to binary -files, checking for changes to the /usr/afs/bin directory every 120 -seconds. -

       % bos create -server fs4.abc.com -instance upclientbin -type simple  \
    -                -cmd "/usr/afs/bin/upclient fs1.abc.com -clear -t 120  \
    -                /usr/afs/bin"
    -   
    -
    -

    The following command creates the fs process fs on the machine -fs4.abc.com. Type the command on a single -line. -

       % bos create -server fs4.abc.com -instance fs -type fs  \
    -                -cmd /usr/afs/bin/fileserver /usr/afs/bin/volserver  \
    -                /usr/afs/bin/salvager
    -   
    -
    -

    The following command creates a cron process called -userbackup on the machine fs5.abc.com, so -that the BOS Server issues the indicated vos backupsys command each -day at 3:00 a.m. (the command creates a backup version of -every volume in the file system whose name begins with -user). Note that the issuer provides the complete pathname -to the vos command, includes the -localauth flag on it, -and types the entire bos create command on one line. -

       % bos create -server fs5.abc.com -instance userbackup -type cron  \      
    -                -cmd "/usr/afs/bin/vos backupsys -prefix user -localauth" 03:00
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    If the -notifier argument is included when this command is used -to define and start a process, the BOS Server invokes the indicated -notifier program when the process exits. The intended use of -a notifier program is to inform administrators when a process exits -unexpectedly, but it can be used to perform any appropriate actions. -The following paragraphs describe the bnode and -bnode_proc structures in which the BOS Server records information -about the exiting process. The list of AFS commands related to this one -follows. -

    The BOS Server constructs and sends on the standard output stream one -bnode and one bnode_proc structure for each exiting -process associated with the notifier program. It brackets each -structure with appropriate BEGIN and END statements -(BEGIN bnode and END bnode, BEGIN bnode_proc -and END bnode_proc), which immediately follow the preceding newline -character with no intervening spaces or other characters. If the -notifier program does not need information from a structure, it can scan ahead -in the input stream for the END statement. -

    In general, each field in a structure is a string of ASCII text terminated -by the newline character. The format of the information within a -structure possibly varies slightly depending on the type of process associated -with the notifier program. -

    The C code for the bnode and bnode_proc structures -follows. Note that the structures sent by the BOS Server do not -necessarily include all of the fields described here, because some are used -only for internal record keeping. The notifier process must robustly -handle the absence of expected fields, as well as the presence of unexpected -fields, on the standard input stream. -

    For proper performance, the notifier program must continue processing the -input stream until it detects the end-of-file (EOF). The BOS Server -closes the standard input file descriptor to the notifier process when it has -completed delivery of the data, and it is the responsibility of the notifier -process to terminate properly. -

    struct bnode contents -

       struct bnode {
    -      struct bnode *next;      /* next pointer in top-level's list */
    -      char *name;              /* instance name */
    -      long nextTimeout;        /* next time this guy should be awakened */
    -      long period;             /* period between calls */
    -      long rsTime;             /* time we started counting restarts */
    -      long rsCount;            /* count of restarts since rsTime */
    -      struct bnode_type *type; /* type object */
    -      struct bnode_ops *ops;   /* functions implementing bnode class */
    -      long procStartTime;      /* last time a process was started */
    -      long procStarts;         /* number of process starts */
    -      long lastAnyExit;        /* last time a process exited for any reason */
    -      long lastErrorExit;      /* last time a process exited unexpectedly */
    -      long errorCode;          /* last exit return code */
    -      long errorSignal;        /* last proc terminating signal */
    -      char *lastErrorName;     /* name of proc that failed last */
    -      short refCount;          /* reference count */
    -      short flags;             /* random flags */
    -      char goal;               /* 1=running or 0=not running */
    -      char fileGoal;           /* same, but to be stored in file */
    -};
    -   
    -
    -

    format of struct bnode explosion -

       printf("name: %s\n",tp->name);
    -   printf("rsTime: %ld\n", tp->rsTime);
    -   printf("rsCount: %ld\n", tp->rsCount);
    -   printf("procStartTime: %ld\n", tp->procStartTime);
    -   printf("procStarts: %ld\n", tp->procStarts);
    -   printf("lastAnyExit: %ld\n", tp->lastAnyExit);
    -   printf("lastErrorExit: %ld\n", tp->lastErrorExit);
    -   printf("errorCode: %ld\n", tp->errorCode);
    -   printf("errorSignal: %ld\n", tp->errorSignal);
    -   printf("lastErrorName: %s\n", tp->lastErrorName);
    -   printf("goal: %d\n", tp->goal);
    -   
    -
    -

    struct bnode_proc contents -

       struct bnode_proc {
    -      struct bnode_proc *next; /* next guy in top-level's list */
    -      struct bnode *bnode;     /* bnode creating this process */
    -      char *comLine;           /* command line used to start this process */
    -      char *coreName;          /* optional core file component name */
    -      long pid;                /* pid if created */
    -      long lastExit;           /* last termination code */
    -      long lastSignal;         /* last signal that killed this guy */
    -      long flags;              /* flags giving process state */
    -};
    -   
    -
    -

    format of struct bnode_proc explosion -

       printf("comLine: %s\n", tp->comLine);
    -   printf("coreName: %s\n", tp->coreName);
    -   printf("pid: %ld\n", tp->pid);
    -   printf("lastExit: %ld\n", tp->lastExit);
    -   printf("lastSignal: %ld\n", tp->lastSignal);
    -   
    -
    -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    buserver -

    fileserver -

    kaserver -

    ptserver -

    runntp -

    salvager -

    upclient -

    upserver -

    vlserver -

    volserver -

    vos backupsys -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf099.htm b/doc/html/AdminReference/auarf099.htm deleted file mode 100644 index 956055dec..000000000 --- a/doc/html/AdminReference/auarf099.htm +++ /dev/null @@ -1,103 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos delete

    - - - - - -

    Purpose -

    Deletes a server process from the /usr/afs/local/BosConfig file -

    Synopsis -

    bos delete -server <machine name>  -instance <server process name>+
    -           [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -    
    -bos d -s <machine name>  -i <server process name>+  [-c <cell name>]  
    -      [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos delete command removes the -/usr/afs/local/BosConfig entry for each process indicated by the --instance argument, on the server machine named by the --server argument. -

    Before issuing this command, issue the bos stop command to stop -the process and set its status flag in the BosConfig file to -NotRun. The bos delete command fails with an -error message if a process's status flag is Run. -

    Options -

    -

    -server -
    Indicates the server machine on which to delete the server process entry -from the /usr/afs/local/BosConfig file. Identify the machine -by IP address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    -instance -
    Names each process to delete. Use the name assigned with the --instance argument to the bos create command; -process names appear in the output of the bos status -command. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes the buserver, kaserver, -ptserver, and vlserver entries from the -BosConfig file on db3.abc.com, a database -server machine being decommissioned. -

       % bos delete -server db3.abc.com -instance buserver kaserver ptserver vlserver
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos create -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf100.htm b/doc/html/AdminReference/auarf100.htm deleted file mode 100644 index aee75e673..000000000 --- a/doc/html/AdminReference/auarf100.htm +++ /dev/null @@ -1,91 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos exec

    - - - - - -

    Purpose -

    Executes a command on a remote server machine -

    Synopsis -

    bos exec -server <machine name>  -cmd <command to execute>
    -         [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos e -s <machine name>  -cm <command to execute>  [-ce <cell name>]    
    -      [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos exec command executes the indicated command on the file -server machine named by the -server argument. Its intended -use is to reboot the machine, using the /etc/reboot command or -equivalent. -

    Options -

    -

    -server -
    Indicates the server machine on which to execute the command. -Identify the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -cmd -
    Specifies the complete local disk pathname of the command to execute (for -example, /etc/reboot). Surround this argument with double -quotes ("") if the command contains one or more spaces. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command reboots the machine -fs2.abc.com. The issuer has previously issued -the bos shutdown command to shutdown all processes cleanly. -

       % bos exec -server fs2.abc.com -cmd /sbin/shutdown -r now
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    bos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf101.htm b/doc/html/AdminReference/auarf101.htm deleted file mode 100644 index 1c4cb2818..000000000 --- a/doc/html/AdminReference/auarf101.htm +++ /dev/null @@ -1,120 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos getdate

    - - - - - - - - - - - -

    Purpose -

    Displays the time stamps on an AFS binary file -

    Synopsis -

    bos getdate -server <machine name>  -file <files to check>+
    -            [-dir <destination dir>]  [-cell <cell name>]
    -            [-noauth]  [-localauth]  [-help]
    -    
    -bos getd -s <machine name>  -f <files to check>+  [-d <destination dir>]
    -         [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos getdate command displays the time stamps on the current -version, .BAK version (if any) and .OLD -version (if any) of each binary file named by the -file -argument. (The BOS Server automatically creates .BAK -and .OLD versions when new binaries are installed with the -bos install command.) The files must reside in the -/usr/afs/bin directory on the server machine named by the --server argument unless the -dir argument indicates an -alternate directory. -

    To revert to the .BAK version of a binary, use the -bos uninstall command. To remove obsolete binary files from -the /usr/afs/bin directory, use the bos prune -command. -

    Options -

    -

    -server -
    Indicates the server machine from which to list binary files. -Identify the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    All server machines of the same AFS system type show the same timestamps if -the binaries were installed properly on the binary distribution machine for -this machine's system type, and if all other machines of that type are -running the appropriate upclientbin process. -

    -file -
    Names each binary file to list. -

    -dir -
    Specifies the complete pathname of the local disk directory containing -each file named by the -file argument. It is necessary only -if the files are not in the /usr/afs/bin directory. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    For each file specified with the -file argument, the output -displays the time stamp on the current (unmarked), .BAK, and -.OLD version. The output explicitly reports that a -version does not exist, rather than simply omitting it. -

    Examples -

    The following command examines the time stamps on the files with basename -kaserver on the machine fs2.abc.com: -

       % bos getdate -server fs2.abc.com -file kaserver
    -   File /usr/afs/bin/kaserver dated Mon Jan 4 10:00:36 1999.
    -   .BAK file dated Wed Dec 9 18:55:04 1998, no .OLD file.
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    KeyFile -

    bos -

    bos install -

    bos prune -

    bos uninstall -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf102.htm b/doc/html/AdminReference/auarf102.htm deleted file mode 100644 index 3be3b28d1..000000000 --- a/doc/html/AdminReference/auarf102.htm +++ /dev/null @@ -1,136 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos getlog

    - - - - - - - - - -

    Purpose -

    Prints a server process's log file -

    Synopsis -

    bos getlog -server <machine name>  -file <log file to examine>
    -           [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos getl -s <machine name>  -f <log file to examine>  [-c <cell name>]     
    -         [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos getlog command displays on the standard output stream -the specified log file from the machine named by the -server -argument. The BOS Server fetches the log file from the -/usr/afs/logs directory unless an alternate pathname is provided as -part of the -file argument. -

    Cautions -

    Log files can grow quite large, especially for the database server -processes. To keep them to a manageable size, periodically either use -the UNIX rm command to truncate each log file, or use the bos -restart command to restart each process. -

    It can take up to five minutes after the file is removed or process -restarted for the space occupied by a log file to become available. -

    Options -

    -

    -server -
    Indicates the server machine from which to retrieve the log file. -Identify the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -file -
    Names the log file to display. If a filename only is provided, the -BOS Server fetches the log file from the /usr/afs/logs -directory; the standard values are: -
    -

    AuthLog -
    The Authentication Server (kaserver) log file -

    BackupLog -
    The Backup Server (buserver) log file -

    BosLog -
    The BOS Server (bosserver) log file -

    FileLog -
    The File Server (fileserver) log file -

    SalvageLog -
    The Salvager (salvager) log file -

    VLLog -
    The Volume Location (VL) Server (vlserver) log file -

    VolserLog -
    The Volume Server (volserver) log file -
    -

    -

    If a pathname and filename are provided, the log file is retrieved from the -indicated directory. Partial pathnames are interpreted relative to the -/usr/afs/logs directory. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output is preceded by the line -

       Fetching log file 'filename'...
    -   
    -
    -

    The remainder of the output depends on the particular log file. -

    Examples -

    The following example displays the FileLog file from the machine -fs3.abc.com: -

       % bos getlog -server fs3.abc.com -file FileLog
    -   Fetching log file 'FileLog'...
    -   Sun Nov 8 04:00:34 1998 File server starting
    -   Sun Nov 8 04:00:39 1998 Partition /vicepa:  attached 21 volumes; 
    -                           0 volumes not attached
    -   Sun Nov 8 04:00:40 1998 File Server started Sun Nov 8 04:00:40 
    -                           1998
    -   Mon Nov 9 21:45:06 1998 CB: RCallBack (zero fid probe in host.c) 
    -                           failed for host 28cf37c0.22811
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    bos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf103.htm b/doc/html/AdminReference/auarf103.htm deleted file mode 100644 index 05448d40e..000000000 --- a/doc/html/AdminReference/auarf103.htm +++ /dev/null @@ -1,134 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos getrestart

    - - - - - - - - - -

    Purpose -

    Displays the automatic restart times for server processes -

    Synopsis -

    bos getrestart -server <machine name>  [-cell <cell name>]  
    -               [-noauth]  [-localauth]  [-help]
    -   
    -bos getr -s <machine name>  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos getrestart command displays two restart times from the -/usr/afs/local/BosConfig file on the server machine named by the --server argument: -

      -

    • The general restart time at which the BOS Server process -automatically restarts itself and all processes marked with status -Run in the BosConfig file. The default is Sunday -at 4:00 a.m. -

    • The binary restart time at which the BOS Server automatically -restarts any process for which the time stamp on the binary file in the -/usr/afs/bin directory is later than the last restart time for the -process. The default is 5:00 a.m. Use the bos -getdate command to list a binary file's timestamp, and the --long flag to the bos status command to display a -process's most recent restart time. -
    -

    Use the bos setrestart command to set the restart times. -

    Options -

    -

    -server -
    Indicates the server machine for which to display the restart -times. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output consists of two lines: -

       Server machine_name restarts at time
    -   Server machine_name restarts for new binaries at time
    -   
    -
    -

    Possible values for time include: -

      -

    • never, indicating that the BOS Server never performs that type -of restart -

    • now, indicating that the BOS Server performs that type of -restart only each time it restarts -

    • A specified day and time, indicating that the BOS Server performs that -type of restart once per week. Example: sun 4:00 -am. -

    • A specified time, indicating that the BOS Server performs that type of -restart once per day. Examples: 11:00 pm, -3:00 am. -
    -

    Examples -

    The following example displays the restart times for the machine -db2.abc.com: -

       % bos getrestart db2.abc.com
    -   Server db2.abc.com restarts at sun 4:00 am
    -   Server db2.abc.com restarts for new binaries at 2:15 am
    -   
    -
    -

    In the following example, the issuer abbreviates the machine name -fs1.abc.com to fs1, relying on the -cell's name server to resolve the name. The output echoes the -abbreviated form. -

       % bos getrestart fs1
    -   Server fs1 restarts at sat 5:00 am
    -   Server fs1 restarts for new binaries at 11:30 pm
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    BosConfig -

    KeyFile -

    bos -

    bos getdate -

    bos setrestart -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf104.htm b/doc/html/AdminReference/auarf104.htm deleted file mode 100644 index 9d4426a84..000000000 --- a/doc/html/AdminReference/auarf104.htm +++ /dev/null @@ -1,85 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos help

    - - - -

    Purpose -

    Displays the syntax of specified bos commands or lists -functional descriptions of all bos commands -

    Synopsis -

    bos help [-topic <help string>+]  [-help]
    -     
    -bos h [-t <help string>+]  [-h]
    -
    -

    Description -

    The bos help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every bos command. -

    To list every bos command whose name or short description -includes a specified keyword, use the bos apropos command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the bos part of the command name, providing only -the operation code (for example, specify status, not bos -status). If this argument is omitted, the output briefly -describes every bos command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each bos command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the bos -status command: -

       % bos help status
    -   bos status: show server instance status 
    -   Usage: bos status -server <machine name> [-instance <server
    -   process name>+] [-long] [-cell <cell name>] [-noauth] 
    -   [-localauth] [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    bos -

    bos apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf105.htm b/doc/html/AdminReference/auarf105.htm deleted file mode 100644 index aae3c4f74..000000000 --- a/doc/html/AdminReference/auarf105.htm +++ /dev/null @@ -1,137 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos install

    - - - - - - - - -

    Purpose -

    Installs a new version of a binary file -

    Synopsis -

    bos install -server <machine name>  -file <files to install>+
    -            [-dir <destination dir>]  [-cell <cell name>]  
    -            [-noauth]  [-localauth]  [-help]
    -    
    -bos i -s <machine name>  -f <files to install>+
    -      [-d <destination dir>]  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos install command copies each binary file specified with -the -file argument to the local disk of the server machine named by -the -server argument, which is normally the binary distribution -machine for its CPU/operating system type. The destination directory is -/usr/afs/bin unless the -dir argument indicates an -alternate directory. The source file's UNIX mode bits are -preserved in the transfer. -

    If there is already a file of the same name in the destination directory, -the BOS Server automatically saves it by adding a .BAK -extension. If there is a current .BAK version at -least seven days old, it replaces the current .OLD -version. If there is no current .OLD version, the -current .BAK version becomes the .OLD -version automatically. The bos getdate command displays the -timestamps on the current versions of the file. -

    To start using the new binary immediately, issue the bos restart -command. Otherwise, the BOS Server automatically restarts the process -at the time defined in the /usr/afs/local/BosConfig file; use -the bos getrestart command to display the time and the bos -setrestart time to set it. -

    Options -

    -

    -server -
    Indicates the binary distribution machine on which to install the new -binaries. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    If the machine is not a binary distribution machine and is running an -upclientbin process, then the files are overwritten the next time -the upclientbin process fetches the corresponding file from the -distribution machine (by default within five minutes). -

    -file -
    Specifies the complete pathname of each binary file to copy into the -destination directory. Each source directory can be on the local disk -or in AFS, in which case the issuer of the bos install command must -have the necessary AFS access rights and the local machine must run the Cache -Manager. For the BOS Server to create .BAK and -.OLD versions, the last element in the pathname (the -filename) must match the name of a file in the destination directory. -The reference page for the bos create command lists the standard -binary file names. -

    -dir -
    Provides the complete pathname of the local disk directory in which to -install binary files. It is necessary only if the destination directory -is not /usr/afs/bin. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command copies the file -/afs/abc.com/rs_aix42/usr/afs/bin/vlserver to the file -/usr/afs/bin/vlserver on the machine -fs3.abc.com, which is the binary distribution machine -for server machines running AIX 4.2 in the abc.com -cell. The current version of the /usr/afs/bin/vlserver file -is moved to /usr/afs/bin/vlserver.BAK. -

       % bos install -server fs3.abc.com    \     
    -                 -file /afs/abc.com/rs_aix42/usr/afs/bin/vlserver
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos getdate -

    bos getrestart -

    bos restart -

    bos setrestart -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf106.htm b/doc/html/AdminReference/auarf106.htm deleted file mode 100644 index 0d866bb08..000000000 --- a/doc/html/AdminReference/auarf106.htm +++ /dev/null @@ -1,112 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos listhosts

    - - - - - - - -

    Purpose -

    Displays the contents of the /usr/afs/etc/CellServDB file -

    Synopsis -

    bos listhosts -server <machine name>  [-cell <cell name>]  
    -              [-noauth]  [-localauth]  [-help]
    -    
    -bos listh -s <machine name>  [-c <cell name>]  [-n]  [-l]  [-h]
    -   
    -bos getcell -server <machine name>  [-cell <cell name>]  
    -            [-noauth]  [-localauth]  [-help]
    -    
    -bos getc -s <machine name>  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos listhosts command formats and displays the list of a -cell's database server machines from the -/usr/afs/etc/CellServDB file on the server machine named by the --server argument. -

    To alter the list of machines, use the bos addhost and bos -removehost commands. -

    Options -

    -

    -server -
    Indicates the server machine from which to display the -/usr/afs/etc/CellServDB file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    For consistent performance in the cell, the output must be the same on -every server machine. The bos addhost reference page -explains how to keep the machines synchronized. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of the output names the cell to which the server machine -belongs. Each of the following lines names a database server machine -for that cell. -

    The Host number assigned to each database server machine is for -server-internal use only and is not the same as, nor necessarily related to, -the machine's IP address. The BOS Server assigned it as part of -performing the bos addhost command. -

    Examples -

    The following command displays the database server machines listed in the -/usr/afs/etc/CellServDB file on the machine -fs7.abc.com. -

       % bos listhosts fs7.abc.com
    -   Cell name is abc.com
    -       Host 1 is db1.abc.com
    -       Host 2 is db2.abc.com
    -       Host 3 is db3.abc.com
    -    
    -
    -

    Privilege Required -

    None -

    Related Information -

    CellServDB (server version) -

    KeyFile -

    bos -

    bos addhost -

    bos removehost -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf107.htm b/doc/html/AdminReference/auarf107.htm deleted file mode 100644 index 29bd39919..000000000 --- a/doc/html/AdminReference/auarf107.htm +++ /dev/null @@ -1,136 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos listkeys

    - - - - - - - -

    Purpose -

    Displays the server encryption keys from the -/usr/afs/etc/KeyFile file -

    Synopsis -

    bos listkeys -server <machine name>  [-showkey]  [-cell <cell name>]  
    -             [-noauth]  [-localauth]  [-help]
    -   
    -bos listk -se <machine name>  [-sh]  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos listkeys command formats and displays the list of server -encryption keys from the /usr/afs/etc/KeyFile file on the server -machine named by the -server argument. -

    To edit the list of keys, use the bos addkey and bos -removekey commands. -

    Cautions -

    Displaying actual keys on the standard output stream (by including the --showkey flag) is a security exposure. Displaying a checksum -is sufficient for most purposes. -

    Options -

    -

    -server -
    Indicates the server machine from which to display the KeyFile -file. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    For consistent performance in the cell, the output must be the same on -every server machine. The bos addkey reference page explains -how to keep the machines synchronized. -

    -showkey -
    Displays the octal digits that constitute each key. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes one line for each server encryption key listed in the -KeyFile file, identified by its key version number. -

    If the -showkey flag is included, the output displays the actual -string of eight octal numbers that constitute the key. Each octal -number is a backslash and three decimal digits. -

    If the -showkey flag is not included, the output represents each -key as a checksum, which is a decimal number derived by encrypting a constant -with the key. -

    Following the list of keys or checksums, the string Keys last -changed indicates when a key was last added to the KeyFile -file. The words All done indicate the end of the -output. -

    For mutual authentication to work properly, the output from the command -kas examine afs must match the key or checksum with the same key -version number in the output from this command. -

    Examples -

    The following example shows the checksums for the keys stored in the -KeyFile file on the machine -fs3.abc.com. -

       % bos listkeys fs3.abc.com
    -   key 1 has cksum 972037177
    -   key 3 has cksum 2825175022
    -   key 4 has cksum 260617746
    -   key 6 has cksum 4178774593
    -   Keys last changed on Mon Apr 12 11:24:46 1999.
    -   All done.
    -    
    -
    -

    The following example shows the actual keys from the KeyFile -file on the machine fs6.abc.com. -

       % bos listkeys fs6.abc.com -showkey
    -   key 0 is '\040\205\211\241\345\002\023\211'
    -   key 1 is '\343\315\307\227\255\320\135\244'
    -   key 2 is '\310\310\255\253\326\236\261\211'
    -   Keys last changed on Wed Mar 31 11:24:46 1999.
    -   All done.
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos addkey -

    bos removekey -

    bos setauth -

    kas examine -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf108.htm b/doc/html/AdminReference/auarf108.htm deleted file mode 100644 index 751b9abae..000000000 --- a/doc/html/AdminReference/auarf108.htm +++ /dev/null @@ -1,95 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos listusers

    - - - - - -

    Purpose -

    Lists the privileged users from the /usr/afs/etc/UserList file -

    Synopsis -

    bos listusers -server <machine name>  [-cell <cell name>]  
    -              [-noauth]   [-localauth]   [-help]
    -   
    -bos listu -s <machine name>  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos listusers command lists the user names from the -/usr/afs/etc/UserList file on the file server machine named by the --server argument. The users are authorized to issue -privileged bos and vos commands. -

    To edit the list of users, use the bos adduser and bos -removeuser commands. -

    Options -

    -

    -server -
    Indicates the server machine from which to display the UserList -file. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    For consistent performance in the cell, the output must be the same on -every server machine. The bos adduser reference page -explains how to keep the machines synchronized. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output lists the user name of each user entitled to issue privileged -bos and vos commands. -

    Examples -

    The following example lists the users from UserList file on the -machine fs4.abc.com. -

       % bos listusers fs4.abc.com
    -   SUsers are: pat smith jones terry
    -    
    -
    -

    Privilege Required -

    None -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos adduser -

    bos removeuser -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf109.htm b/doc/html/AdminReference/auarf109.htm deleted file mode 100644 index 9cc5cdc57..000000000 --- a/doc/html/AdminReference/auarf109.htm +++ /dev/null @@ -1,139 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos prune

    - - - - - - - - - - - - - -

    Purpose -

    Removes obsolete versions of files from the /usr/afs/bin and -/usr/afs/logs directories -

    Synopsis -

    bos prune -server <machine name>  [-bak]  [-old]  [-core]  [-all]
    -          [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos p -s <machine name>  [-b]  [-o]  [-co]  [-a]  
    -      [-ce <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos prune command removes files from the local disk of the -server machine named by the -server argument, as specified by one -or more of the following flags provided on the command line: -

      -

    • The -bak flag removes all files from the -/usr/afs/bin directory that have a .BAK -extension. -

    • The -old flag removes all files from the -/usr/afs/bin directory that have a .OLD -extension. -

    • The -core flag removes all files from the -/usr/afs/logs directory that have a core. -prefix. -

    • The -all flag removes all three types of files at once. -
    -

    (If none of these flags are included, the command appears to succeed, but -removes no files at all.) -

    To display the timestamp on the current, .BAK, and -.OLD versions of one or more files, use the bos -getdate command. -

    Options -

    -

    -server -
    Indicates the server machine from which to remove files. Identify -the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -bak -
    Removes all files from the /usr/afs/bin directory that have a -.BAK extension. Do not combine this flag and the --all flag. -

    -old -
    Removes all files from the /usr/afs/bin directory that have a -.OLD extension. Do not combine this flag and the --all flag. -

    -core -
    Removes all files from the /usr/afs/logs directory that have a -core. prefix. Do not combine this flag and the --all flag. -

    -all -
    Combines the effect of the -bak, -old, and --core flags. Do not combine this flag with any of those -three. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example removes all files from the /usr/afs/bin -directory on the machine fs3.abc.com that have a -.BAK or .OLD extension. -

       % bos prune -server fs3.abc.com -bak -old
    -    
    -
    -

    The following example removes all files from the /usr/afs/bin -directory on the machine db2.abc.com that have a -.BAK or .OLD extension, and all files from -the /usr/afs/logs directory that have a core. -prefix. -

       % bos prune -server db2.abc.com -all
    -    
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos getdate -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf110.htm b/doc/html/AdminReference/auarf110.htm deleted file mode 100644 index d0bc677f7..000000000 --- a/doc/html/AdminReference/auarf110.htm +++ /dev/null @@ -1,112 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos removehost

    - - - - - -

    Purpose -

    Removes a database server machine from the -/usr/afs/etc/CellServDB file -

    Synopsis -

    bos removehost -server <machine name>  -host <host name>+ 
    -               [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -  
    -bos removeh -s <machine name>  -ho <host name>+  [-c <cell name>]  
    -            [-n]  [-l]  [-he]
    -
    -

    Description -

    The bos removehost command removes the entry for each database -server machine specified with the -host argument from the -/usr/afs/etc/CellServDB file on the server machine named by the --server argument. -

    Cautions -

    After executing this command (and waiting for the Update Server to -propagate the changes, if it is used), restart the database server processes -on all database server machines to force election of a quorum that includes -the new set of machines listed in the /usr/afs/etc/CellServDB -file. The IBM AFS Quick Beginnings explains in more detail -how to add and remove database server machines. -

    Options -

    -

    -server -
    Indicates the server machine on which to change the -/usr/afs/etc/CellServDB file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is conventional to specify only the system control machine as a value for the --server argument. In cells that run the international -version of AFS, repeat the command for each file server machine. For -further discussion, see the introductory reference page for the bos -command suite. -

    -host -
    Specifies the fully-qualified host name (such as -fs2.abc.com) of each database server machine to -remove from the CellServDB file. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes the former database server machine -db2.abc.com from the CellServDB file on -the system control machine fs1.abc.com. -

       % bos removehost -server fs1.abc.com -host db2.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos addhost -

    bos listhosts -

    IBM AFS Quick Beginnings -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf111.htm b/doc/html/AdminReference/auarf111.htm deleted file mode 100644 index 5f1322c66..000000000 --- a/doc/html/AdminReference/auarf111.htm +++ /dev/null @@ -1,108 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos removekey

    - - - - - -

    Purpose -

    Removes a server encryption key from the /usr/afs/etc/KeyFile -file -

    Synopsis -

    bos removekey -server <machine name>  -kvno <key version number>+ 
    -              [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos removek -s <machine name>  -k <key version number>+  
    -            [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos removekey command removes each specified encryption key -from the /usr/afs/etc/KeyFile file on the machine named by the --server argument. Use the -kvno argument to -identify each key by its key version number; use the bos -listkeys command to display the key version numbers. -

    Cautions -

    Before removing a obsolete key, verify that the cell's maximum ticket -lifetime has passed since the current key was defined using the kas -setpassword and bos addkey commands. This ensures that -no clients still possess tickets encrypted with the obsolete key. -

    Options -

    -

    -server -
    Indicates the server machine on which to change the -/usr/afs/etc/KeyFile file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is conventional to specify only the system control machine as a value for the --server argument. In cells that run the international -version of AFS, repeat the command for each file server machine. For -further discussion, see the introductory reference page for the bos -command suite. -

    -kvno -
    Specifies the key version number of each key to remove. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes the keys with key version numbers 5 and 6 -from the KeyFile file on the system control machine -fs1.abc.com. -

       % bos removekey -server fs1.abc.com -kvno 5 6
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos addkey -

    bos listkeys -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf112.htm b/doc/html/AdminReference/auarf112.htm deleted file mode 100644 index 5fb99ce3e..000000000 --- a/doc/html/AdminReference/auarf112.htm +++ /dev/null @@ -1,100 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos removeuser

    - - - - - -

    Purpose -

    Removes a privileged user from the /usr/afs/etc/UserList file -

    Synopsis -

    bos removeuser -server <machine name>  -user <user names>+ 
    -               [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -  
    -bos removeu -s <machine name>  -u <user names>+  [-c <cell name>]  
    -            [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos removeuser command removes each user name specified with -the -user argument from the /usr/afs/etc/UserList file -on the machine named by the -server argument. -

    Options -

    -

    -server -
    Indicates the server machine on which to change the -/usr/afs/etc/UserList file. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    In cells that run the United States edition of AFS and use the Update -Server to distribute the contents of the /usr/afs/etc directory, it -is conventional to specify only the system control machine as a value for the --server argument. In cells that run the international -version of AFS, repeat the command for each file server machine. For -further discussion, see the introductory reference page for the bos -command suite. -

    -user -
    Specifies each user name to remove. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example removes the users pat and jones -from the UserList file on the system control machine -fs1.abc.com. -

       % bos removeuser -server fs1.abc.com -user pat jones
    -    
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    UserList -

    bos -

    bos addkey -

    bos listkeys -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf113.htm b/doc/html/AdminReference/auarf113.htm deleted file mode 100644 index aa9ee58ed..000000000 --- a/doc/html/AdminReference/auarf113.htm +++ /dev/null @@ -1,140 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos restart

    - - - - - - -

    Purpose -

    Restarts a server process -

    Synopsis -

    bos restart -server <machine name>  [-instance <instances>+]  [-bosserver]  
    -            [-all]  [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos res -s <machine name>  [-i <instances>+]  [-b]  [-a]  
    -        [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos restart command stops and immediately restarts server -processes on the server machine named by the -server -argument. Indicate which process or processes to restart by providing -one of the following arguments: -

      -

    • The -instance argument names each AFS server process to stop -and restart immediately, regardless of its status flag in the -/usr/afs/local/BosConfig file. Do not include -bosserver in the list of processes; use the --bosserver flag instead. -

    • The -bosserver flag stops all AFS server processes running on -the machine, including the BOS Server. A new BOS Server starts -immediately, and it starts a new instance of each process that is marked with -the Run status flag in the BosConfig file. -

    • The -all flag stops all AFS server processes running on the -machine, except the BOS Server, and immediately restarts the processes that -are marked with the Run status flag in the BosConfig -file. -
    -

    This command does not change a process's status flag in the -BosConfig file. -

    Options -

    -

    -server -
    Indicates the server machine on which to restart each process. -Identify the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -instance -
    Names each process to stop and then restart immediately regardless of its -status flag setting. Use the process name assigned with the --instance argument to the bos create command. The -output from the bos status command lists the names. Provide -this flag or one of the -bosserver or -all options, but -do not combine them. -

    -bosserver -
    Stops all AFS server processes running on the machine, including the BOS -Server. A new BOS Server instance immediately starts, and starts all -processes marked with the Run status flag in the -BosConfig file. Provide this flag or one of the --instance or -all options, but do not combine -them. -

    -all -
    Stops all AFS server processes running on the machine other than the BOS -Server, and immediately restarts the processes marked with the Run -status flag in the BosConfig file. Provide this flag or one -of the -instance or -bosserver options, but do not -combine them. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command stops and restarts all processes running on the -machine fs3.abc.com, including the BOS Server. -

       % bos restart -server fs3.abc.com -bosserver
    -    
    -
    -

    The following command stops and restarts all processes running on the -machine fs5.abc.com, excluding the BOS Server. -

       % bos restart -server fs5.abc.com -all
    -    
    -
    -

    The following command stops and restarts the Protection Server and Volume -Location (VL) Server processes on the machine -db3.abc.com: -

       % bos restart -server db3.abc.com -instance ptserver vlserver
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos create -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf114.htm b/doc/html/AdminReference/auarf114.htm deleted file mode 100644 index 05d25e919..000000000 --- a/doc/html/AdminReference/auarf114.htm +++ /dev/null @@ -1,298 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos salvage

    - - - - - - - - -

    Purpose -

    Restores internal consistency to a file system or volume -

    Synopsis -

    bos salvage -server <machine name>  [-partition <salvage partition>]
    -            [-volume <salvage volume number or volume name>]
    -            [-file <salvage log output file>]  [-all]  [-showlog] 
    -            [-parallel <# of max parallel partition salvaging>]  
    -            [-tmpdir <directory to place tmp files>] 
    -            [-orphans <ignore | remove | attach>] 
    -            [-cell <cell name>]
    -            [-noauth]  [-localauth]  [-help]
    -   
    -bos sa -se <machine name>  [-part <salvage partition>]
    -       [-v <salvage volume number or volume name>]  
    -       [-f <salvage log output file>]  [-a]  [-sh] 
    -       [-para <# of max parallel partition salvaging>]  
    -       [-t <directory to place tmp files>]   
    -       [-o <ignore | remove | attach>] 
    -       [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos salvage command salvages (restores internal consistency -to) one or more volumes on the file server machine named by the --server argument. When processing one or more partitions, -the command restores consistency to corrupted read/write volumes where -possible. For read-only or backup volumes, it inspects only the volume -header: -

      -

    • If the volume header is corrupted, the Salvager removes the volume -completely and records the removal in its log file, -/usr/afs/logs/SalvageLog. Issue the vos release -or vos backup command to create the read-only or backup volume -again. -

    • If the volume header is intact, the Salvager skips the volume (does not -check for corruption in the contents). However, if the File Server -notices corruption as it initializes, it sometimes refuses to attach the -volume or bring it online. In this case, it is simplest to remove the -volume by issuing the vos remove or vos zap -command. Then issue the vos release or vos backup -command to create it again. -
    -

    Use the indicated arguments to salvage a specific number of volumes: -

      -

    • To process all volumes on a file server machine, provide the --server argument and the -all flag. No volumes on -the machine are accessible to Cache Managers during the salvage operation, -because the BOS Server stops the File Server and Volume Server processes while -the Salvager runs. The BOS Server automatically restarts them when the -operation completes. -

    • To process all volumes on one partition, provide the -server -and -partition arguments. As for a salvage of the entire -machine, no volumes on the machine are accessible to Cache Managers during the -salvage operation. The BOS Server automatically restarts the File -Server and Volume Server when the operation completes. -

    • To salvage only one read/write volume, combine the -server, --partition, and -volume arguments. Only that -volume is inaccessible to Cache Managers, because the BOS Server does not -shutdown the File Server and Volume Server processes during the salvage of a -single volume. Do not name a read-only or backup volume with the --volume argument. Instead, remove the volume, using the -vos remove or vos zap command. Then create a new -copy of the volume with the vos release or vos backup -command. -
    -

    During the salvage of an entire machine or partition, the bos -status command reports the fs process's auxiliary status -as Salvaging file system. -

    The Salvager always writes a trace to the -/usr/afs/logs/SalvageLog file on the file server machine where it -runs. To record the trace in another file as well (either in AFS or on -the local disk of the machine where the bos salvage command is -issued), name the file with the -file argument. To display -the trace on the standard output stream as it is written to the -/usr/afs/logs/SalvageLog file, include the -showlog -flag. -

    By default, multiple Salvager subprocesses run in parallel: one for -each partition up to four, and four subprocesses for four or more -partitions. To increase or decrease the number of subprocesses running -in parallel, provide a positive integer value for the -parallel -argument. -

    If there is more than one server partition on a physical disk, the Salvager -by default salvages them serially to avoid the inefficiency of constantly -moving the disk head from one partition to another. However, this -strategy is often not ideal if the partitions are configured as logical -volumes that span multiple disks. To force the Salvager to salvage -logical volumes in parallel, provide the string all as the value -for the -parallel argument. Provide a positive integer to -specify the number of subprocesses to run in parallel (for example, --parallel 5all for five subprocesses), or omit the integer to run -up to four subprocesses, depending on the number of logical volumes being -salvaged. -

    The Salvager creates temporary files as it runs, by default writing them to -the partition it is salvaging. The number of files can be quite large, -and if the partition is too full to accommodate them, the Salvager terminates -without completing the salvage operation (it always removes the temporary -files before exiting). Other Salvager subprocesses running at the same -time continue until they finish salvaging all other partitions where there is -enough disk space for temporary files. To complete the interrupted -salvage, reissue the command against the appropriate partitions, adding the --tmpdir argument to redirect the temporary files to a local disk -directory that has enough space. -

    The -orphans argument controls how the Salvager handles orphaned -files and directories that it finds on server partitions it is -salvaging. An orphaned element is completely inaccessible -because it is not referenced by the vnode of any directory that can act as its -parent (is higher in the filespace). Orphaned objects occupy space on -the server partition, but do not count against the volume's quota. -

    Cautions -

    Running this command can result in data loss if the Salvager process can -repair corruption only by removing the offending data. Consult the -IBM AFS Administration Guide for more information. -

    Options -

    -

    -server -
    Indicates the file server machine on which to salvage volumes. -Identify the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -partition -
    Specifies a single partition on which to salvage all volumes. -Provide the complete partition name (for example /vicepa) or one of -the following abbreviated forms: -
       /vicepa     =     vicepa      =      a      =      0
    -   /vicepb     =     vicepb      =      b      =      1
    -   
    -
    -

    -

    After /vicepz (for which the index is 25) comes -

       /vicepaa    =     vicepaa     =      aa     =      26
    -   /vicepab    =     vicepab     =      ab     =      27
    -   
    -
    -

    and so on through -

       /vicepiv    =     vicepiv     =      iv     =      255
    -    
    -
    -

    -volume -
    Specifies the name or volume ID number of a read/write volume to -salvage. The -partition argument must be provided along with -this one. -

    -file -
    Specifies the complete pathname of a file into which to write a trace of -the salvage operation, in addition to the /usr/afs/logs/SalvageLog -file on the server machine. If the file pathname is local, the trace is -written to the specified file on the local disk of the machine where the -bos salvage command is issued. If the -volume -argument is included, the file can be in AFS, though not in the volume being -salvaged. Do not combine this argument with the -showlog -flag. -

    -all -
    Salvages all volumes on all of the partitions on the machine named by the --server argument. -

    -showlog -
    Displays the trace of the salvage operation on the standard output stream, -as well as writing it to the /usr/afs/logs/SalvageLog file. -Do not combine this flag with the -file argument. -

    -parallel -
    Specifies the maximum number of Salvager subprocesses to run in -parallel. Provide one of three values: -
      -

    • An integer from the range 1 to 32. A value of -1 means that a single Salvager process salvages the partitions -sequentially. -

    • The string all to run up to four Salvager subprocesses in -parallel on partitions formatted as logical volumes that span multiple -physical disks. Use this value only with such logical volumes. -

    • The string all followed immediately (with no intervening space) -by an integer from the range 1 to 32, to run the -specified number of Salvager subprocesses in parallel on partitions formatted -as logical volumes. Use this value only with such logical -volumes. -
    -

    The BOS Server never starts more Salvager subprocesses than there are -partitions, and always starts only one process to salvage a single -volume. If this argument is omitted, up to four Salvager subprocesses -run in parallel. -

    -tmpdir -
    Specifies the full pathname of a local disk directory to which the -Salvager process writes temporary files as it runs. If this argument is -omitted, or specifies an ineligible or nonexistent directory, the Salvager -process writes the files to the partition it is currently salvaging. -

    -orphans -
    Controls how the Salvager handles orphaned files and directories. -Choose one of the following three values: -
    -

    ignore -
    Leaves the orphaned objects on the disk, but prints a message to the -/usr/afs/logs/SalvageLog file reporting how many orphans were found -and the approximate number of kilobytes they are consuming. This is the -default if the -orphans argument is omitted. -

    remove -
    Removes the orphaned objects, and prints a message to the -/usr/afs/logs/SalvageLog file reporting how many orphans were -removed and the approximate number of kilobytes they were consuming. -

    attach -
    Attaches the orphaned objects by creating a reference to them in the vnode -of the volume's root directory. Since each object's actual -name is now lost, the Salvager assigns each one a name of the following -form: -
    -

    _ _ORPHANFILE_ _.index for files -

    _ _ORPHANDIR_ _.index for directories -

    -

    -

    where index is a two-digit number that uniquely identifies each -object. The orphans are charged against the volume's quota and -appear in the output of the ls command issued against the -volume's root directory. -

    -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command salvages all volumes on the /vicepd -partition of the machine db3.abc.com: -

       % bos salvage -server db3.abc.com -partition /vicepd
    -   
    -
    -

    The following command salvages the volume with volume ID number 536870988 -on partition /vicepb of the machine -fs2.abc.com: -

       % bos salvage -server fs2.abc.com -partition /vicepb -volume 536870988
    -   
    -
    -

    The following command salvages all volumes on the machine -fs4.abc.com. Six Salvager processes run in -parallel rather than the default four. -

       % bos salvage -server fs4.abc.com -all -parallel 6
    -    
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    SalvageLog -

    UserList -

    bos -

    salvager -

    vos backup -

    vos release -

    vos remove -

    vos zap -

    IBM AFS Administration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf115.htm b/doc/html/AdminReference/auarf115.htm deleted file mode 100644 index c53af239b..000000000 --- a/doc/html/AdminReference/auarf115.htm +++ /dev/null @@ -1,112 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos setauth

    - - - - - -

    Purpose -

    Sets authorization checking requirements for all server processes -

    Synopsis -

    bos setauth -server <machine name>  
    -     -authrequired <on or off: authentication required for admin requests>
    -     [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos seta -s <machine name>
    -         -a <on or off: authentication required for admin requests>  
    -         [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos setauth command enables or disables authorization -checking on the server machine named by the -server -argument. When authorization checking is enabled (the normal case), the -AFS server processes running on the machine verify that the issuer of a -command meets its privilege requirements. When authorization checking -is disabled, server processes perform any action for anyone, including the -unprivileged user anonymous; this security exposure precludes -disabling of authorization checking except during installation or -emergencies. -

    To indicate to the server processes that authorization checking is -disabled, the BOS Server creates the zero-length file -/usr/afs/local/NoAuth on its local disk. All AFS server -processes constantly monitor for the NoAuth file's presence -and do not check for authorization when it is present. The BOS Server -removes the file when this command is used to reenable authorization -checking. -

    Cautions -

    Do not create the NoAuth file directly, except when directed by -instructions for dealing with emergencies (doing so requires being logged in -as the local superuser root). Use this command -instead. -

    Options -

    -

    -server -
    Indicates the server machine on which to enable or disable authorization -checking. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    -authrequired -
    Enables authorization checking if the value is on, or disables -it if the value is off. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example disables authorization checking on the machine -fs7.abc.com: -

       % bos setauth -server fs7.abc.com -authrequired off
    -    
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    KeyFile -

    NoAuth -

    UserList -

    bos -

    bos restart -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf116.htm b/doc/html/AdminReference/auarf116.htm deleted file mode 100644 index e2ef79fc3..000000000 --- a/doc/html/AdminReference/auarf116.htm +++ /dev/null @@ -1,128 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos setcellname

    - - - - - - - - -

    Purpose -

    Sets the cell's name in the /usr/afs/etc/ThisCell and -/usr/afs/etc/CellServDB files -

    Synopsis -

    bos setcellname -server <machine name>  -name <cell name> 
    -                [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -   
    -bos setc -s <machine name>  -n <cell name>  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos setcellname command establishes the cell's name and -makes the server machine named by the -server argument a member of -it, by recording the value of the -name argument in two files which -it creates on the local disk: -

      -

    • /usr/afs/etc/ThisCell -

    • /usr/afs/etc/CellServDB. The cell name appears on the -first line in the file, preceded by the required > symbol. -The machine name specified with the -server argument appears on the -second line along with its IP address as obtained from the cell's naming -service. The machine is thus designated as the cell's first -database server machine. -
    -

    Cautions -

    Issue this command only when the installing the cell's first AFS -server machine. The IBM AFS Quick Beginnings explains how to -copy over the ThisCell and CellServDB files from this or -another appropriate machine during installation of additional server -machines. -

    Be sure to choose a satisfactory cell name when issuing this command, -because changing a cell's name is very complicated; for one thing, -it requires changing every password in the Authentication Database. -Consult the IBM AFS Administration Guide for advice on choosing a -cell name. If changing the cell's name is absolutely necessary, -contact AFS Product Support for complete instructions. -

    Options -

    -

    -server -
    Indicates the server machine on which to set the cell name in the -ThisCell and CellServDB file. It is always the -first machine installed in a cell. Identify the machine by IP address -or its host name (either fully-qualified or abbreviated unambiguously). -For details, see the introductory reference page for the bos -command suite. -

    -name -
    Defines the cell name, using standard Internet domain name format (the -actual domain name is usually appropriate). Examples are -abc.com for the ABC Corporation and -stateu.edu for the State University. It must match -the value of the -cell argument, if that is provided. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command defines the cell name abc.com in -the ThisCell and CellServDB files on the machine -fs1.abc.com as it is installed as the cell's -first server machine. -

       % bos setcellname -server fs1.abc.com -name abc.com
    -   
    -
    -

    Privilege Required -

    Authorization checking is normally turned off during installation, which is -the only recommended time to use this command; in this case no privilege -is required. If authorization checking is turned on, the issuer must be -listed in the /usr/afs/etc/UserList file on the machine named by -the -server argument, or must be logged in as the local superuser -root if the -localauth flag is included. -

    Related Information -

    CellServDB (server version) -

    KeyFile -

    ThisCell (server version) -

    UserList -

    bos -

    IBM AFS Quick Beginnings -

    IBM AFS Administration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf117.htm b/doc/html/AdminReference/auarf117.htm deleted file mode 100644 index deafd52e5..000000000 --- a/doc/html/AdminReference/auarf117.htm +++ /dev/null @@ -1,158 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos setrestart

    - - - - - - -

    Purpose -

    Sets the date and time at which the BOS Server restarts processes -

    Synopsis -

    bos setrestart -server <machine name>  -time <time to restart server>  
    -               [-general]   [-newbinary]  [-cell <cell name>]  
    -               [-noauth]  [-localauth]  [-help]  
    -    
    -bos setr -s <machine name>  -t <time to restart server>  [-g]  [-ne] 
    -         [-c <cell name>]  [-no]  [-l]  [-h]
    -
    -

    Description -

    The bos setrestart command records in the -/usr/afs/local/BosConfig file the times at which the BOS Server -running on the server machine named by the -server argument -performs two types of restarts: -

      -

    • A general restart. By default, once per week the BOS -Server restarts itself and then any AFS process marked with the Run -status flag in the BosConfig file (equivalent in effect to issuing -the bos restart command with the -bosserver -flag). The default setting is 4:00 a.m. each Sunday -morning. -

    • A binary restart. By default, once per day the BOS -Server restarts any currently running process for which the timestamp on the -binary file in the /usr/afs/bin directory is later than the time -the process last started or restarted. The default is 5:00 -a.m. each day. -
    -

    Cautions -

    Restarting a process makes it unavailable for a period of time. The -fs process has potentially the longest outage, depending on how -many volumes the file server machine houses (the File Server and Volume Server -reattach each volume when they restart). The default settings are -designed to coincide with periods of low usage, so that the restarts disturb -the smallest possible number of users. -

    If the setting specified with the -time argument is within one -hour of the current time, the BOS Server does not restart any processes until -the next applicable opportunity (the next day for binary restarts, or the next -week for general restarts). -

    The command changes only one type of restart setting at a time; issue -the command twice to change both settings. -

    Options -

    -

    -server -
    Indicates the server machine on which to set a new restart time. -Identify the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -time -
    Specifies the restart time. By convention the general restart is -defined as weekly (specifies both a day and a time), and the binary restart is -defined as daily (specifies only a time). However, it is acceptable to -define a daily general restart or weekly binary restart. -

    There are four acceptable values for either type of restart setting: -

      -

    • The string never, which directs the BOS Server never to perform -the indicated type of restart. -

    • The string now, which directs the BOS Server to perform the -restart immediately and never again. -

    • A time of day (the conventional type of value for the binary restart -time). Separate the hours and minutes with a colon -(hh:MM), and use either 24-hour format, or a value -in the range from 1:00 through 12:59 with -the addition of am or pm. For example, both -14:30 and "2:30 pm" indicate 2:30 in -the afternoon. Surround this parameter with double quotes (" -") if it contains a space. -

    • A day of the week and time of day, separated by a space and surrounded -with double quotes (" "). This is the conventional type of -value for the general restart. For the day, provide either the whole -name or the first three letters, all in lowercase letters (sunday -or sun, thursday or thu, and so on). -For the time, use the same format as when specifying the time alone. -
    -

    If desired, precede a time or day and time definition with the string -every or at. These words do not change the -meaning, but possibly make the output of the bos getrestart command -easier to understand. -

    -general -
    Sets the general restart time. -

    -newbinary -
    Sets the binary restart time. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command sets the general restart time on the machine -fs4.abc.com to Saturday at 3:30 am. -

       % bos setrestart -server fs4.abc.com -time "sat 3:30" -general
    -   
    -
    -

    The following command sets the binary restart time on the machine -fs6.abc.com to 11:45 pm. -

       % bos setrestart -server fs6.abc.com -time 23:45 -newbinary
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos getrestart -

    bos restart -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf118.htm b/doc/html/AdminReference/auarf118.htm deleted file mode 100644 index 6dac75acf..000000000 --- a/doc/html/AdminReference/auarf118.htm +++ /dev/null @@ -1,122 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos shutdown

    - - - - - - -

    Purpose -

    Stops a process without changing its status flag in the -/usr/afs/local/BosConfig file -

    Synopsis -

    bos shutdown -server <machine name>  [-instance <instances>+]  [-wait]  
    -             [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -    
    -bos sh -s <machine name>  [-i <instances>+]  [-w]  
    -       [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos shutdown command stops, on the server machine named by -the -server argument, either -

      -

    • All of the currently running AFS server processes, except the BOS Server -

    • Only the processes specified by the -instance argument -
    -

    This command does not change a process's status flag in the -/usr/afs/local/BosConfig file, but only in the BOS Server's -memory. To stop a process and change its BosConfig status -flag, use the bos stop command instead. -

    Once stopped with this command, a process does not run again until an -administrator starts it by using the bos start, bos -startup, or bos restart command, or until the BOS Server -restarts (assuming that the process's BosConfig status flag is -Run). -

    Options -

    -

    -server -
    Indicates the server machine on which to stop processes. Identify -the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -instance -
    Names each process to stop. Use the process name assigned with the --instance argument to the bos create command. The -output from the bos status command lists the names. Omit -this argument to stop all processes other than the BOS Server. -

    -wait -
    Delays the return of the command shell prompt until all processes actually -stop. If this argument is omitted, the prompt returns almost -immediately even if all processes are not stopped. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command stops all processes other than the BOS Server on the -machine fs3.abc.com. -

       % bos shutdown fs3.abc.com
    -   
    -
    -

    The following command stops the upserver process (server portion -of the Update Server) on the machine -fs5.abc.com. -

       % bos shutdown -server fs5.abc.com -instance upserver
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos create -

    bos restart -

    bos start -

    bos startup -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf119.htm b/doc/html/AdminReference/auarf119.htm deleted file mode 100644 index 48a34476f..000000000 --- a/doc/html/AdminReference/auarf119.htm +++ /dev/null @@ -1,108 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos start

    - - - - - - - - -

    Purpose -

    Starts a process after setting its status flag in the -/usr/afs/local/BosConfig file -

    Synopsis -

    bos start -server <machine name>  -instance <server process name>+ 
    -          [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -    
    -bos start -s <machine name>  -i <server process name>+  
    -          [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos start command sets the status flag for each process -specified by the -instance argument to Run in the -/usr/afs/local/BosConfig file and in the BOS Server's memory -on the server machine named by the -server argument, then starts -it. If the process is already running, the command's only effect -is to guarantee that the status flag is Run; it does not -restart the process. -

    To start a process without changing its status flag in the -BosConfig file, use the bos startup command -instead. -

    Options -

    -

    -server -
    Indicates the server machine on which to start processes. Identify -the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -instance -
    Names each process to start. Use the process name assigned with the --instance argument to the bos create command. The -output from the bos status command lists the names. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command changes the status flag for the -upclientbin and upclientetc processes to Run -in the BosConfig file on the machine -fs6.abc.com and starts them running. -

       % bos start -server fs6.abc.com -instance upclientbin upclientetc
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos create -

    bos startup -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf120.htm b/doc/html/AdminReference/auarf120.htm deleted file mode 100644 index 9a6aa5429..000000000 --- a/doc/html/AdminReference/auarf120.htm +++ /dev/null @@ -1,112 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos startup

    - - - - - - -

    Purpose -

    Starts a process without changing its status flag in the -/usr/afs/local/BosConfig file -

    Synopsis -

    bos startup -server <machine name>  [-instance <instances>+] 
    -            [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -    
    -bos startu -s <machine name>  [-i <instances>+]  
    -           [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos startup command starts, on the server machine named by -the -server argument, either -

      -

    • All AFS server processes not currently running but marked with the -Run status flag in the /usr/afs/local/BosConfig file -

    • Each process specified by -instance argument, even if its -status flag in the BosConfig file is NotRun. -
    -

    To start a process and set its BosConfig status flag to -Run, use the bos start command instead. -

    Options -

    -

    -server -
    Indicates the server machine on which to start processes. Identify -the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -instance -
    Names each process to start. Use the process name assigned with the --instance argument to the bos create command. The -output from the bos status command lists the names. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command starts all processes marked with status flag -Run in the BosConfig file on the machine -fs3.abc.com that are not currently running. -

       % bos startup fs3.abc.com
    -   
    -
    -

    The following command starts the buserver, kaserver, -ptserver, and vlserver processes running on the machine -db2.abc.com, even if their status flags in the -BosConfig file are NotRun. -

       % bos startup -server db2.abc.com -instance buserver kaserver ptserver vlserver
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos create -

    bos start -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf121.htm b/doc/html/AdminReference/auarf121.htm deleted file mode 100644 index fc10548c8..000000000 --- a/doc/html/AdminReference/auarf121.htm +++ /dev/null @@ -1,235 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos status

    - - - - - - - -

    Purpose -

    Displays the status of server processes -

    Synopsis -

    bos status -server <machine name>  [-instance <server process name>+]  
    -           [-long]  [-cell <cell name>]  [-noauth]  [-localauth]  [-help] 
    -    
    -bos stat -s <machine name>  [-i <server process name>+] 
    -         [-lon]  [-c <cell name>]  [-n]  [-loc]  [-h] 
    -
    -

    Description -

    The bos status command reports the status of processes on the -server machine named by the -server argument, either -

      -

    • All of the AFS server processes listed in the -/usr/afs/local/BosConfig file -

    • Only these processes named by the -instance argument -
    -

    Options -

    -

    -server -
    Indicates the server machine for which to report server process -status. Identify the machine by IP address or its host name (either -fully-qualified or abbreviated unambiguously). For details, see the -introductory reference page for the bos command suite. -

    -instance -
    Names each process for which to report status. Use the process name -assigned with the -instance argument to the bos -command. The output from the bos status command lists the -names. -

    -long -
    Produces more detailed status information. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output for a process includes at least one line, which reports one of -the following as the process's current status: -

      -

    • currently running normally. The process's status -flag in the BosConfig file is Run. For -cron entries, this message indicates only that the command is -scheduled to run, not necessarily that it was executing when the bos -status command was issued. -

    • disabled. The process is not running, and its -BosConfig status flag is NotRun. -

    • temporarily disabled. The process is not running -although its status flag in the BosConfig file is -Run. Either an administrator used the bos -shutdown command to stop it, or the -

    • BOS Server stopped trying to restart it after numerous failed -attempts. In the second case, the auxiliary message is stopped for - too many errors. -

    • temporarily enabled. The process is running although its -status flag in the BosConfig file is NotRun. An -administrator has used the bos startup command to start it. -
    -

    If one of the following special circumstances applies to the process, the -indicated message appears in its entry: -

      -

    • has core file. The process failed and created a core -file in the /usr/afs/logs directory. If the BOS Server was -able to restart the process after the failure, the primary status is -currently running normally. -

    • stopped for too many errors. The reason for the primary -status temporarily disabled is that the BOS Server's attempts -to restart the process all failed. -
    -

    The entry for the fs process always includes a second line to -report the process's Auxiliary status, which is one of the -following: -

      -

    • file server running. The File Server and Volume Server -components of the File Server process are running normally. -

    • salvaging file system. The Salvager is running, so the -File Server and Volume Server are temporarily disabled. The BOS Server -restarts them as soon as the Salvager is finished. -
    -

    The entry for a cron process includes an Auxiliary -status that reports when the command will next execute. -

    If the -long flag is used, each entry includes the following -additional information: -

      -

    • The process's type (simple, fs, or -cron). -

    • The day and time the process last started or restarted. -

    • The number of proc starts, which is how many times the BOS -Server has started or restarted the process since it started itself. -

    • The Last exit time when the process (or one of the component -processes in the fs process) last terminated. This line does -not appear if the process has not terminated since the BOS Server -started. -

    • The Last error exit time when the process (or one of the -component processes in the fs process) last failed due to an -error. A further explanation such as due to shutdown request -sometimes appears. This line does not appear if the process has not -failed since the BOS Server started. -

    • Each command that the BOS Server invokes to start the process, as -specified by the -cmd argument to the bos create -command. -

    • The pathname of the notifier program that the BOS Server invokes when the -process terminates (if any), as specified by the -notifier argument -to the bos create command. -
    -

    If the -long flag is provided and the BOS Server discovers that -the mode bits on files and subdirectories in the local /usr/afs -directory differ from the expected values, it prints the following warning -message: -

       Bosserver reports inappropriate access on server directories
    -   
    -
    -

    The following chart summarizes the expected mode bit settings. A -question mark indicates that the BOS Server does not check that bit. -
    - - - - - - - - - - -
    /usr/afs -drwxr?xr-x -
    /usr/afs/backup -drwx???--- -
    /usr/afs/bin -drwxr?xr-x -
    /usr/afs/db -drwx???--- -
    /usr/afs/etc -drwxr?xr-x -
    /usr/afs/etc/KeyFile --rw????--- -
    /usr/afs/etc/UserList --rw?????-- -
    /usr/afs/local -drwx???--- -
    /usr/afs/logs -drwxr?xr-x -
    -

    Examples -

    The following example command displays the status of processes on the -machine fs3.abc.com: -

       % bos status fs3.abc.com
    -   Instance buserver, currently running normally.
    -   Instance kaserver, currently running normally.
    -   Instance ptserver, currently running normally.
    -   Instance vlserver, currently running normally.
    -   Instance fs, has core file, currently running normally.
    -       Auxiliary status is: file server running.
    -   Instance upserver, currently running normally.
    -   Instance runntp, currently running normally.
    -   
    -
    -

    The following example command displays a detailed status report for the -fs and ptserver processes on the machine -fs1.abc.com. -

       % bos status -server fs1.abc.com -instance fs ptserver -long
    -   Instance fs, (type is fs), currently running normally.
    -      Auxiliary status is: file server running.
    -      Process last started at Wed Jan 7 5:34:49 1998 (3 proc starts)
    -      Last exit at Wed Jan 7 5:34:49 1998 
    -      Last error exit at Wed Jan 7 5:34:49 1998, due to shutdown 
    -          request
    -      Command 1 is '/usr/afs/bin/fileserver'
    -      Command 2 is '/usr/afs/bin/volserver'
    -      Command 3 is '/usr/afs/bin/salvager'
    -   Instance ptserver, (type is simple) currently running normally.
    -      Process last started at Tue Jan 6 8:29:19 1998 (1 proc starts)
    -      Command 1 is '/usr/afs/bin/ptserver'
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    BosConfig -

    KeyFile -

    bos -

    bos create -

    bos shutdown -

    bos startup -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf122.htm b/doc/html/AdminReference/auarf122.htm deleted file mode 100644 index af761e35c..000000000 --- a/doc/html/AdminReference/auarf122.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos stop

    - - - - - - - - -

    Purpose -

    Stops a process after changing its status flag in the -/usr/afs/local/BosConfig file -

    Synopsis -

    bos stop -server <machine name>  -instance <server process name>+ 
    -         [-wait]  [-cell <cell name>]  [-noauth]  [-localauth]  [-help]
    -     
    -bos sto -s <machine name>  -i <server process name>+
    -        [-w]  [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos stop command sets the status flag for each process -specified with the -instance argument to NotRun in the -/usr/afs/local/BosConfig file on the server machine named by the --server argument, then stops it. -

    To stop a process without changing its BosConfig status flag, -use the bos shutdown command instead. -

    Options -

    -

    -server -
    Indicates the server machine on which to stop processes. Identify -the machine by IP address or its host name (either fully-qualified or -abbreviated unambiguously). For details, see the introductory reference -page for the bos command suite. -

    -instance -
    Names each process to stop. Use the process name assigned with the --instance argument to the bos create command. The -output from the bos status command lists the names. -

    -wait -
    Delays the return of the command shell prompt until all processes actually -stop. If this argument is omitted, the prompt returns almost -immediately even if all processes are not stopped. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example command stops the upserver and -runntp on the machine fs7.abc.com. -

       % bos stop -server fs7.abc.com -instance upserver runntp
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos create -

    bos shutdown -

    bos status -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf123.htm b/doc/html/AdminReference/auarf123.htm deleted file mode 100644 index d2c463f23..000000000 --- a/doc/html/AdminReference/auarf123.htm +++ /dev/null @@ -1,122 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bos uninstall

    - - - - - - - - - -

    Purpose -

    Reverts to the former version of a process's binary file -

    Synopsis -

    bos uninstall -server <machine name>  -file <files to uninstall>+ 
    -              [-dir <destination dir>]  [-cell <cell name>]  
    -              [-noauth]  [-localauth]  [-help]
    -   
    -bos u -s <machine name>  -f <files to uninstall>+  [-d <destination dir>] 
    -      [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The bos uninstall command replaces each binary file specified by -the -file argument with its .BAKversion on the -server machine named by the -server argument, which is normally the -binary distribution machine for its CPU/operating system type. It also -changes the extension on the current .OLD version (if any) -to .BAK. Each binary file must reside in the local -/usr/afs/bin directory unless the -dir argument names an -alternate directory. -

    To start using the reverted binary immediately, issue the bos -restart command. Otherwise, the BOS Server automatically restarts -the process at the time defined in the /usr/afs/local/BosConfig -file; use the bos getrestart command to display the time and -the bos setrestart time to set it. -

    Options -

    -

    -server -
    Indicates the binary distribution machine on which to revert to the -.BAK version of binaries. Identify the machine by IP -address or its host name (either fully-qualified or abbreviated -unambiguously). For details, see the introductory reference page for -the bos command suite. -

    If the machine is not a binary distribution machine and is running an -upclientbin process, then the files are overwritten the next time -the upclientbin process fetches the corresponding file from the -distribution machine (by default within five minutes). -

    -file -
    Names each binary file to replace with its .BAK -version. -

    -dir -
    Provides the complete pathname of the local disk directory containing each -file named by the -file argument. It is necessary only if -the binaries are not in the /usr/afs/bin directory. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory bos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory bos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The bos command -interpreter presents the ticket to the BOS Server during mutual -authentication. Do not combine this flag with the -cell or --noauth options. For more details, see the introductory -bos reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example command overwrites the -/usr/afs/bin/kaserver file on the machine -fs4.abc.com with its .BAKversion, -and the current .BAK version by the -.OLDversion. -

       % bos uninstall -server fs4.abc.com -file kaserver
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine named by the -server argument, or must be logged onto a -server machine as the local superuser root if the --localauth flag is included. -

    Related Information -

    BosConfig -

    KeyFile -

    UserList -

    bos -

    bos getrestart -

    bos restart -

    bos setrestart -

    upclient -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf124.htm b/doc/html/AdminReference/auarf124.htm deleted file mode 100644 index 75b015863..000000000 --- a/doc/html/AdminReference/auarf124.htm +++ /dev/null @@ -1,164 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    bosserver

    - - - -

    Purpose -

    Initializes the BOS Server -

    Synopsis -

    bosserver [-noauth]  [-log]  [-enable_peer_stats]  [-enable_process_stats]  
    -          [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The bosserver command initializes the Basic OverSeer (BOS) -Server (bosserver process). In the conventional -configuration, the binary file is located in the /usr/afs/bin -directory on a file server machine. -

    The BOS Server must run on every file server machine and helps to automate -file server administration by performing the following tasks: -

      -

    • Monitors the other AFS server processes on the local machine, to make sure -they are running correctly. -

    • Automatically restarts failed processes, without contacting a human -operator. When restarting multiple server processes simultaneously, the -BOS Server takes interdependencies into account and initiates restarts in the -correct order. - - -

    • Processes commands from the bos suite that administrators issue -to verify the status of server processes, install and start new processes, -stop processes either temporarily or permanently, and restart halted -processes. -

    • Manages system configuration information: the files that list the -cell's server encryption keys, database server machines, and users -privileged to issue commands from the bos and vos -suites. -
    -

    The BOS Server logs a default set of important events in the file -/usr/afs/logs/BosLog. To record the name of any user who -performs a privileged bos command (one that requires being listed -in the /usr/afs/etc/UserList file), add the -log -flag. To display the contents of the BosLog file, use the -bos getlog command. -

    The first time that the BOS Server initializes on a server machine, it -creates several files and subdirectories in the local /usr/afs -directory, and sets their mode bits to protect them from unauthorized -access. Each time it restarts, it checks that the mode bits still -comply with the settings listed in the following chart. A question mark -indicates that the BOS Server initially turns off the bit (sets it to the -hyphen), but does not check it at restart. -
    - - - - - - - - - - -
    /usr/afs -drwxr?xr-x -
    /usr/afs/backup -drwx???--- -
    /usr/afs/bin -drwxr?xr-x -
    /usr/afs/db -drwx???--- -
    /usr/afs/etc -drwxr?xr-x -
    /usr/afs/etc/KeyFile --rw????--- -
    /usr/afs/etc/UserList --rw?????-- -
    /usr/afs/local -drwx???--- -
    /usr/afs/logs -drwxr?xr-x -
    -

    If the mode bits do not comply, the BOS Server writes the following warning -to the BosLog file: -

       Bosserver reports inappropriate access on server directories
    -   
    -
    -

    However, the BOS Server does not reset the mode bits, so the administrator -can set them to alternate values if desired (with the understanding that the -warning message then appears at startup). -

    Options -

    -

    -noauth -
    Assigns the unprivileged identity anonymous to the issuer, -which is useful only when authorization checking is disabled on the server -machine (for instance, during the installation of a file server -machine.) -

    -log -
    Records in the /usr/afs/logs/BosLog file the names of all users -who successfully issue a privileged bos command (one that requires -being listed in the /usr/afs/etc/UserList file). -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command initializes the BOS Server and logs the names of -users who issue privileged bos commands. -

       % bosserver -log &
    -   
    -
    -

    Privilege Required -

    The issuer most be logged onto a file server machine as the local superuser -root. -

    Related Information -

    BosConfig -

    BosLog -

    bos -

    bos create -

    bos exec -

    bos getlog -

    bos getrestart -

    bos restart -

    bos shutdown -

    bos start -

    bos startup -

    bos status -

    bos stop -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf125.htm b/doc/html/AdminReference/auarf125.htm deleted file mode 100644 index 3fce26679..000000000 --- a/doc/html/AdminReference/auarf125.htm +++ /dev/null @@ -1,147 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    buserver

    - - - - - - -

    Purpose -

    Initializes the Backup Server -

    Synopsis -

    buserver [-database <database directory>] 
    -         [-cellservdb <cell configuration directory>]
    -         [-resetdb]  [-noauth]  [-smallht] 
    -         [-servers <list of ubik database servers>+]  
    -         [-enable_peer_stats]  [-enable_process_stats] 
    -         [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The buserver command initializes the Backup Server, which runs -on database server machines and maintains the Backup Database. In the -conventional configuration, the binary file is located in the -/usr/afs/bin directory on a file server machine. -

    The buserver command is not normally issued at the command shell -prompt, but rather placed into a database server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a file server machine as the local superuser -root. -

    As it initializes, the Backup Server process creates the two files that -constitute the Backup Database, bdb.DB0 and -bdb.DBSYS1, in the /usr/afs/db directory if they -do not already exist. The Backup Database houses information about -volume sets and entries, the dump hierarchy, Tape Coordinators, and previously -performed dump sets. Use the commands in the backup suite to -administer the database. -

    The Backup Server records a trace of its activity in the -/usr/afs/logs/BackupLog file. Use the bos getlog -command to display the contents of the file. -

    Cautions -

    The buserver process reserves port 7021 for its -use. Unexpected behavior can occur if another process tries to reserve -this port while the buserver process is running. -

    Options -

    -

    -database -
    Specifies the pathname of an alternate directory for the Backup Database -files, ending in a final slash (/). If this argument is not -provided, the default is the /usr/afs/db directory. -

    -cellservdb -
    Specifies the pathname of the directory from which the Backup Server reads -in an alternate version of the CellServDB file. This -argument is mandatory for correct functioning when the Backup Server is -running on a subset of the cell's database server machines that is not a -majority of the machines listed in the standard -/usr/afs/etc/CellServDB file (which the Backup Server consults if -this argument is not provided). It is not appropriate in any other -circumstances. -

    -resetdb -
    Removes all of the information in the Backup Database files in the -/usr/afs/db directory, leaving zero-length versions of them. -The backup operator must recreate the configuration entries in the database -(for volume sets, the dump hierarchy and so on) before performing backup -operations. -

    -noauth -
    Establishes an unauthenticated connection between the issuer and the -Backup Server, in which the Backup Server treats the issuer as the -unprivileged user anonymous. It is useful only when -authorization checking is disabled on the database server machine. In -normal circumstances, the Backup Server allows only authorized (privileged) -users to issue commands that affect or contact the Backup Database, and -refuses to perform such an action even if the -noauth flag is -used. -

    -smallht -
    Directs the Backup Server to use smaller internal hash tables for the -Backup Database, which reduces memory requirements but can make data access -take longer. -

    -servers -
    Specifies the database server machines on which to start the Backup -Server. Use this argument if running the Backup Server on a subset of -the database server machines that is not a majority of the machines listed in -the /usr/afs/etc/CellServDB file. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example bos create command creates a -buserver process on the file server machine -fs3.abc.com. It appears here on two lines only -for legibility. -

       % bos create -server fs3.abc.com -instance buserver  \
    -                -type simple -cmd /usr/afs/bin/buserver
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BackupLog -

    BosConfig -

    CellServDB (server version) -

    bdb.DB0 and bdb.DBSYS1 -

    backup -

    bos create -

    bos getlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf126.htm b/doc/html/AdminReference/auarf126.htm deleted file mode 100644 index d114049af..000000000 --- a/doc/html/AdminReference/auarf126.htm +++ /dev/null @@ -1,194 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    butc

    - - - - - - -

    Purpose -

    Initializes the Tape Coordinator process -

    Synopsis -

    butc [-port <port offset>]  [-debuglevel < 0 | 1 | 2 >]  
    -     [-cell <cell name>]  [-noautoquery]  
    -     [-localauth]  [-help]
    -        
    -butc [-p <port offset>]  [-d < 0 | 1 | 2 >]  
    -     [-c <cell name>]  [-n]  [-l]  [-h]
    -
    -

    Description -

    The butc command initializes a Tape Coordinator process on a -Tape Coordinator machine, enabling an operator to direct Backup System -requests to the associated tape device or backup data file. (The Tape -Coordinator controls a backup data file if the FILE YES instruction -appears in the /usr/afs/backup/CFG_device_name file that -corresponds to the Tape Coordinator's entry in the -/usr/afs/backup/tapeconfig file. For the sake of simplicity, -the following discusses tape devices only.) -

    It is conventional to start and run the Tape Coordinator in the -foreground. In this case, it runs on its own connection, which is -unavailable for any other use and must remain open the entire time the Tape -Coordinator is to accept backup requests and while it is executing -them. (When using a window manager, the connection corresponds to a -separate command shell window.) The Tape Coordinator can run in the -background if the CFG_device_name file is configured to -eliminate any need for the Tape Coordinator to prompt the operator. In -both the foreground and background, the Tape Coordinator writes operation -traces and other output to the standard output stream on the connection over -which it was started. Use the -debuglevel argument to -control the amount of information that appears. The Tape Coordinator -also writes traces and error messages to two files in the local -/usr/afs/backup directory: -

      -

    • The TE_device_name file records problems that the Tape -Coordinator encounters as it executes backup operations. -

    • The TL_device_name file records a trace of operations -as well as the same errors written to the TE_device_name -file. -
    -

    The Tape Coordinator creates the files automatically as it -initializes. If there are existing files, the Tape Coordinator renames -them with a .old extension, overwriting the existing -.old files if they exist. It derives the -device_name part of the file names by stripping off the device -name's /dev/ prefix and replacing any other slashes with -underscores. For example, the files are called TE_rmt_4m and -TL_rmt_4m for a device called /dev/rmt/4m. -

    By default, at the beginning of each operation the Tape Coordinator prompts -for the operator to insert the first tape into the drive and press -<Return>. To suppress this prompt, include the --noautoquery flag on the command line or the instruction -AUTOQUERY NO in the -/usr/afs/backup/CFG_device_name file. When the -prompt is suppressed, the first required tape must be in the drive before a -backup command is issued. For subsequent tapes, the Tape -Coordinator uses its normal tape acquisition routine: if the -/usr/afs/backup/CFG_device_name file includes a -MOUNT instruction, the Tape Coordinator invokes the indicated -command; otherwise, it prompts the operator for the next tape. -

    To stop the Tape Coordinator process, enter an interrupt signal such as -<Ctrl-c> over the dedicated connection (in the command shell -window). -

    To cancel a backup operation that involves a tape before it -begins (assuming the initial tape prompt has not been suppressed), enter the -letter a (for abort) and press <Return> at -the Tape Coordinator's prompt for the first tape. -

    Tape Coordinator operation depends on the correct configuration of certain -files, as described in the following list: -

      -

    • The local /usr/afs/backup/tapeconfig file must include an entry -for the Tape Coordinator that specifies its device name and port offset -number, among other information; for details, see the -tapeconfig reference page. -

    • The port offset number recorded in the Tape Coordinator's entry in -the Backup Database must match the one in the tapeconfig -file. Create the Backup Database entry by using the backup -addhost command. -

    • The optional /usr/afs/backup/CFG_device_name file can -contain instructions for mounting and unmounting tapes automatically (when -using a tape stacker or jukebox, for instance) or automating other aspects of -the backup process. The device_name part of the name is -derived as described previously for the TE_device_name and -TL_device_name files. -
    -

    Cautions -

    If the Tape Coordinator machine is an AIX machine, use the SMIT -utility to set the device's block size to 0 (zero), indicating variable -block size. Otherwise, tape devices attached to machines running other -operating systems sometimes cannot read tapes written on AIX machines. -For instructions, see the IBM AFS Administration Guide chapter -about configuring the Backup System. -

    Options -

    -

    -port -
    Specifies the port offset number of the Tape Coordinator to -initialize. -

    -debuglevel -
    Controls the amount and type of messages the Tape Coordinator displays on -the standard output stream. Provide one of three acceptable -values: -
      -

    • 0 to display the minimum level of detail required to describe -Tape Coordinator operations, including prompts for tapes, messages that -indicate the beginning and end of operations, and error messages. This -is the default value. -

    • 1 to display the names of the volumes being dumped or restored -as well as the information displayed at level 0. -

    • 2 to display all messages also being written to the -TL_device_name log file. -
    -

    -cell -
    Names the cell in which the Tape Coordinator operates (the cell to which -the file server machines that house affected volumes belong). If this -argument is omitted, the Tape Coordinator runs in the local cell as defined in -the local /usr/vice/etc/ThisCell file. Do not combine this -flag with the -localauth argument. -

    -noautoquery -
    Suppresses the Tape Coordinator's prompt for insertion of the first -tape needed for an operation. The operator must insert the tape into -the drive before issuing the backup command that initializes the -operation. -

    -localauth -
    Constructs a server ticket using the server encryption key with the -highest key version number in the local -/usr/afs/etc/KeyFile. The butc command -interpreter presents the ticket, which never expires, to the Volume Server and -Volume Location Server to use in mutual authentication. -

    Do not combine this argument with the -cell flag, and use it -only when logged on to a server machine as the local superuser -root; client machines do not have -/usr/afs/etc/KeyFile file. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command starts the Tape Coordinator with port offset -7 at debug level 1, meaning the Tape Coordinator reports -the names of volumes it is dumping or restoring. -

       % butc -port 7 -debuglevel 1
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -every machine where the Backup Server or Volume Location (VL) Server is -running, and on every file server machine that houses a volume to be backed -up. If the -localauth flag is included, the issuer must -instead be logged on to the Tape Coordinator machine as the local superuser -root. In addition, the issuer must be able to read and write -to the log and configuration files in the local /usr/afs/backup -directory. -

    Related Information -

    CFG_device_name -

    KeyFile -

    TE_device_name -

    ThisCell (client version) -

    TL_device_name -

    UserList -

    tapeconfig -

    backup addhost -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf127.htm b/doc/html/AdminReference/auarf127.htm deleted file mode 100644 index 3cd35a89c..000000000 --- a/doc/html/AdminReference/auarf127.htm +++ /dev/null @@ -1,186 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    dlog

    - - -

    Purpose -

    Authenticates to the DCE Security Service -

    Synopsis -

    dlog [-principal <user name>]  [-cell <cell name>]  
    -     [-password <user's password>]  [-servers <explicit list of servers>+]  
    -     [-lifetime <ticket lifetime in hh[:mm[:ss]]>]  
    -     [-setpag]  [-pipe]  [-help]
    -    
    -dlog [-pr <user name>]  [-c <cell name>]  [-pw <user's password>] 
    -     [-ser <explicit list of servers>+]  
    -     [-l <ticket lifetime in hh[:mm[:ss]]>]  [-set]  [-pi]  [-h]
    -
    -

    Description -

    The dlog command obtains DCE credentials for the issuer from the -DCE Security Service in the cell named by the -cell argument, and -stores them on the AFS client machine on which the user issues the -command. The AFS/DFS Migration Toolkit Protocol Translator processes -running on machines in the DCE cell accept the credentials, which enables the -user to access the DCE cell's filespace from the AFS client. The -user's identity in the local file system is unchanged. -

    If the issuer does not provide the -principal argument, the -dlog command interpreter uses the user name under which the issuer -is logged into the local file system. Provide the DCE password for the -appropriate user name. As with the klog command, the -password does not cross the network in clear text (unless the issuer is logged -into the AFS client from a remote machine). -

    The credentials are valid for a lifetime equivalent to the smallest of the -following, all but the last of which is defined by the DCE cell's -Security Server: -

      -

    • The maximum certificate lifetime for the issuer's DCE account -

    • The maximum certificate lifetime for the afs principal's -DCE account -

    • The registry-wide maximum certificate lifetime -

    • The registry-wide default certificate lifetime -

    • The lifetime requested using the -lifetime argument -
    -

    If the previous maximum certificate lifetime values are set to -default-policy, the maximum possible ticket lifetime is defined by -the default certificate lifetime. Refer to the DCE vendor's -administration guide for more information before setting any of these -values. -

    The AFS Cache Manager stores the ticket in a credential structure -associated with the name of the issuer (or the user named by the --principal argument. If the user already has a ticket for -the DCE cell, the ticket resulting from this command replaces it in the -credential structure. -

    The AFS tokens command displays the ticket obtained by the -dlog command for the server principal afs, regardless of -the principal to which it is actually granted. Note that the -tokens command does not distinguish tickets for a DFSTM -File Server from tickets for an AFS File Server. -

    Options -

    -

    -principal -
    Specifies the DCE user name for which to obtain DCE credentials. If -this option is omitted, the dlog command interpreter uses the name -under which the issuer is logged into the local file system. -

    -cell -
    Specifies the DCE cell in which to authenticate. During a single -login session on a given machine, a user can authenticate in multiple cells -simultaneously, but can have only one ticket at a time for each cell (that is, -it is possible to authenticate under only one identity per cell per -machine). It is legal to abbreviate the cell name to the shortest form -that distinguishes it from the other cells listed in the -/usr/vice/etc/CellServDB file on the local client machine. -

    If the issuer does not provide the -cell argument, the -dlog command attempts to authenticate with the DCE Security Server -for the cell defined by -

      -

    1. The value of the environment variable AFSCELL on the local AFS client -machine, if defined. The issuer can set the AFSCELL environment -variable to name the desired DCE cell. -

    2. The cell name in the /usr/vice/etc/ThisCell file on the local -AFS client machine. The machine's administrator can place the -desired DCE cell's name in the file. -
    -

    -password -
    Specifies the password for the issuer (or for the user named by the --principal argument). Using this argument is not -recommended, because it makes the password visible on the command line. -If this argument is omitted, the command prompts for the password and does not -echo it visibly. -

    -servers -
    Specifies a list of DFS database server machines running the Translator -Server through which the AFS client machine can attempt to -authenticate. Specify each server by hostname, shortened machine name, -or IP address. If this argument is omitted, the dlog command -interpreter randomly selects a machine from the list of DFS Fileset Location -(FL) Servers in the /usr/vice/etc/CellServDB file for the DCE cell -specified by the -cell argument. This argument is useful for -testing when authentication seems to be failing on certain server -machines. -

    -lifetime -
    Requests a ticket lifetime using the format -hh:mm[:ss] -(hours, minutes, and optionally a number seconds between 00 and 59). -For example, the value 168:30 requests a ticket lifetime of 7 -days and 30 minutes, and 96:00 requests a lifetime of 4 -days. Acceptable values range from 00:05 (5 minutes) -to 720:00 (30 days). If this argument is not provided -and no other determinants of ticket lifetime have been changed from their -defaults, ticket lifetime is 10 hours. -

    The requested lifetime must be smaller than any of the DCE cell's -determinants for ticket lifetime; see the discussion in the preceding -Description section. -

    -setpag -
    Creates a process authentication group (PAG) in which the newly created -ticket is placed. If this flag is omitted, the ticket is instead -associated with the issuers' local user ID (UID). -

    -pipe -
    Suppresses any prompts that the command interpreter otherwise produces, -including the prompt for the issuer's password. Instead, the -command interpreter accepts the password via the standard input stream. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the dlog command interpreter cannot contact a Translator -Server, it produces a message similar to the following: -

       dlog: server or network not responding -- failed to contact
    -   authentication service
    -   
    -
    -

    Examples -

    The following command authenticates the issuer as cell_admin in -the dce.abc.com cell. -

       % dlog -principal cell_admin -cell dce.abc.com
    -   Password: cell_admin's password
    -    
    -
    -

    In the following example, the issuer authenticates as cell_admin -to the dce.abc.com cell and request a ticket lifetime -of 100 hours. The tokens command confirms that the user -obtained DCE credentials as the user cell_admin: the AFS ID -is equivalent to the UNIX ID of 1 assigned to cell_admin -in dce.abc.com cell's DCE registry. -

       % dlog -principal cell_admin -cell dce.abc.com -lifetime 100
    -   Password: cell_admin's password
    -   
    -   % tokens
    -   Tokens held by the Cache Manager:
    -   
    -   User's (AFS ID 1) tokens for afs@dce.abc.com [Expires Jul 6 14:12] 
    -   User's (AFS ID 4758) tokens for afs@abc.com [Expires Jul 2 13:14] 
    - 
    -      --End of list--
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    dpass -

    klog -

    tokens -

    unlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf128.htm b/doc/html/AdminReference/auarf128.htm deleted file mode 100644 index d1891c5d2..000000000 --- a/doc/html/AdminReference/auarf128.htm +++ /dev/null @@ -1,114 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    dpass

    - - -

    Purpose -

    Returns the DCE password for a new DCE account -

    Synopsis -

    dpass [-cell <original AFS cell name>]  [-help] 
    -  
    -dpass [-c <original AFS cell name>]  [-h]
    -
    -

    Description -

    The dpass command returns the DCE password that an administrator -assigned to the issuer when using the dm pass command to migrate -AFS user accounts into a DCE cell. -

    The dpass command, issued on an AFS client, requests the -issuer's new DCE password from the AFS cell specified with the --cell argument. -

    The issuer must be authenticated as the AFS user whose AFS account was -moved into DCE, and be able to provide the user's AFS password when -prompted by the dpass command. -

    Options -

    -

    -cell -
    Specifies the name of the AFS cell from which the AFS account was moved -into DCE and from which to fetch the new DCE password. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    By default, the dpass command writes a message similar to the -following to the standard output stream. -

       Please read the following message before entering your password.  
    -    
    -   This program will display your new, temporary DCE password on your
    -   terminal, and you should change the assigned password as soon as 
    -   possible (from a DCE client).  The program assumes that the AFS cell 
    -   uses the AFS Authentication Server and that an administrator used the 
    -   utilities in the AFS/DFS Migration Toolkit to migrate the account from 
    -   AFS to DCE. The password you enter should be the AFS password that was 
    -   in effect when your DCE account was created; this is not necessarily 
    -   the same password you have at the moment.  The cell name (which you 
    -   may override with a command line option), must be the name of the AFS 
    -   cell from which the authentication information was taken.
    -    
    -
    -

    To suppress this message, set the DPASS_NO_MESSAGE environment -variable. It is then possible to substitute a customized message if -desired by using a script similar to the following example: -

       #! /bin/csh
    -   echo "Start of customized message"
    -   echo "Continuation of customized message"
    -     .
    -     .
    -     .
    -   echo "Conclusion of customized message"
    -   setenv DPASS_NO_MESSAGE
    -   dpass $*
    -   
    -
    -

    After the standard or customized message, if any, the dpass -command generates the following prompt for the original AFS password: -

       Original password for AFS cell cell:
    -   Re-enter password to verify:
    -   
    -
    -

    If the AFS passwords match and are correct, the command reports the -temporary DCE password in the following message. -

       The new DCE password is: Issuer's_temporary_DCE_password
    -    
    -
    -

    Examples -

    The following example returns the DCE password of the issuer, whose AFS -account is in the abc.com cell. The DPASS_NO_MESSAGE -variable has been set to suppress the standard message. -

       % dpass
    -   Original password for AFS cell abc.com: Issuer's_AFS_password
    -   Re-enter password to verify: Issuer's_AFS_password
    -   The new DCE password is: 8655--eg8e-dcdc-8157
    -   
    -
    -

    Privilege Required -

    The issuer must be authenticated as the AFS user for whom to display the -corresponding DCE password. -

    Related Information -

    dlog -

    dm pass reference page in IBM AFS/DFS Migration Toolkit -Administration Guide and Reference -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf129.htm b/doc/html/AdminReference/auarf129.htm deleted file mode 100644 index 953049adb..000000000 --- a/doc/html/AdminReference/auarf129.htm +++ /dev/null @@ -1,391 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fileserver

    - - - -

    Purpose -

    Initializes the File Server component of the fs process -

    Synopsis -

    fileserver [-d <debug level>]  [-p <number of processes>]
    -           [-spare <number of spare blocks>]  
    -           [-pctspare <percentage spare>]  [-b <buffers>]
    -           [-l <large vnodes>]  [-s <small  nodes>]
    -           [-vc <volume cachesize>]  [-w <call back wait interval>]
    -           [-cb <number of call backs>]
    -           [-banner (print banner every 10 minutes)]
    -           [-novbc (whole volume cbs disabled)]
    -           [-implicit <admin mode bits: rlidwka>]
    -           [-hr <number of hours between refreshing the host cps>]
    -           [-busyat <redirect clients when queue > n>]
    -           [-rxpck <number of rx extra packets>]
    -           [-rxdbg (enable rx debugging)]
    -           [-rxdbge (enable rxevent debugging)]
    -           [-m <min percentage spare in partition>]
    -           [-lock (keep fileserver from swapping)]
    -           [-L (large server conf)]  [-S (small server conf)]
    -           [-k <stack size>]  [-realm <Kerberos realm name>]
    -           [-udpsize <size of socket buffer in bytes>]  
    -           [-enable_peer_stats]  [-enable_process_stats]  
    -           [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The fileserver command initializes the File Server component of -the fs process. In the conventional configuration, its -binary file is located in the /usr/afs/bin directory on a file -server machine. -

    The fileserver command is not normally issued at the command -shell prompt, but rather placed into a database server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a file server machine as the local superuser -root. -

    The File Server creates the /usr/afs/logs/FileLog log file as it -initializes, if the file does not already exist. It does not write a -detailed trace by default, but use the -d option to increase the -amount of detail. Use the bos getlog command to display the -contents of the log file. -

    The command's arguments enable the administrator to control many -aspects of the File Server's performance, as detailed in the -Options section. By default the fileserver -command sets values for many arguments that are suitable for a medium-sized -file server machine. To set values suitable for a small or large file -server machine, use the -S or -L flag -respectively. The following list describes the parameters and -corresponding argument for which the fileserver command sets -default values, and Table 1 summarizes the setting for each of the three machine -sizes. -

      -

    • The maximum number of lightweight processes (LWPs) the File Server uses to -handle requests for data; corresponds to the -p -argument. The File Server always uses a minimum of 32 KB for these -processes. -

    • The maximum number of directory blocks the File Server caches in -memory; corresponds to the -b argument. Each cached -directory block (buffer) consumes 2,092 bytes of memory. -

    • The maximum number of large vnodes the File Server caches in memory for -tracking directory elements; corresponds to the -l -argument. Each large vnode consumes 292 bytes of memory. -

    • The maximum number of small vnodes the File Server caches in memory for -tracking file elements; corresponds to the -s argument. -Each small vnode consumes 100 bytes of memory. -

    • The maximum volume cache size, which determines how many volumes the File -Server can cache in memory before having to retrieve data from disk; -corresponds to the -vc argument. -

    • The maximum number of callback structures the File Server caches in -memory; corresponds to the -cb argument. Each callback -structure consumes 16 bytes of memory. -

    • The maximum number of Rx packets the File Server uses; -corresponds to the -rxpck argument. Each packet consumes -1544 bytes of memory. -
    -
    -

    Table 1. File Server configuration parameters
    - - - - - - - - - -
    Parameter (Argument) -Small configuration (-S) -Medium configuration (default) -Large configuration (-L) -
    Number of LWPs (-p) -6 -9 -12 -
    Number of cached directory blocks (-b) -70 -90 -120 -
    Number of cached large vnodes (-l) -200 -400 -600 -
    Number of cached small vnodes (-s) -200 -400 -600 -
    Maximum volume cache size (-vc) -200 -400 -600 -
    Number of callbacks (-cb) -20,000 -60,000 -64,000 -
    Number of Rx packets (-rxpck) -100 -150 -200 -
    -

    To override any of the values, provide the indicated argument (which can be -combined with the -S or -L flag). -

    The amount of memory required for the File Server varies. The -approximate default memory usage is 751 KB when the -S flag is used -(small configuration), 1.1 MB when all defaults are used (medium -configuration), and 1.4 MB when the -L flag is used (large -configuration). If additional memory is available, increasing the value -of the -cb and -vc arguments can improve File Server -performance most directly. -

    By default, the File Server allows a volume to exceed its quota by 1 MB -when an application is writing data to an existing file in a volume that is -full. The File Server still does not allow users to create new files in -a full volume. To change the default, use one of the following -arguments: - -

      -

    • Set the -spare argument to the number of extra kilobytes that -the File Server allows as overage. A value of 0 allows no -overage. -

    • Set the -pctspare argument to the percentage of the -volume's quota the File Server allows as overage. -
    -

    By default, the File Server implicitly grants the a -(administer) and l (lookup) permissions to -the system:administrators on the access control list (ACL) of -every directory in the volumes stored on its file server machine. In -other words, the group's members can exercise those two permissions even -when an entry for the group does not appear on an ACL. To change the -set of default permissions, use the -implicit argument. -

    The File Server maintains a host current protection subgroup -(host CPS) for each client machine from which it has received a -data access request. Like the CPS for a user, a host CPS lists all of -the Protection Database groups to which the machine belongs, and the File -Server compares the host CPS to a directory's ACL to determine in what -manner users on the machine are authorized to access the directory's -contents. When the pts adduser or pts removeuser -command is used to change the groups to which a machine belongs, the File -Server must recompute the machine's host CPS in order to notice the -change. By default, the File Server contacts the Protection Server -every two hours to recompute host CPSs, implying that it can take that long -for changed group memberships to become effective. To change this -frequency, use the -hr argument. -
    Note:The AIX operating system does not automatically reserve a part of each -partition to avoid the negative consequences that can result when the space on -a partition is completely exhausted. Therefore, the AIX version of the -File Server creates an 8% disk reserve automatically. To change the -percentage, use the -m argument. -
    -

    The File Server generates the following message when a partition is nearly -full: -

       No space left on device
    -   
    -
    -

    Cautions -

    Do not use the -k and -w arguments, which are -intended for use by the AFS Development group only. Changing them from -their default values can result in unpredictable File Server behavior. -In any case, on many operating systems the File Server uses native threads -rather than the LWP threads, so using the -k argument to set the -number of LWP threads has no effect. -

    Do not specify both the -spare and -pctspare -arguments. Doing so causes the File Server to exit, leaving an error -message in the /usr/afs/logs/FileLog file. -

    Options that are available only on some system types, such as the --m and -lock options, appear in the output generated by -the -help option only on the relevant system type. -

    Options -

    -

    -d -
    Sets the detail level for the debugging trace written to the -/usr/afs/logs/FileLog file. Provide one of the following -values, each of which produces an increasingly detailed trace: -0, 1, 5, 25, and -125. The default value of 0 produces only a few -messages. -

    -p -
    Sets the number of threads to run. Provide a positive -integer. The File Server creates and uses five threads for special -purposes, in addition to the number specified (but if this argument specifies -the maximum possible number, the File Server automatically uses five of the -threads for its own purposes). -

    The maximum number of threads can differ in each release of AFS. -Consult the IBM AFS Release Notes for the current release. -

    -spare -
    Specifies the number of additional kilobytes an application can store in a -volume after the quota is exceeded. Provide a positive integer; a -value of 0 prevents the volume from ever exceeding its -quota. Do not combine this argument with the -pctspare -argument. -

    -pctspare -
    Specifies the amount by which the File Server allows a volume to exceed -its quota, as a percentage of the quota. Provide an integer between -0 and 99. A value of 0 prevents the -volume from ever exceeding its quota. Do not combine this argument with -the -spare argument. -

    -b -
    Sets the number of directory buffers. Provide a positive -integer. -

    -l -
    Sets the number of large vnodes available in memory for caching directory -elements. Provide a positive integer. -

    -s -
    Sets the number of small vnodes available in memory for caching file -elements. Provide a positive integer. -

    -vc -
    Sets the number of volumes the File Server can cache in memory. -Provide a positive integer. -

    -w -
    Sets the interval at which the daemon spawned by the File Server performs -its maintenance tasks. Do not use this argument; changing the -default value can cause unpredictable behavior. -

    -cb -
    Sets the number of callbacks the File Server can track. Provide a -positive integer. -

    -banner -
    Prints the following banner to /dev/console about every 10 -minutes. -
       File Server is running at time.
    -   
    -
    -

    -novbc -
    Prevents the File Server from breaking the callbacks that Cache Managers -hold on a volume that the File Server is reattaching after the volume was -offline (as a result of the vos restore command, for -example). Use of this flag is strongly discouraged. -

    -implicit -
    Defines the set of permissions granted by default to the -system:administrators group on the ACL of every directory in -a volume stored on the file server machine. Provide one or more of the -standard permission letters (rlidwka) and auxiliary permission -letters (ABCDEFGH), or one of the shorthand notations for groups of -permissions (all, none, read, and -write). To review the meaning of the permissions, see the -fs setacl reference page. -
    Note:The File Server always implicitly grants the a permission to the -system:administrators group, even if you use the -none value. -
    -

    -hr -
    Specifies how often the File Server refreshes its knowledge of the -machines that belong to protection groups (refreshes the host CPSs for -machines). The File Server must update this information to enable users -from machines recently added to protection groups to access data for which -those machines now have the necessary ACL permissions. -

    -busyat -
    Defines the number of incoming RPCs that can be waiting for a response -from the File Server before the File Server returns the error code -VBUSY to the Cache Manager that sent the latest RPC. In -response, the Cache Manager retransmits the RPC after a delay. This -argument prevents the accumulation of so many waiting RPCs that the File -Server can never process them all. Provide a positive integer. -The default value is 600. -

    -rxpck -
    Controls the number of Rx packets the File Server uses to store data for -incoming RPCs that it is currently handling, that are waiting for a response, -and for replies that are not yet complete. Provide a positive -integer. -

    -rxdbg -
    Writes a trace of the File Server's operations on Rx packets to the -file /usr/afs/logs/rx_dbg. -

    -rxdbge -
    Writes a trace of the File Server's operations on Rx events (such as -retransmissions) to the file /usr/afs/logs/rx_dbg. -

    -m -
    Specifies the percentage of each AFS server partition that the AIX version -of the File Server creates as a reserve. Specify an integer value -between 0 and 30; the default is 8%. A value -of 0 means that the partition can become completely full, which can -have serious negative consequences. -
    Note:This argument is available only on machines running the AIX operating system, -and so does not appear in the syntax statement when the -help flag -is used on other system types. -
    -

    -lock -
    Prevents any portion of the fileserver binary from being paged -(swapped) out of memory on a file server machine running the IRIX operating -system. -
    Note:This argument is available only on machines running the IRIX operating -system, and so does not appear in the syntax statement when the --help flag is used on other system types. -
    -

    -L -
    Sets values for many arguments in a manner suitable for a large file -server machine. Combine this flag with any option except the --S flag; omit both flags to set values suitable for a -medium-sized file server machine. -

    -S -
    Sets values for many arguments in a manner suitable for a small file -server machine. Combine this flag with any option except the --L flag; omit both flags to set values suitable for a -medium-sized file server machine. -

    -k -
    Sets the LWP stack size in units of 1 kilobyte. Do not use this -argument, and in particular do not specify a value less than the default of -24. -

    -realm -
    Defines the Kerberos realm name for the File Server to use. If this -argument is not provided, it uses the realm name corresponding to the cell -listed in the local /usr/afs/etc/ThisCell file. -

    -udpsize -
    Sets the size of the UDP buffer, which is 64 KB by default. Provide -a positive integer, preferably larger than the default. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following bos create command creates an fs -process on the file server machine fs2.abc.com that -uses the large configuration size, and allows volumes to exceed their quota by -10%. Type the command on a single line: -

       % bos create -server fs2.abc.com -instance fs -type fs   \ 
    -                -cmd "/usr/afs/bin/fileserver -pctspare 10 \
    -                -L" /usr/afs/bin/volserver /usr/afs/bin/salvager
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BosConfig -

    FileLog -

    bos create -

    bos getlog -

    fs setacl -

    salvager -

    volserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf130.htm b/doc/html/AdminReference/auarf130.htm deleted file mode 100644 index ceeb4b637..000000000 --- a/doc/html/AdminReference/auarf130.htm +++ /dev/null @@ -1,140 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fms

    - - - - - - - - - - -

    Purpose -

    Determine a tape's capacity and a tape device's filemark size -

    Synopsis -

    fms -tape <tape special file>  [-help]
    -    
    -fms  -t <tape special file>  [-h]
    -
    -

    Description -

    The fms command determines the capacity of the tape currently in -the tape device identified by the -tape argument, along with the -size of the filemark for the device. The filemark is also referred to -as the device's end-of-file (EOF) marker, and can differ for each -combination of tape and tape device. -

    As the Tape Coordinator writes a dump, it writes a filemark between the -data included from each volume and also tracks the amount of space left before -the end of the tape (EOT). For some tape devices, the filemark is large -enough (multiple megabytes) that failure to consider it leads the Tape -Coordinator significantly to overestimate the available space. -

    The intended use of this command is to determine tape capacity and filemark -size values that can be specified in a tape device's entry in the -/usr/afs/backup/tapeconfig file. For certain types of tape -drives, the Tape Coordinator operates more efficiently when the -tapeconfig file lists accurate values. For further -discussion, see the IBM AFS Administration Guide chapter on -configuring the Backup System. -

    Insert a tape in the drive before issuing this command. -

    Cautions -

    Do not use this command on compressing tape devices in compression mode or -with tape devices that handle tapes of multigigabyte (or multiterabyte) -capacity. It does not produce accurate results in those cases. -For alternate suggestions on the values to record in the tapeconfig -file for compressing drives, see the IBM AFS Administration Guide -chapter on configuring the Backup System. -

    Running the command completely overwrites the tape, so use a blank one or -one that can be recycled. -

    Because it writes filemarks to the complete length of the tape, the command -can take from several hours to more than a day to complete. -

    Options -

    -

    -tape -
    Specifies the UNIX device name of the tape device for which to determine -filemark size and the capacity of the tape it currently contains. The -format varies on different system types, but usually begins with -/dev; an example is /dev/sd0a. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The command generates output both on the standard output stream and in the -fms.log file that it creates in the current working -directory. The output reports the capacity of the tape in the device -and the device's filemark size. -

    The first few lines of output include status information about the -execution of the command, including such information as the number of blocks -and the number of file marks written to the tape by the command. The -last two lines of both screen and file output provide the following -information: -

      -

    • Tape capacity is number bytes: -specifies the size, in bytes, of the tape in the device. -

    • File marks are number bytes: -specifies the device's filemark size in bytes. -
    -

    The following message indicates that the fms command interpreter -cannot access the tape device. The command halts. -

       Can't open tape drive device
    -   
    -
    -

    The following message indicates that the command interpreter cannot create -the fms.log log file. Again, the command -halts. -

       Can't open log file
    -   
    -
    -

    Examples -

    The following command illustrates the output for the device called -/dev/rmt1h: -

       % fms /dev/rmt1h
    -   wrote block: 130408
    -   Finished data capacity test - rewinding
    -   wrote 1109 blocks, 1109 file marks
    -   Finished file mark test
    -   Tape capacity is 2136604672 bytes
    -   File marks are 1910205 bytes
    -   
    -
    -

    The following appears in the fms.log file: -

       fms test started
    -   wrote 9230 blocks
    -   Finished file mark test
    -   Tape capacity is 151224320 bytes
    -   File marks are 2375680 bytes
    -   
    -
    -

    Privilege Required -

    The issuer must be able to insert and write to files in the currently -working directory, if the fms.log file does not already -exist. If it already exists, the issuer need only be able to write to -it. -

    Related Information -

    fms.log -

    tapeconfig -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf131.htm b/doc/html/AdminReference/auarf131.htm deleted file mode 100644 index 6964fa29e..000000000 --- a/doc/html/AdminReference/auarf131.htm +++ /dev/null @@ -1,169 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs

    - - - - - -

    Purpose -

    Introduction to the fs command suite -

    Description -

    The commands in the fs command suite constitute the main -administrative interface to the Cache Manager on an AFS client machine, which -is responsible for fetching AFS data from file server machines on behalf of -applications running on the client machine. -

    There are several categories of commands in the fs command -suite: -

      -

    • Commands to set and report how the Cache Manager interacts with server -machines: fs checkservers, fs getcellstatus, -fs getserverprefs, fs listcells, fs newcell, -fs setcell, -

      fs setserverprefs, fs sysname, and fs -wscell -

    • Commands to administer access control lists (ACLs): fs -cleanacl, fs copyacl, fs listacl, and fs -setacl -

    • Commands to administer server machines, volumes or partitions that house a -given file or directory: fs diskfree, fs examine, -fs listquota, fs quota, fs setquota, fs -setvol, -

      fs whereis, and fs whichcell -

    • Commands to administer the local client cache and related -information: fs checkvolumes, fs flush, fs -flushvolume, fs getcacheparms, and fs setcachesize -

    • Commands to administer volume mount points: fs lsmount, -fs mkmount, and fs rmmount -

    • Commands to control monitoring and tracing: fs debug, and -fs messages -

    • A command to administer the Cache Manager's interaction with other -file systems: fs exportafs -

    • Commands to obtain help: fs apropos and fs -help -
    -

    The Cache Manager and the fs commands use and maintain the -following configuration files: -

      -

    • The /usr/vice/etc/CellServDB file lists the database server -machines in the local cell and any foreign cell to which the administrator -wishes to enable AFS access for users working on the machine. The -database server machines run the Authentication, Backup, Protection and Volume -Location (VL) Server processes, which maintain databases of administrative -information. For users to access a cell, its -root.cell volume must also be mounted in the local -cell's AFS file tree. -

    • The /usr/vice/etc/ThisCell file defines the machine's cell -membership with respect to the AFS command suites and Cache Manager access to -AFS data. -

    • The /usr/vice/etc/cacheinfo file defines configuration -parameters for the cache, including its size and whether it is in memory or on -disk. -
    -

    In addition, the Cache Manager automatically creates files on the cache -partition (by default, /usr/vice/cache for caching and tracking -files fetched from file server machines. -

    For more details, see the reference page for each file. -

    Options -

    The following flag is available on every command in the fs -suite. The reference page for each command also lists it, but it is -described here in greater detail. - - - -

    -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -
    -

    Privilege Required - - -

    The privileges required for fs commands vary more than for other -command suites. Pay special attention to the Privilege -Required section of each command description. -

    The various types of necessary privilege include: -

      -

    • Having permissions on a directory's ACL. For example, creating -and removing mount points requires a (administer), -i (insert), and d (delete) -permissions on the ACL of the directory in which the mount point -resides. -

    • Being logged onto the machine as the local superuser -root. This is necessary when issuing commands that affect -Cache Manager configuration. -

    • Belonging to the system:administrators group in the -Protection Database. -

    • No privilege. Many fs commands simply list -information. -
    -

    Related Information -

    CacheItems -

    CellServDB (client version) -

    ThisCell (client version) -

    Vn -

    VolumeItems -

    cacheinfo -

    fs apropos -

    fs checkservers -

    fs checkvolumes -

    fs cleanacl -

    fs copyacl -

    fs diskfree -

    fs examine -

    fs exportafs -

    fs flush -

    fs flushmount -

    fs flushvolume -

    fs getcacheparms -

    fs getcellstatus -

    fs getclientaddrs -

    fs getserverprefs -

    fs help -

    fs listacl -

    fs listcells -

    fs listquota -

    fs lsmount -

    fs messages -

    fs mkmount -

    fs newcell -

    fs quota -

    fs rmmount -

    fs setacl -

    fs setcachesize -

    fs setcell -

    fs setclientaddrs -

    fs setquota -

    fs setserverprefs -

    fs setvol -

    fs storebehind -

    fs sysname -

    fs whereis -

    fs whichcell -

    fs wscell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf132.htm b/doc/html/AdminReference/auarf132.htm deleted file mode 100644 index 58a0d6d4a..000000000 --- a/doc/html/AdminReference/auarf132.htm +++ /dev/null @@ -1,73 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    fs apropos -topic <help string>  [-help]
    -   
    -fs ap -t <help string>  [-h]
    -
    -

    Description -

    The fs apropos command displays the first line of the online -help entry for any fs command that has in its name or short -description the string specified by the -topic argument. -

    To display the syntax for a command, use the fs help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -fs command where the string specified with the -topic -argument is part of the command name or first line. -

    Examples -

    The following command lists all fs commands that include the -word cache in their names or short online descriptions: -

       % fs apropos cache
    -   setcachesize: set cache size
    -   flush: flush file from cache
    -   getcacheparms: get cache usage info
    -   monitor: set cache monitor host address
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs -

    fs help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf133.htm b/doc/html/AdminReference/auarf133.htm deleted file mode 100644 index 793e8988b..000000000 --- a/doc/html/AdminReference/auarf133.htm +++ /dev/null @@ -1,197 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs checkservers

    - - - - - - - - -

    Purpose -

    Displays the status of server machines -

    Synopsis -

    fs checkservers [-cell <cell to check>]  [-all]  [-fast]  
    -                [-interval <seconds between probes>]  [-help]
    -   
    -fs checks [-c <cell to check>]  [-a]  [-f]  
    -          [-i <seconds between probes>]  [-h]
    -
    -

    Description -

    The fs checkservers command reports whether certain AFS server -machines are accessible from the local client machine. The machines -belong to one of two classes, and the Cache Manager maintains a list of them -in kernel memory: -

      -

    • The database server machines in every cell listed in the local -/usr/vice/etc/CellServDB file, plus any machines added to the -memory list by the fs newcell command since the last reboot. -

    • All file server machines the Cache Manager has recently contacted, and -which it probably needs to contact again soon. In most cases, the Cache -Manager holds a callback on a file or volume fetched from the machine. -
    -

    If the Cache Manager is unable to contact the vlserver process -on a database server machine or the fileserver process on a file -server machine, it marks the machine as inaccessible. (Actually, if a -file server machine is multihomed, the Cache Manager attempts to contact all -of the machine's interfaces, and only marks the machine as down if the -fileserver fails to reply via any of them.) The Cache -Manager then periodically (by default, every three minutes) sends a probe to -each marked machine, to see if it is still inaccessible. If a -previously inaccessible machine responds, the Cache Manager marks it as -accessible and no longer sends the periodic probes to it. -

    The fs checkservers command updates the list of inaccessible -machines by having the Cache Manager probe a specified set of them: -

      -

    • By default, only machines that are marked inaccessible and belong to the -local cell (the cell listed in the local /usr/vice/etc/ThisCell -file) -

    • If the -cell argument is included, only machines that are -marked inaccessible and belong to the specified cell -

    • If the -all flag is included, all machines marked inaccessible -
    -

    If the -fast flag is included, the Cache Manager does not probe -any machines, but instead reports the results of the most recent previous -probe. -

    To set the interval between probes rather than produce a list of -inaccessible machines, use the -interval argument. The -non-default setting persists until the machine reboots; to preserve it -across reboots, put the appropriate fs checkservers command in the -machine's AFS initialization files. -

    Cautions -

    The command can take quite a while to complete, if a number of machines do -not respond to the Cache Manager's probe. The Cache Manager probes -machines sequentially and waits a standard timeout period before marking the -machine as unresponsive, to allow for slow network communication. To -make the command shell prompt return quickly, put the command in the -background. It is harmless to interrupt the command by typing -Ctrl-c or another interrupt signal. -

    Note that the Cache Manager probes only server machines marked inaccessible -in its memory list. A server machine's absence from the output -does not necessarily mean that it is functioning, because it possibly is not -included in the memory list at all (if, for example, the Cache Manager has not -contacted it recently). For the same reason, the output is likely to -vary on different client machines. -

    Unlike most fs commands, the fs checkservers command -does not refer to the AFSCELL environment variable. -

    Options -

    -

    -cell -
    Names each cell in which to probe server machines marked as -inaccessible. Provide the fully qualified domain name, or a shortened -form that disambiguates it from the other cells listed in the local -/usr/vice/etc/CellServDB file. Combine this argument with -the -fast flag if desired, but not with the -all -flag. Omit both this argument and the -all flag to probe -machines in the local cell only. -

    -all -
    Probes all machines in the Cache Manager's memory list that are -marked inaccessible. Combine this argument with the -fast -flag if desired, but not with the -cell argument. Omit both -this flag and the -cell argument to probe machines in the local -cell only. -

    -fast -
    Displays the Cache Manager's current list of machines that are -inaccessible, rather than sending new probes. The output can as old as -the current setting of the probe interval (by default three minutes, and -maximum ten minutes). -

    -interval -
    Sets or reports the number of seconds between the Cache Manager's -probes to machines in the memory list that are marked inaccessible: -
      -

    • To set the interval, specify a value from the range between 1 -and 600 (10 minutes); the default is 180 (three -minutes). The issuer must be logged in as the local superuser -root. The altered setting persists until again changed with -this command, or until the machine reboots, at which time the setting returns -to the default. -

    • Provide a value of 0 (zero) to display the current interval -setting. No privilege is required. Do not combine this argument -with any other. -
    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If there are no machines marked as inaccessible, or if all of them now -respond to the Cache Manager's probe, the output is: -

       All servers are running.
    -   
    -
    -

    Note that this message does not mean that all server machines in each -relevant cell are running. The output indicates the status of only -those machines that the Cache Manager probes. -

    If a machine fails to respond to the probe within the timeout period, the -output begins with the string -

       These servers unavailable due to network or server problems:
    -   
    -
    -

    and lists the hostname of each machine on its own line. The Cache -Manager stores machine records by Internet address, so the format of each -hostname (uppercase or lowercase letters, or an Internet address in dotted -decimal format) depends on how the local cell's name service translates -it at the time the command is issued. If a server machine is -multihomed, the output lists only one of its interfaces (usually, the -currently most preferred one). -

    If the -interval argument is provided with a value between -1 and 600, there is no output. If the value is -0, the output reports the probe interval as follows: -

       The current down server probe interval is interval secs
    -   
    -
    -

    Examples -

    The following command displays the Cache Manager's current list of -unresponsive machines in the local cell, rather than probing them -again. The output indicates that if there were any machines marked -inaccessible, they all responded to the previous probe. -

       % fs checkservers -fast
    -   All servers are running.
    -   
    -
    -

    The following example probes machines in the Cache Manager's memory -list that belong to the stateu.edu cell: -

       % fs checkservers -cell stateu.edu
    -   All servers are running.
    -   
    -
    -

    The following example probes all server machines in the Cache -Manager's memory list. It reports that two machines did not -respond to the probe. -

       % fs checkservers -all
    -   These servers unavailable due to network or server problems:
    -   fs1.abc.com SV3.STATE.EDU.
    -   
    -
    -

    Privilege Required -

    To set the probe interval, the issuer must be logged in as the local -superuser root. Otherwise, no privilege is required. -

    Related Information -

    CellServDB (client version) -

    ThisCell (client version) -

    fs newcell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf134.htm b/doc/html/AdminReference/auarf134.htm deleted file mode 100644 index 9019a4c28..000000000 --- a/doc/html/AdminReference/auarf134.htm +++ /dev/null @@ -1,69 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs checkvolumes

    - - - - - - - - - - -

    Purpose -

    Forces the Cache Manager to update volume-related information -

    Synopsis -

    fs checkvolumes [-help]
    -   
    -fs checkv [-h]
    -
    -

    Description -

    The fs checkvolumes command discards the table of mappings -between volume names and volume ID numbers that the Cache Manager stores in -memory and uses when fetching data from volumes. The next time an -application requests AFS data, the Cache Manager must contact the Volume -Location (VL) Server for volume location information, and then an appropriate -file server machine for the actual data. -

    The Cache Manager updates the table of mappings periodically (by default, -hourly), but this command is useful if the issuer knows that a volume's -name has changed, or that new read-only replicas of a volume have been -released, because issuing it forces the Cache Manager to reference the changed -volume. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The following message confirms that the command ran successfully. -

       All volumeID/name mappings checked.
    -   
    -
    -

    Privilege Required -

    None -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf135.htm b/doc/html/AdminReference/auarf135.htm deleted file mode 100644 index a6a2bf93b..000000000 --- a/doc/html/AdminReference/auarf135.htm +++ /dev/null @@ -1,108 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs cleanacl

    - - - - - - - -

    Purpose -

    Remove obsolete entries from an ACL -

    Synopsis -

    fs cleanacl [-path <dir/file path>+]  [-help]
    -   
    -fs cl [-p <dir/file path>+]  [-h] 
    -
    -

    Description -

    The fs cleanacl command removes from the access control list -(ACL) of each specified directory or file any entry that refers to a user or -group that no longer has a Protection Database entry. Such an entry -appears on the ACL as an AFS user ID number (UID) rather than a name, because -without a Protection Database entry, the File Server cannot translate the UID -into a name. -

    Cleaning access control lists in this way not only keeps them from becoming -crowded with irrelevant information, but also prevents the new possessor of a -recycled AFS UID from obtaining access intended for the former possessor of -the AFS UID. (Note that recycling UIDs is not recommended in any -case.) -

    Options -

    -

    -path -
    Names each directory for which to clean the ACL (specifying a filename -cleans its directory's ACL). If this argument is omitted, the -current working directory's ACL is cleaned. -

    Specify the read/write path to each directory, to avoid the failure that -results from attempting to change a read-only volume. By convention, -the read/write path is indicated by placing a period before the cell name at -the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If there are no obsolete entries on the ACL, the following message -appears: -

       Access list for dir/file path is fine.
    -   
    -
    -

    Otherwise, the output reports the resulting state of the ACL, following the -header -

       Access list for dir/file path is now
    -   
    -
    -

    At the same time, the following error message appears for each file in the -cleaned directories: -

       fs: 'filename': Not a directory
    -   
    -
    -

    Examples -

    The following example illustrates the cleaning of the ACLs on the current -working directory and two of its subdirectories. Only the second -subdirectory had obsolete entries on it. -

       % fs cleanacl -path . ./reports ./sources
    -   Access list for . is fine.
    -   Access list for ./reports is fine.
    -   Access list for ./sources is now
    -   Normal rights:
    -      system:authuser rl
    -      pat rlidwka
    -   
    -
    -

    Privilege Required -

    The issuer must have the a (administer) permission on -each directory's ACL (or the ACL of each file's parent -directory); the directory's owner and the members of the -system:administrators group have the right implicitly, even -if it does not appear on the ACL. -

    Related Information -

    fs listacl -

    fs mkmount -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf136.htm b/doc/html/AdminReference/auarf136.htm deleted file mode 100644 index 932dfdc81..000000000 --- a/doc/html/AdminReference/auarf136.htm +++ /dev/null @@ -1,156 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs copyacl

    - - - - -

    Purpose -

    Copies an ACL from one directory to one or more other directories -

    Synopsis -

    fs copyacl -fromdir <source directory (or DFS file)>  
    -           -todir <destination directory (or DFS file)>+  
    -           [-clear]  [-id]  [-if]  [-help]
    -   
    -fs co -f <source directory (or DFS file)>  
    -      -t <destination directory (or DFS file)>+  
    -      [-c]  [-id]  [-if]  [-h]
    -
    -

    Description -

    The fs copyacl command copies the access control list (ACL) from -a source directory to each specified destination directory. The source -directory's ACL is unchanged, and changes to the destination -directory's ACL obey the following rules: -

      -

    • If an entry on the source ACL does not already exist on the destination -ACL, it is added. -

    • If an entry exists on both the source and destination ACLs, the -permissions from the source ACL entry replace the current permissions on the -destination ACL entry. -

    • If an entry on the destination ACL has no corresponding entry on the -source ACL, it is removed if the -clear flag is included and is -unchanged otherwise. In other words, if the -clear flag is -provided, the source ACL completely replaces the destination ACL. -
    -

    When using this command to copy ACLs between objects in DFS filespace -accessed via the AFS/DFS Migration Toolkit Protocol Translator, it is possible -to specify files, as well as directories, with the -fromdir and --todir arguments. For more information on copying ACLs -between DFS directories and files, refer to the IBM AFS/DFS Migration -Toolkit Administration Guide and Reference. -

    Cautions -

    Do not copy ACLs between AFS and DFS files or directories. The ACL -formats are incompatible. -

    Options -

    -

    -fromdir -
    Specifies the source directory from which to copy the ACL. -(Specifying an AFS file copies its directory's ACL, but specifying a DFS -file copies its own ACL). A partial pathname is interpreted relative to -the current working directory. -

    -todir -
    Specifies each directory for which to alter the ACL to match the source -ACL. (Specifying an AFS file halts the command with an error, but -specifying a DFS file alters the file's ACL). A partial pathname -is interpreted relative to the current working directory. -

    Specify the read/write path to each directory (or DFS file), to avoid the -failure that results from attempting to change a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -clear -
    Replaces the ACL of each destination directory with the source ACL. -

    -id -
    Modifies the Initial Container ACL of each DFS directory named by the --todir argument, rather than the regular Object ACL. This -argument is supported only when both the source and each destination directory -reside in DFS and are accessed via the AFS/DFS Migration Toolkit Protocol -Translator. -

    -if -
    Modifies the Initial Object ACL of each DFS directory named by the --todir argument, rather than the regular Object ACL. This -argument is supported only when both the source and each destination directory -reside in DFS and are accessed via the AFS/DFS Migration Toolkit Protocol -Translator. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example command copies the current working directory's -ACL to its subdirectory called reports. Note that the source -directory's ACL is unaffected. Entries on the reports -directory's that are not on the source ACL of the current directory -remain unaffected as well, because the -clear flag is not -used. -

       % fs listacl . reports
    -   Access list for . is
    -   Normal rights:
    -      pat rlidwka
    -      smith rlidwk
    -   Access list for reports is
    -   Normal rights:
    -      pat rl
    -      pat:friends rl
    -   Negative rights
    -      jones rlidwka
    -   
    -   % fs copyacl -fromdir . -todir reports
    -   
    -   % fs listacl . reports
    -   Access list for . is
    -   Normal rights:
    -      pat rlidwka
    -      smith rlidwk
    -   Access list for reports is
    -   Normal rights:
    -      pat rlidwka
    -      pat:friends rl
    -      smith rlidwk
    -   Negative rights
    -      jones rlidwka
    -   
    -
    -

    Privilege Required -

    To copy an ACL between AFS objects, the issuer must have the l -(lookup)) permission on the source directory's ACL and the -a (administer) permission on each destination -directory's ACL. If the -fromdir argument names a file -rather than a directory, the issuer must have both the l and -r (read) permissions on the ACL of the file's -directory. -

    To copy an ACL between DFS objects, the issuer must have the r -permission on the source directory or file's ACL and the c -(control) permission on each destination directory or file's -ACL. -

    Related Information -

    fs listacl -

    fs mkmount -

    fs setacl -

    IBM AFS/DFS Migration Toolkit Administration Guide and Reference -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf137.htm b/doc/html/AdminReference/auarf137.htm deleted file mode 100644 index e4503e5f4..000000000 --- a/doc/html/AdminReference/auarf137.htm +++ /dev/null @@ -1,119 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs diskfree

    - - - - - - - - - - - - - - - -

    Purpose -

    Displays information about the partition housing a directory or file -

    Synopsis -

    fs diskfree [-path <dir/file path>+]  [-help]
    -   
    -fs df [-p <dir/file path>+]  [-h]
    -   
    -fs di [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs diskfree command formats and displays information about -the partition that houses the volume containing the specified directory or -file, including its size and how much space is currently used. -

    To display information about the volume itself, use the fs -examine command. The fs examine and fs -quota commands also display information about a volume. -

    Cautions -

    The partition-related statistics in this command's output do not -always agree with the corresponding values in the output of the standard UNIX -df command. The statistics reported by this command can be -up to five minutes old, because the Cache Manager polls the File Server for -partition information at that frequency. Also, on some operating -systems, the df command's report of partition size includes -reserved space not included in this command's calculation, and so is -likely to be about 10% larger. -

    Options -

    -

    -path -
    Names a file or directory that resides on the partition about which to -produce output. Partial pathnames are interpreted relative to the -current working directory, which is also the default value if this argument is -omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output reports the following information about the volume and partition -that houses each file or directory: -

    -

    Volume Name -
    The name of the volume -

    kbytes -
    The partition's total size in kilobytes -

    used -
    The number of kilobytes used on the partition -

    avail -
    The number of kilobytes available on the partition -

    %used -
    The percentage of the partition's total space that is used (the -used statistic divided by the kbytes statistic, times -100) -
    -

    If the %used statistic is greater than 90%, it is marked with -the string <<WARNING at the right margin. -

    If the volume is a read-only volume, the output includes information about -only one of the partitions that houses it, generally the one on the file -server machine with the lowest preference rank. To verify which machine -the output is referring to, use the vos listvldb command to list -the volume's locations, and the vos partinfo command to -display the size of each one. -

    Examples -

    The following example shows the output for the partitions housing the -volumes user.smith and sun4x_56.bin: -

       % fs diskfree -path /afs/abc.com/usr/smith /afs/abc.com/sun4x_56/bin
    -   Volume Name     kbytes  used     avail     %used     
    -   user.smith     4177920 3841258  336662       92% <<WARNING
    -   sun4x_56.bin   4423680 3174500 1249180       72%
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs examine -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf138.htm b/doc/html/AdminReference/auarf138.htm deleted file mode 100644 index 74b2da8e2..000000000 --- a/doc/html/AdminReference/auarf138.htm +++ /dev/null @@ -1,136 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs examine

    - - - - - - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Displays information about the volume containing a directory or file -

    Synopsis -

    fs examine [-path <dir/file path>+]  [-help]
    -   
    -fs exa [-p <dir/file path>+]  [-h] 
    -         
    -fs listvol [-p <dir/file path>+]  [-h] 
    -     
    -fs listv [-p <dir/file path>+]  [-h] 
    -        
    -fs lv [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs examine command displays information about the volume -containing each specified directory or file, including its volume ID number, -quota and the percentage of its quota that is used. -

    This command provides the most information about a volume, but the fs -listquota command displays similar information in tabular format, and -the fs quota command reports only the percentage of quota -used. -

    To set volume quota, use the fs setquota or fs setvol -command. -

    Cautions -

    The partition-related statistics in this command's output do not -always agree with the corresponding values in the output of the standard UNIX -df command. The statistics reported by this command can be -up to five minutes old, because the Cache Manager polls the File Server for -partition information at that frequency. Also, on some operating -systems, the df command's report of partition size includes -reserved space not included in this command's calculation, and so is -likely to be about 10% larger. -

    Options -

    -

    -path -
    Names a file or directory that resides in the volume about which to -produce output. Partial pathnames are interpreted relative to the -current working directory, which is also the default value if this argument is -omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output displays information about the volume that houses each specified -directory or file, in the following format -

       Volume status for vid = volume ID named volume name
    -   Current offline message is message
    -   Current disk quota is quota in kilobytes
    -   Current blocks used are volume size in kilobytes
    -   The partition has available partition blocks available out of
    -      partition size
    -   
    -
    -

    where the first line specifies the volume's ID number and name. -The Current offline message line appears only -if an administrator has included the -offlinemsg argument to the -fs setvol command. The remaining lines report, respectively, -

      -

    • the volume's quota in kilobytes, or the string unlimited -to indicate an unlimited quota -

    • the volume's current size in kilobytes -

    • the number of blocks available and total size of the host partition, both -in kilobytes. -
    -

    Examples -

    The following example shows the output for the volume -user.smith and the partition housing it: -

       % fs examine -path /afs/abc.com/usr/smith
    -   Volume status for vid = 50489902 named user.smith
    -   Current maximum quota is 15000
    -   Current blocks used are 5073
    -   The partition has 336662 blocks available out of 4177920 
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs listquota -

    fs quota -

    fs setquota -

    fs setvol -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf139.htm b/doc/html/AdminReference/auarf139.htm deleted file mode 100644 index b999ebbf4..000000000 --- a/doc/html/AdminReference/auarf139.htm +++ /dev/null @@ -1,199 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs exportafs

    - - - - - - - - - - -

    Purpose -

    Reports or sets whether the machine can export AFS to clients of other file -systems -

    Synopsis -

    fs exportafs -type <exporter name>  
    -        [-start <start/stop translator (on | off)>] 
    -        [-convert <convert from afs to unix mode (on | off)>] 
    -        [-uidcheck <run on strict 'uid check' mode (on | off)>] 
    -        [-submounts <allow nfs mounts to subdirs of /afs/.. (on | off)>]
    -        [-help]
    -   
    -fs exp -t <exporter name>  
    -       [-st <start/stop translator (on | off)>]
    -       [-c <convert from afs to unix mode (on | off)>]
    -       [-u <run on strict 'uid check' mode (on | off)>]
    -       [-su <allow nfs mounts to subdirs of /afs/.. (on | off)>]  
    -       [-help]
    -
    -

    Description -

    The fs exportafs command sets (if the -start argument -is provided) or reports (if it is omitted) whether the machine can reexport -the AFS filespace to clients of a non-AFS file system. To control -certain features of the translation protocol, use the following -arguments: -

      -

    • To control whether the UNIX group and other mode -bits on an AFS file or directory are set to match the owner mode -bits when it is exported to the non-AFS file system, use the --convert argument. -

    • To control whether tokens can be placed in a credential structure -identified by a UID that differs from the local UID of the entity that is -placing the tokens in the structure, use the -uidcheck -argument. The most common use is to control whether issuers of the -knfs command can specify a value for its -id argument -that does not match their local UID on the NFS/AFS translator machine. -

    • To control whether users can create mounts in the non-AFS filespace to an -AFS directory other than /afs, use the -submounts -argument. -
    -

    Options -

    -

    -type -
    Names the alternate file system to which to reexport the AFS -filespace. The only acceptable value is nfs, in lowercase -letters only. -

    -start -
    Enables the local machine to reexport the AFS filespace if the value is -on, or disables it if the value is off. Omit this -argument to report the current setting for all of the configurable -parameters. -

    -convert -
    Controls the setting of the UNIX group and other -mode bits on AFS files and directories exported to the non-AFS file -system. If the value is on, they are set to match the -owner mode bits. If the value is off, the bits -are not changed. If this argument is omitted, the default value is -on. -

    -uidcheck -
    Controls whether tokens can be placed in a credential structure identified -by a UID that differs from the local UID of the entity that is placing the -tokens in the structure. -
      -

    • If the value is on, the UID that identifies the credential -structure must match the local UID. -

      With respect to the knfs command, this value means that the -value of -id argument must match the issuer's local UID on the -translator machine. In practice, this setting makes it pointless to -include the -id argument to the knfs command, because -the only acceptable value (the issuer's local UID) is already used when -the -id argument is omitted. -

      Enabling UID checking also makes it impossible to issue the klog -and pagsh commands on a client machine of the non-AFS file system -even though it is a system type supported by AFS. For an explanation, -see the reference page for the klog command. -

    • If the value is off (the default), tokens can be assigned to a -local UID in the non-AFS file system that does not match the local UID of the -entity assigning the tokens. -

      With respect to the knfs command, it means that the issuer can -use the -id argument to assign tokens to a local UID on the NFS -client machine that does not match his or her local UID on the translator -machine. (An example is assigning tokens to the MFS client -machine's local superuser root.) This setting allows -more than one issuer of the knfs command to make tokens available -to the same user on the NFS client machine. Each time a different user -issues the knfs command with the same value for the -id -argument, that user's tokens overwrite the existing ones. This can -result in unpredictable access for the user on the NFS client machine. -

    -

    -submounts -
    Controls whether a user of the non-AFS filesystem can mount any directory -in the AFS filespace other than the top-level /afs -directory. If the value is on, such submounts are -allowed. If the value is off, only mounts of the /afs -directory are allowed. If this argument is omitted, the default value -is off. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the machine is not even configured as a server of the non-AFS file -system, the following message appears: -

       Sorry, the file_system-exporter type is currently not supported on
    -   this AFS client
    -   
    -
    -

    If the machine is configured as a server of the non-AFS file system but is -not currently enabled to reexport AFS to it (because the -start -argument to this command is not set to on), the message is as -follows: -

       'file_system' translator is disabled
    -   
    -
    -

    If the machine is enabled to reexport AFS, the following message precedes -messages that report the settings of the other parameters. -

       'file_system' translator is enabled with the following options:
    -   
    -
    -

    The following messages indicate that the -convert argument is -set to on or off respectively: -

       Running in convert owner mode bits to world/other mode
    -   Running in strict unix mode
    -   
    -
    -

    The following messages indicate that the -uidcheck argument is -set to on or off respectively: -

       Running in strict 'passwd sync' mode
    -   Running in no 'passwd sync' mode
    -    
    -
    -

    The following messages indicate that the -submounts argument is -set to on or off respectively: -

       Allow mounts of /afs/.. subdirs
    -   Only mounts to /afs allowed
    -   
    -
    -

    Examples -

    The following example shows that the local machine can export AFS to NFS -client machines. -

       % fs exportafs nfs
    -   'nfs' translator is enabled with the following options:
    -        Running in convert owner mode bits to world/other mode
    -        Running in no 'passwd sync' mode
    -        Only mounts to /afs allowed
    -   
    -
    -

    The following example enables the machine as an NFS server and converts the -UNIX group and other mode bits on exported AFS -directories and files to match the UNIX owner mode bits. -

       % fs exportafs -type nfs -start on -convert on
    -   
    -
    -

    The following example disables the machine from reexporting AFS to NFS -client machines: -

       % fs exportafs -type nfs -start off
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    klog -

    knfs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf140.htm b/doc/html/AdminReference/auarf140.htm deleted file mode 100644 index 23c751e16..000000000 --- a/doc/html/AdminReference/auarf140.htm +++ /dev/null @@ -1,84 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs flush

    - - - - - - - -

    Purpose -

    Forces the Cache Manager to discard a cached file or directory -

    Synopsis -

    fs flush [-path <dir/file path>+]  [-help]
    -   
    -fs flush [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs flush command removes from the cache all data and status -information associated with each specified file or directory. The next -time an application requests data from the flushed directory or file, the -Cache Manager fetches the most current version from a File Server, along with -a new callback (if necessary) and associated status information. This -command has no effect on two types of data: -

      -

    1. Data in application program buffers -

    2. Data that has been changed locally and written to the cache but not yet -written to the copy on the file server machine -
    -

    To flush all data in the cache that was fetched from the same volume as a -specified file or directory, use the fs flushvolume command. -To flush a corrupted mount point, use the fs flushmount -command. -

    Options -

    -

    -path -
    Names each file or directory to flush from the cache. If it is a -directory, only the directory element itself is flushed, not data cached from -files or subdirectories that reside in it. Partial pathnames are -interpreted relative to the current working directory, which is also the -default value if this argument is omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command flushes from the cache the file -projectnotes in the current working directory and all data from the -subdirectory plans: -

       % fs flush -path projectnotes ./plans/*
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs flushmount -

    fs flushvolume -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf141.htm b/doc/html/AdminReference/auarf141.htm deleted file mode 100644 index db53410b8..000000000 --- a/doc/html/AdminReference/auarf141.htm +++ /dev/null @@ -1,80 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs flushmount

    - - - - - - -

    Purpose -

    Forces the Cache Manager to discard a mount point -

    Synopsis -

    fs flushmount [-path <dir/file path>+]  [-help]
    -   
    -fs flushm [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs flushmount command removes from the cache all information -associated with each mount point named by the -path -argument. The next time an application accesses the mount point, the -Cache Manager fetches the most current version of it from the File -Server. Data cached from the associated volume is not affected. -

    The command's intended use is to discard information about mount -points that has become corrupted in the cache. (The Cache Manager -periodically refreshes cached mount points, but the only other way to discard -them immediately is to reinitialize the Cache Manager by rebooting the -machine.) Symptoms of a corrupted mount point included garbled output -from the fs lsmount command, and failed attempts to change -directory to or list the contents of a mount point. -

    To flush cached data rather than a mount point, use the fs flush -or fs flushvolume command. -

    Options -

    -

    -path -
    Names each mount point to flush from the cache. Partial pathnames -are interpreted relative to the current working directory, which is also the -default value if this argument is omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command flushes from the cache the mount point for user -pat's home directory: -

       % fs flushm /afs/abc.com/usr/pat
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs flush -

    fs flushvolume -

    fs lsmount -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf142.htm b/doc/html/AdminReference/auarf142.htm deleted file mode 100644 index 6722c38ba..000000000 --- a/doc/html/AdminReference/auarf142.htm +++ /dev/null @@ -1,81 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs flushvolume

    - - - - - - -

    Purpose -

    Forces the Cache Manager to discard all cached data from the volume -containing a file or directory -

    Synopsis -

    fs flushvolume [-path <dir/file path>+]  [-help]
    -   
    -fs flushv [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs flushvolume command removes from the cache all data that -was fetched from the same volume as each specified directory or file. -It does not discard cached status information. The next time an -application requests data from a flushed directory or file, the Cache Manager -fetches the most current version from a File Server, along with a new callback -(if necessary) and associated status information. This command has no -effect on two types of data: -

      -

    1. Data in application program buffers -

    2. Data that has been changed locally and written to the cache but not yet -written to the copy on the file server machine -
    -

    To discard the data and status information associated with individual files -and directories, use the fs flush command. To flush a -corrupted mount point, use the fs flushmount command. -

    Options -

    -

    -path -
    Names a file or directory from each volume for which to discard all cached -data. Partial pathnames are interpreted relative to the current working -directory, which is also the default value if this argument is omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command flushes from the cache all data fetched from the -volume that contains the current working directory: -

       % fs flushvolume 
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs flush -

    fs flushmount -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf143.htm b/doc/html/AdminReference/auarf143.htm deleted file mode 100644 index 52949907a..000000000 --- a/doc/html/AdminReference/auarf143.htm +++ /dev/null @@ -1,75 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs getcacheparms

    - - - - - - - - -

    Purpose -

    Displays the current size of the cache and the amount being used -

    Synopsis -

    fs getcacheparms [-help]
    -   
    -fs getca [-h]
    -
    -

    Description -

    The fs getcacheparms command displays the current size of the -cache (which can be in memory or on disk), and the amount currently in -use. -

    The reported statistics are from kernel memory, so the reported size can -differ from the setting specified in the /usr/vice/etc/cacheinfo -file on a machine using a disk cache, if the fs setcachesize -command has been used to alter cache size. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output reports -

       AFS using amount used of the cache's available size 1K byte blocks.
    -   
    -
    -

    where amount used is the number of kilobyte blocks currently used -to cache data and status information, and size is the total current -cache size. -

    Examples -

    The following example shows the output on a machine with a 25000 kilobyte -cache. -

       % fs getcacheparms
    -   AFS using 22876 of the cache's available 25000 1K byte blocks.
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs setcachesize -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf144.htm b/doc/html/AdminReference/auarf144.htm deleted file mode 100644 index 0890f16a4..000000000 --- a/doc/html/AdminReference/auarf144.htm +++ /dev/null @@ -1,76 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs getcellstatus

    - - - - - - -

    Purpose -

    Reports whether the machine can run setuid programs from a specified cell -

    Synopsis -

    fs getcellstatus -cell <cell name>+  [-help]
    -   
    -fs getce -c <cell name>+  [-h]
    -
    -

    Description -

    The fs getcellstatus command reports whether the Cache Manager -allows programs fetched from each specified cell to run with setuid -permission. To set a cell's setuid status, use the fs -setcell command; its reference page fully describes how AFS treats -setuid programs. -

    Options -

    -

    -cell -
    Names each cell for which to report setuid status. Provide the -fully qualified domain name, or a shortened form that disambiguates it from -the other cells listed in the local /usr/vice/etc/CellServDB -file. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output reports one of the following two values as appropriate: -

       Cell cell status: setuid allowed
    -   Cell cell status: no setuid allowed
    -   
    -
    -

    Examples -

    The following example indicates that programs from the cell -abc.com are not allowed to run with setuid -permission. -

       % fs getcellstatus abc.com
    -   Cell abc.com status: no setuid allowed
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    CellServDB (client version) -

    fs setcell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf145.htm b/doc/html/AdminReference/auarf145.htm deleted file mode 100644 index 9845a1d8b..000000000 --- a/doc/html/AdminReference/auarf145.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs getclientaddrs

    - - - - - -

    Purpose -

    Displays the client interfaces to register with the File Server -

    Synopsis -

    fs getclientaddrs [-help]
    -      
    -fs gc [-h]
    -     
    -fs getcl [-h]
    -
    -

    Description -

    The fs getclientaddrs command displays the IP addresses of the -interfaces that the local Cache Manager registers with a File Server when -first establishing a connection to it. -

    The File Server uses the addresses when it initiates a remote procedure -call (RPC) to the Cache Manager (as opposed to responding to an RPC sent by -the Cache Manager). There are two common circumstances in which the -File Server initiates RPCs: when it breaks callbacks and when it pings -the client machine to verify that the Cache Manager is still -accessible. -

    If an RPC to that interface fails, the File Server simultaneously sends -RPCs to all of the other interfaces in the list, to learn which of them are -still available. Whichever interface replies first is the one to which -the File Server then sends pings and RPCs to break callbacks. -

    The fs setclientaddrs reference page explains how the Cache -Manager constructs the list automatically in kernel memory as it initializes, -and how to use that command to alter the kernel list after -initialization. -

    Cautions -

    The File Server uses the list of interfaces displayed by this command only -when selecting an alternative interface after a failed attempt to break a -callback or ping the Cache Manager. When responding to the Cache -Manager's request for file system data, the File Server replies to the -interface which the Cache Manager used when sending the request. If the -File Server's reply to a data request fails, the file server -machine's network routing configuration determines which alternate -network routes to the client machine are available for resending the -reply. -

    The displayed list applies to all File Servers to which the Cache Manager -connects in the future. It is not practical to register different sets -of addresses with different File Servers, because it requires using the -fs setclientaddrs command to change the list and then rebooting -each relevant File Server immediately. -

    The displayed list is not necessarily governing the behavior of a given -File Server, if an administrator has issued the fs setclientaddrs -command since the Cache Manager first contacted that File Server. It -determines only which addresses the Cache Manager registers when connecting to -File Servers in the future. -

    The list of interfaces does not influence the Cache Manager's choice -of interface when establishing a connection to a File Server. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output displays the IP address of each interface that the Cache Manager -is currently registering with File Server processes that it contacts, with one -address per line. The File Server initially uses the first address for -breaking callbacks and pinging the Cache Manager, but the ordering of the -other interfaces is not meaningful. -

    Examples -

    The following example displays the two interfaces that the Cache Manager is -registering with File Servers. -

       % fs getclientaddrs
    -   192.12.105.68
    -   192.12.108.84
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fileserver -

    fs setclientaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf146.htm b/doc/html/AdminReference/auarf146.htm deleted file mode 100644 index 36eeb14c4..000000000 --- a/doc/html/AdminReference/auarf146.htm +++ /dev/null @@ -1,173 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs getserverprefs

    - - - - - - - -

    Purpose -

    Displays the Cache Manager's preference ranks for file server or VL -Server machines -

    Synopsis -

    fs getserverprefs [-file <output to named file>]  
    -                  [-numeric]  [-vlservers]  [-help]
    -     
    -fs gets [-f <output to named file>]  [-n]  [-v]  [-h]
    -    
    -fs gp [-f <output to named file>]  [-n]  [-v]  [-h]
    -
    -

    Description -

    The fs getserverprefs command displays preference ranks for file -server machine interfaces (file server machines run the fs process) -or, if the -vlserver flag is provided, for Volume Location (VL) -Server machines (which run the vlserver process). For file -server machines, the Cache Manager tracks up to 15 interfaces per machine and -assigns a separate rank to each interface. The ranks indicate the order -in which the local Cache Manager attempts to contact the interfaces of -machines that are housing a volume when it needs to fetch data from the -volume. For VL Server machines, the ranks indicate the order in which -the Cache Manager attempts to contact a cell's VL Servers when requesting -VLDB information. For both types of rank, lower integer values are more -preferred. -

    The Cache Manager stores ranks in kernel memory. Once set, a rank -persists until the machine reboots, or until the fs setserverprefs -command is used to change it. The reference page for the fs -setserverprefs command explains how the Cache Manager sets default -ranks, and how to use that command to change the default values. -

    Default VL Server ranks range from 10,000 to 10,126, and the Cache Manager -assigns them to every machine listed in its copy of the -/usr/vice/etc/CellServDB file. When the Cache Manager needs -to fetch VLDB information from a cell, it compares the ranks for the VL Server -machines belonging to that cell, and attempts to contact the VL Server with -the lowest integer rank. If the Cache Manager cannot reach the VL -Server (because of server process, machine or network outage), it tries to -contact the VL Server with the next lowest integer rank, and so on. If -all of a cell's VL Server machines are unavailable, the Cache Manager -cannot fetch data from the cell. -

    Default file server ranks range from 5,000 to 40,000, excluding the range -used for VL Servers (10,000 to 10,126); the maximum possible rank is -65,534. When the Cache Manager needs to fetch data from a volume, it -compares the ranks for the interfaces of machines that house the volume, and -attempts to contact the interface that has the lowest integer rank. If -it cannot reach the fileserver process via that interface (because -of server process, machine or network outage), it tries to contact the -interface with the next lowest integer rank, and so on. If it cannot -reach any of the interfaces for machines that house the volume, it cannot -fetch data from the volume. -

    For both file server machines and VL Server machines, it is possible for a -machine or interface in a foreign cell to have the same rank as a machine or -interface in the local cell. This does not present a problem, because -the Cache Manager only ever compares ranks for machines belonging to one cell -at a time. -

    Options -

    -

    -file -
    Specifies the full pathname of a file to which to write the preference -ranks. If the specified file already exists, the command overwrites its -contents. If the pathname is invalid, the command fails. If this -argument is not provided, the preference ranks appear on the standard output -stream. -

    -numeric -
    Displays the IP addresses of file server machine interfaces or VL Server -machines, rather than their hostnames. If this argument is not -provided, the fs command interpreter has the IP addresses -translated to hostnames such as fs1.abc.com. -

    -vlservers -
    Displays preference ranks for VL Server machines rather than file server -machine interfaces. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output consists of a separate line for each file server machine -interface or VL Server machine, pairing the machine's hostname or IP -address with its rank. The Cache Manager stores IP addresses in its -kernel list of ranks, but the command by default identifies interfaces by -hostname, by calling a translation routine that refers to either the -cell's name service (such as the Domain Name Server) or the local host -table. If an IP address appears in the output, it is because the -translation attempt failed. To bypass the translation step and display -IP addresses rather than hostnames, include the -numeric -flag. This can significantly speed the production of output. -

    By default, the command writes to the standard output stream. Use -the -file argument to write the output to a file instead. -

    Examples -

    The following example displays the local Cache Manager's preference -ranks for file server machines. The local machine belongs to the AFS -cell named abc.com, and in this example the ranks of file -server machines in its local cell are lower than the ranks of file server -machines from the foreign cell, def.com. It is not -possible to translate the IP addresses of two machines on the 138.255 -network. -

       % fs getserverprefs
    -   fs2.abc.com           20007
    -   fs3.abc.com           30002
    -   fs1.abc.com           20011
    -   fs4.abc.com           30010
    -   server1.def.com       40002
    -   138.255.33.34         40000
    -   server6.def.com       40012
    -   138.255.33.37         40005
    -   
    -
    -

    The following example shows hows the output displays IP addresses when the --numeric flag is included, and illustrates how network proximity -determines default ranks (as described on the fs setserverprefs -reference page). The local machine has IP address -192.12.107.210, and the two file server machines on its -subnetwork have ranks of 20,007 and 20,011. The two file server -machines on a different subnetwork of the local machine's network have -higher ranks, 30,002 and 30,010, whereas the ranks of the remaining machines -range from 40,000 to 40,012 because they are in a completely different -network. -

       % fs getserverprefs -numeric
    -   192.12.107.214          20007
    -   192.12.105.99           30002
    -   192.12.107.212          20011
    -   192.12.105.100          30010
    -   138.255.33.41           40002
    -   138.255.33.34           40000
    -   138.255.33.36           40012
    -   138.255.33.37           40005
    -    
    -
    -

    The example shows how the -vlservers flag displays preference -ranks for VL Server machines: -

       % fs getserverprefs -vlservers
    -   fs2.abc.com            10052
    -   fs3.abc.com            10113
    -   fs1.abc.com            10005
    -    
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs setserverprefs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf147.htm b/doc/html/AdminReference/auarf147.htm deleted file mode 100644 index 5eb6e6e43..000000000 --- a/doc/html/AdminReference/auarf147.htm +++ /dev/null @@ -1,85 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs help

    - - - -

    Purpose -

    Displays the syntax of specified fs commands or lists functional -descriptions of all fs commands -

    Synopsis -

    fs help [-topic <help string>+]  [-help]
    -   
    -fs h [-t <help string>+]  [-h]
    -
    -

    Description -

    The fs help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every fs command. -

    To display every fs command whose name or short description -includes a specified keyword, use the fs apropos command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the fs part of the command name, providing only -the operation code (for example, specify setacl, not fs -setacl). If this argument is omitted, the output briefly -describes every fs command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each fs command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the fs -setacl command: -

       % fs help setacl
    -   fs setacl: set access control list
    -   aliases: sa 
    -   Usage: fs setacl -dir <directory>+ 
    -   -acl <access list entries>+ [-clear] [-negative] [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs -

    fs apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf148.htm b/doc/html/AdminReference/auarf148.htm deleted file mode 100644 index 0e7196075..000000000 --- a/doc/html/AdminReference/auarf148.htm +++ /dev/null @@ -1,175 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs listacl

    - - - - - - -

    Purpose -

    Displays ACLs -

    Synopsis -

    fs listacl [-path <dir/file path>+]  [-id]  [-if]  [-help]
    -   
    -fs la [-p <dir/file path>+]  [-id]  [-if]  [-h] 
    -   
    -fs lista [-p <dir/file path>+]  [-id]  [-if]  [-h] 
    -
    -

    Description -

    The fs listacl command displays the access control list (ACL) -associated with each specified file, directory, or symbolic link. The -specified element can reside in the DFS filespace if the issuer is using the -AFS/DFS Migration Toolkit Protocol Translator to access DFS data (and DFS does -implement per-file ACLs). To display the ACL of the current working -directory, omit the -path argument. -

    To alter an ACL, use the fs setacl command. To copy an -ACL from one directory to another, use the fs copyacl -command. To remove obsolete entries from an ACL, use the fs -cleanacl command. -

    Cautions -

    Placing a user or group on the Negative rights section of the -ACL does not guarantee denial of permissions, if the Normal rights -section grants the permissions to members of the -system:anyuser group. In that case, the user needs -only to issue the unlog command to obtain the permissions granted -to the system:anyuser group. -

    Options -

    -

    -path -
    Names each directory or file for which to display the ACL. For AFS -files, the output displays the ACL from the file's parent directory; -DFS files do have their own ACL. Incomplete pathnames are interpreted -relative to the current working directory, which is also the default value if -this argument is omitted. -

    -id -
    Displays the Initial Container ACL of each DFS directory. This -argument is supported only on DFS directories accessed via the AFS/DFS -Migration Toolkit Protocol Translator. -

    -if -
    Displays the Initial Object ACL of each DFS directory. This -argument is supported only on DFS directories accessed via the AFS/DFS -Migration Toolkit Protocol Translator. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of the output for each file, directory, or symbolic link -reads as follows: -

       Access list for directory is
    -   
    -
    -

    If the issuer used shorthand notation in the pathname, such as the period -(.) to represent the current current directory, that -notation sometimes appears instead of the full pathname of the -directory. -

    Next, the Normal rights header precedes a list of users and -groups who are granted the indicated permissions, with one pairing of user or -group and permissions on each line. If negative permissions have been -assigned to any user or group, those entries follow a Negative -rights header. The format of negative entries is the same as -those on the Normal rights section of the ACL, but the user or -group is denied rather than granted the indicated permissions. -

    AFS does not implement per-file ACLs, so for a file the command displays -the ACL on its directory. The output for a symbolic link displays the -ACL that applies to its target file or directory, rather than the ACL on the -directory that houses the symbolic link. -

    The permissions for AFS enable the possessor to perform the indicated -action: -

    -

    a -
    (administer): change the entries on the ACL -

    d -
    (delete): remove files and subdirectories from the -directory or move them to other directories -

    i -
    (insert): add files or subdirectories to the directory by -copying, moving or creating -

    k -
    (lock): set read locks or write locks on the files in the -directory -

    l -
    (lookup): list the files and subdirectories in the -directory, stat the directory itself, and issue the fs listacl -command to examine the directory's ACL -

    r -
    (read): read the contents of files in the directory; -issue the ls -l command to stat the elements in the directory -

    w -
    (write): modify the contents of files in the directory, -and issue the UNIX chmod command to change their mode bits -

    A, B, C, D, E, -F, G, H: -
    Have no default meaning to the AFS server processes, but are made -available for applications to use in controlling access to the -directory's contents in additional ways. The letters must be -uppercase. -
    -

    For DFS files and directories, the permissions are similar, except that the -DFS x (execute) permission replaces the AFS l -(lookup) permission, DFS c (control) replaces -AFS a (administer), and there is no DFS equivalent to -the AFS k (lock) permission. The meanings of the -various permissions also differ slightly, and DFS does not implement negative -permissions. For a complete description of DFS permissions, see the DFS -documentation and the IBM AFS/DFS Migration Toolkit Administration Guide -and Reference. -

    Examples -

    The following command displays the ACL on the home directory of the user -pat (the current working directory), and on its private -subdirectory. -

       % fs listacl -path . private
    -   Access list for . is
    -   Normal rights:
    -      system:authuser rl
    -      pat rlidwka
    -      pat:friends rlid
    -   Negative rights:
    -      smith rlidwka
    -   Access list for private is
    -   Normal rights:
    -      pat rlidwka
    -   
    -
    -

    Privilege Required -

    If the -path argument names an AFS directory, the issuer must -have the l (lookup) permission on its ACL and the ACL -for every directory that precedes it in the pathname. -

    If the -path argument names an AFS file, the issuer must have -the l (lookup) and r (read) -permissions on the ACL of the file's directory, and the l -permission on the ACL of each directory that precedes it in the -pathname. -

    If the -path argument names a DFS directory or file, the issuer -must have the x (execute) permission on its ACL and on -the ACL of each directory that precedes it in the pathname. -

    Related Information -

    fs cleanacl -

    fs copyacl -

    fs setacl -

    IBM AFS/DFS Migration Toolkit Administration Guide and Reference -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf149.htm b/doc/html/AdminReference/auarf149.htm deleted file mode 100644 index 7aee8b669..000000000 --- a/doc/html/AdminReference/auarf149.htm +++ /dev/null @@ -1,89 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs listcells

    - - - - - - - - - -

    Purpose -

    Displays the database server machines in each cell known to the Cache -Manager -

    Synopsis -

    fs listcells [-numeric]  [-help]
    -   
    -fs listc [-n]  [-h]
    -
    -

    Description -

    The fs listcells command formats and displays the list of the -database server machines that the Cache Manager stores in kernel memory for -its home cell and foreign cells. -

    At each reboot of the client machine, the Cache Manager copies the contents -of /usr/vice/etc/CellServDB into kernel memory. To modify -the list between reboots, use the fs newcell command. -

    Options -

    -

    -numeric -
    Displays each database server machine's IP address rather than -hostname. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes a line for each cell included in the Cache -Manager's kernel memory list, in the following format: -

       Cell cell on hosts database server machines
    -   
    -
    -

    The Cache Manager stores IP addresses, but by default has them translated -to hostnames before reporting them, by passing them to the cell's name -service (such as the Domain Name Service or a local host table). The -name service sometimes returns hostnames in uppercase letters, or an IP -address if it cannot resolve a name. -

    Using the -numeric flag bypasses the translation to hostnames, -which can result in significantly faster production of output. The -output includes IP addresses only. -

    Examples -

    The following example shows output for several cells as illustrations of -the different formats for machine names: -

       % fs listcells
    -   Cell abc.com on hosts fs1.abc.com fs2.abc.com fs3.abc.com
    -   Cell stateu.edu on hosts DB1.FS.STATEU.EDU 
    -      DB2.FS.STATEU.EDU DB3.FS.STATEU.EDU
    -   Cell def.gov on hosts 138.255.0.2 sv3.def.gov
    -    
    -
    -

    Privilege Required -

    None -

    Related Information -

    CellServDB (client version) -

    fs newcell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf150.htm b/doc/html/AdminReference/auarf150.htm deleted file mode 100644 index 192094c0a..000000000 --- a/doc/html/AdminReference/auarf150.htm +++ /dev/null @@ -1,113 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs listquota

    - - - - - - - - - - - - - - - -

    Purpose -

    Displays quota information for the volume containing a file or -directory. -

    Synopsis -

    fs listquota [-path <dir/file path>+]  [-help]  
    -   
    -fs listq [-p <dir/file path>+]  [-h]
    -      
    -fs lq [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs listquota command displays information about the volume -containing each specified directory or file (its name, quota, and amount of -disk space used), along with an indicator of the percentage of space used on -the host partition. -

    To display more information about the host partition, use the fs -examine command. -

    To set volume quota, use the fs setquota or fs setvol -command. -

    Options -

    -

    -path -
    Names a file or directory that resides in the volume about which to -produce output. Partial pathnames are interpreted relative to the -current working directory, which is also the default value if this argument is -omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output displays information about the volume that houses each specified -directory or file, in a tabular format that uses the following headers: -

    -

    Volume Name -
    The name of the volume. -

    Quota -
    The volume's quota in kilobytes, or the string no limit to -indicate an unlimited quota. -

    Used -
    The number of kilobytes of quota used. -

    % Used -
    The percentage of the volume's quota that is used (the -Used statistic divided by the Quota statistic, times -100). -

    Partition -
    The percentage of space used on the partition that houses the -volume. Although not directly related to how much of the user's -quota is used, it is reported because a full partition can cause writing of -data back to the volume to fail even when the volume has not reached its -quota. -
    -

    Examples -

    The following example shows the output for the volume -user.smith: -

       % fs listquota -path /afs/abc.com/usr/smith
    -   Volume Name     Quota    Used    % Used   Partition 
    -   user.smith      15000    5071       34%         86%   
    -    
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs diskfree -

    fs examine -

    fs quota -

    fs setquota -

    fs setvol -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf151.htm b/doc/html/AdminReference/auarf151.htm deleted file mode 100644 index e082cfd7b..000000000 --- a/doc/html/AdminReference/auarf151.htm +++ /dev/null @@ -1,120 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs lsmount

    - - - - - -

    Purpose -

    Reports the volume for which a directory is the mount point. -

    Synopsis -

    fs lsmount -dir <directory>+  [-help]
    -   
    -fs ls -d <directory>+  [-h] 
    -
    -

    Description -

    The fs lsmount command reports the volume for which each -specified directory is a mount point, or indicates with an error message that -a directory is not a mount point or is not in AFS. -

    To create a mount point, use the fs mkmount command. To -remove one, use the fs rmmount command. -

    Options -

    -

    -dir -
    Names the directory that serves as a mount point for a volume. The -last element in the pathname provided must be an actual name, not a shorthand -notation such as one or two periods (. or -..). -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the specified directory is a mount point, the output is of the following -form: -

       'directory' is a mount point for volume 'volume name'
    -   
    -
    -

    where -

      -

    • A number sign (#) precedes the volume name string for -a regular mount point. -

    • A percent sign (%) precedes the volume name string for -a read/write mount point. -

    • A cell name and colon (:) follow the number or percent -sign and precede the volume name string for a cellular mount -point. -
    -

    The fs mkmount reference page explains how the Cache Manager -interprets each of the three types of mount points. -

    If the directory is a symbolic link to a mount point, the output is of the -form: -

       'directory' is a symbolic link, leading to a mount point for volume 'volume name'
    -   
    -
    -

    If the directory is not a mount point or is not in AFS, the output -reads: -

       'directory' is not a mount point.
    -   
    -
    -

    If the output is garbled, it is possible that the mount point has become -corrupted in the local AFS client cache. Use the fs -flushmount command to discard it, which forces the Cache Manager to -refetch the mount point. -

    Examples -

    The following example shows the mount point for the home directory of user -smith: -

       % fs lsmount /afs/abc.com/usr/smith
    -   '/afs/abc.com/usr/smith' is a mount point for volume '#user.smith'
    -   
    -
    -

    The following example shows both the regular and read/write mount points -for the ABC Corporation cell's root.cell volume. -

       % fs lsmount /afs/abc.com
    -   '/afs/abc.com' is a mount point for volume '#root.cell'
    -   
    -   % fs lsmount /afs/.abc.com
    -   '/afs/.abc.com' is a mount point for volume '%root.cell'
    -   
    -
    -

    The following example shows a cellular mount point: the State -University cell's root.cell volume as mounted in the -ABC Corporation cell's tree. -

       % fs lsmount /afs/stateu.edu
    -   '/afs/stateu.edu' is a mount point for volume '#stateu.edu:root.cell'
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -dir argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs flushmount -

    fs mkmount -

    fs rmmount -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf152.htm b/doc/html/AdminReference/auarf152.htm deleted file mode 100644 index f49714c42..000000000 --- a/doc/html/AdminReference/auarf152.htm +++ /dev/null @@ -1,82 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs messages

    - - - - -

    Purpose -

    Sets whether the Cache Manager writes log messages -

    Synopsis -

    fs messages [-show <[user|console|all|none]>]  [-help]
    -    
    -fs me [-s <[user|console|all|none]>]  [-h]
    -
    -

    Description -

    The fs messages command controls whether the Cache Manager -displays status and warning messages on user screens, the client machine -console, on both, or on neither. -

    There are two types of Cache Manager messages: -

      -

    • User messages provide user-level status and warning information, and the -Cache Manager directs them to user screens. -

    • Console messages provide system-level status and warning information, and -the Cache Manager directs them to the client machine's designated -console. -
    -

    Disabling messaging completely is not recommended, because the messages -provide useful status and warning information. -

    Options -

    -

    -show -
    Specifies the types of messages to display. Choose one of the -following values: -
    -

    user -
    Send user messages to user screens -

    console -
    Send console messages to the console -

    all -
    Send user messages to user screens and console messages to the console -(the default if the -show argument is omitted) -

    none -
    Do not send any messages to user screens or the console -
    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command instructs the Cache Manager to display both types of -messages: -

       % fs messages -show all
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    afsd -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf153.htm b/doc/html/AdminReference/auarf153.htm deleted file mode 100644 index 6091f1fc5..000000000 --- a/doc/html/AdminReference/auarf153.htm +++ /dev/null @@ -1,240 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs mkmount

    - - - - - -

    Purpose -

    Creates a mount point for a volume -

    Synopsis -

    fs mkmount -dir <directory>  -vol <volume name>  [-cell <cell name>]
    -           [-rw]  [-fast]  [-help]
    -   
    -fs mk -d <directory>  -v <volume name>  [-c <cell name>]  [-r]  [-f]  [-h]
    -
    -

    Description -

    The fs mkmount command creates a mount point for the volume -named by the -vol argument at the location in the AFS file space -specified by the -dir argument. The mount point looks like a -standard directory element, and serves as the volume's root directory, -but is actually a special file system object that refers to an AFS -volume. When the Cache Manager first encounters a given mount point -during pathname traversal, it contacts the VL Server to learn which file -server machines house the indicated volume, then fetches a copy of the -volume's root directory from the appropriate file server machine. -

    It is possible, although not recommended, to create more than one mount -point to a volume. The Cache Manager can become confused if a volume is -mounted in two places along the same path through the filespace. -

    The Cache Manager observes three basic rules as it traverses the AFS -filespace and encounters mount points: -

      -

    • Rule 1: Access Backup and Read-only Volumes When -Specified -

      When the Cache Manager encounters a mount point that specifies a volume -with either a .readonly or a .backup -extension, it accesses that type of volume only. If a mount point does -not have either a .backup or .readonly -extension, the Cache Manager uses Rules 2 and 3. -

      For example, the Cache Manager never accesses the read/write version of a -volume if the mount point names the backup version. If the specified -version is inaccessible, the Cache Manager reports an error. -

    • Rule 2: Follow the Read-only Path When Possible -

      If a mount point resides in a read-only volume and the volume that it -references is replicated, the Cache Manager attempts to access a read-only -copy of the volume; if the referenced volume is not replicated, the Cache -Manager accesses the read/write copy. The Cache Manager is thus said to -prefer a read-only path through the filespace, accessing read-only -volumes when they are available. -

      The Cache Manager starts on the read-only path in the first place because -it always accesses a read-only copy of the root.afs volume -if it exists; the volume is mounted at the root of a cell's AFS -filespace (named /afs by convention). That is, if the -root.afs volume is replicated, the Cache Manager attempts to -access a read-only copy of it rather than the read/write copy. This -rule then keeps the Cache Manager on a read-only path as long as each -successive volume is replicated. The implication is that both the -root.afs and root.cell volumes must be -replicated for the Cache Manager to access replicated volumes mounted below -them in the AFS filespace. The volumes are conventionally mounted at -the /afs and /afs/cellname directories, -respectively. -

    • Rule 3: Once on a Read/write Path, Stay There -

      If a mount point resides in a read/write volume and the volume name does -not have a .readonly or a .backup -extension, the Cache Manager attempts to access only the a read/write version -of the volume. The access attempt fails with an error if the read/write -version is inaccessible, even if a read-only version is accessible. In -this situation the Cache Manager is said to be on a read/write path -and cannot switch back to the read-only path unless mount point explicitly -names a volume with a .readonly extension. (Cellular -mount points are an important exception to this rule, as explained in the -following discussion. -

    -

    There are three types of mount points, each appropriate for a different -purpose because of the manner in which the Cache Manager interprets -them. -

      -

    • When the Cache Manager crosses a regular mount point, it obeys -all three of the mount point traversal rules previously described. To -create a regular mount point, include only the required -dir and --vol arguments to the fs mkmount command. - - -
      Note:A regular mount point does not force the Cache Manager always to access -read-only volumes (it is explicitly not a "read-only mount point"). If -a volume is not replicated, the third traversal rule means that the Cache -Manager still accesses the read/write volume when that is the only type -available. However, if the Cache Manager is to access the read-only -version of a replicated volume named by a regular mount point, all volumes -that are mounted above it in the pathname must also be replicated. -
      -

    • When the Cache Manager crosses a read/write mount point, it -attempts to access only the volume version named in the mount point. If -the volume name is the base (read/write) form, without a -.readonly or .backup extension, the Cache -Manager accesses the read/write version of the volume, even if it is -replicated. In other words, the Cache Manager disregards the second -mount point traversal rule when crossing a read/write mount point: it -switches to the read/write path through the filespace. - - -

      To create a read/write mount point, include the -rw flag on the -fs mkmount command. It is conventional to create only one -read/write mount point in a cell's filespace, using it to mount the -cell's root.cell volume just below the AFS filespace -root (by convention, /afs/.cellname). See -the IBM AFS Quick Beginnings for instructions and the chapter about -volume management in the IBM AFS Administration Guide for further -discussion. -

      Creating a read/write mount point for a read-only or backup volume is -acceptable, but unnecessary. The first rule of mount point traversal -already specifies that the Cache Manager accesses them if the volume name in a -regular mount point has a .readonly or -.backup extension. -

    • When the Cache Manager crosses a cellular mount point, it -accesses the indicated volume in the specified cell, which is normally a -foreign cell. (If the mount point does not name a cell along with the -volume, the Cache Manager accesses the volume in the cell where the mount -point resides.) The Cache Manager disregards the third mount point -traversal rule when crossing a regular cellular mount point: it accesses -a read-only version of the volume if it is replicated, even if the volume that -houses the mount point is read/write. Switching to the read-only path -in this way is designed to avoid imposing undue load on the file server -machines in foreign cells. - - - -

      To create a regular cellular mount point, include the -cell -argument on the fs mkmount command. It is conventional to -create cellular mount points only at the second level in a cell's -filespace, using them to mount foreign cells' root.cell -volumes just below the AFS filespace root (by convention, at -/afs/foreign_cellname). The mount point enables -local users to access the foreign cell's filespace, assuming they have -the necessary permissions on the ACL of the volume's root directory and -that there is an entry for the foreign cell in each local client -machine's /usr/vice/etc/CellServDB file. In the output -of the fs lsmount command, the cell name and a colon -(:) appear between the initial number sign and the volume -name in a regular cellular mount point name. -

    -

    Options -

    -

    -dir -
    Names the directory to create as a mount point. The directory must -not already exist. Relative pathnames are interpreted with respect to -the current working directory. -

    Specify the read/write path to the directory, to avoid the failure that -results from attempting to create a new mount point in a read-only -volume. By convention, the read/write path is indicated by placing a -period before the cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -Description section of this reference page. -

    -vol -
    Specifies the name or volume ID number of the volume to mount. If -appropriate, add the .readonly or .backup -extension to the name, or specify the appropriate volume ID number. -

    -cell -
    Names the cell in which the volume resides (creates a cellular mount -point). Provide the fully qualified domain name, or a shortened form -that disambiguates it from the other cells listed in the local -/usr/vice/etc/CellServDB file. -

    If this argument is omitted, no cell indicator appears in the mount -point. When the Cache Manager interprets it, it assumes that the volume -named in the mount point resides in the same cell as the volume that houses -the mount point. -

    -rw -
    Creates a read/write mount point. Omit this flag to create a -regular mount point. -

    -fast -
    Prevents the Volume Location (VL) Server from checking that the volume has -a VLDB entry and printing a warning message if it does not. Whether or -not this flag is included, the File Server creates the mount point even when -the volume has no VLDB entry. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command creates a regular mount point, mounting the volume -user.smith at -/afs/abc.com/usr/smith: -

       % cd /afs/abc.com/usr
    -      
    -   % fs mkmount -dir smith -vol user.smith
    -   
    -
    -

    The following commands create a read/write mount point and a regular mount -point for the ABC Corporation cell's root.cell volume -in that cell's file tree. The second command follows the -convention of putting a period at the beginning of the read/write mount -point's name. -

       % fs mkmount -dir /afs/abc.com -vol root.cell
    -   
    -   % fs mkmount -dir /afs/.abc.com -vol root.cell -rw
    -   
    -
    -

    The following command mounts the State University cell's -root.cell volume in the ABC Corporation cell's file -tree, creating a regular cellular mount point called -/afs/stateu.edu. When a ABC Corporation Cache Manager -encounters this mount point, it crosses into the State University cell on a -read-only path. -

       % fs mkmount -dir /afs/stateu.edu -vol root.cell -c stateu.edu
    -   
    -
    -

    Privilege Required -

    The issuer must have the i (insert) and a -(administer) permissions on the ACL of the directory that is to -house the mount point. -

    Related Information -

    CellServDB (client version) -

    fs lsmount -

    fs rmmount -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf154.htm b/doc/html/AdminReference/auarf154.htm deleted file mode 100644 index bc07d0b1b..000000000 --- a/doc/html/AdminReference/auarf154.htm +++ /dev/null @@ -1,116 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs newcell

    - - - - - - - - -

    Purpose -

    Changes the kernel-resident list of a cell's database server machines -

    Synopsis -

    fs newcell -name <cell name> -servers <primary servers>+
    -           [-linkedcell <linked cell name>]  [-help]
    -   
    -fs n -n <cell name>  -s <primary servers>+  [-l <linked cell name>]  [-h]
    -
    -

    Description -

    The fs newcell command removes the Cache Manager's -kernel-resident list of database server machines for the cell specified by the --name argument and replaces it with the database server machines -named by the -servers argument. -

    Each time the machine reboots, the Cache Manager constructs the kernel list -of cells and database server machines by reading the local -/usr/vice/etc/CellServDB file. This command does not change -the CellServDB file, so any changes made with it persist only until -the next reboot, unless the issuer also edits the file. The output of -the fs listcells command reflects changes made with this command, -because that command consults the kernel-resident list rather than the -CellServDB file. -

    This command can introduce a completely new cell into the kernel-resident -list, but cannot make a cell inaccessible (it is not possible to remove a -cell's entry from the kernel-resident list by providing no values for the --server argument). To make a cell inaccessible, remove its -entry from the CellServDB file and reboot the machine. -

    If the -name argument names a DCE cell, then the --servers argument names DFS Fileset Location (FL) Server -machines. The -linkedcell argument specifies the name of the -AFS cell to link to a DCE cell for the purpose of DFS fileset location. -Refer to the IBM AFS/DFS Migration Toolkit Administration Guide and -Reference for more information on linking AFS clients to DCE cells using -this command or by editing the /usr/vice/etc/CellServDB -file. -

    Cautions -

    Some commands, such as the klog command, work correctly only -when the information is accurate for a cell in both the CellServDB -file and the kernel-resident list. -

    Options -

    -

    -name -
    Specifies the fully-qualified cell name of the AFS or DCE cell. -

    -servers -
    Specifies the fully-qualified hostnames of all AFS database server -machines or DFS Fileset Location (FL) Server machines for the cell named by -the -name argument. If FL Server machines are specified, the -local machine must be running the AFS/DFS Migration Toolkit Protocol -Translator. -

    -linkedcell -
    Specifies the name of the AFS cell to link to a DCE cell for the purpose -of DFS fileset location. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example changes the machine's kernel-resident list of -database server machines for the ABC Corporation cell to include the machines -db1.abc.com and -db2.abc.com: -

       % fs newcell -name abc.com -servers db1.abc.com db2.abc.com
    -   
    -
    -

    The following example links the DCE cell -dce.abc.com to the AFS cell -abc.com. The AFS client contacts the Fileset Location -(FL) servers db1.dce.abc.com and -db2.dce.abc.com for fileset location -information as it interprets a DFS pathname. -

       % fs newcell -name dce.abc.com -servers db1.dce.abc.com db2.dce.abc.com   \
    -                -linkedcell abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    CellServDB (client version) -

    fs listcells -

    IBM AFS/DFS Migration Toolkit Administration Guide and Reference -

    IBM AFS/DFS Migration Toolkit Administration Installation and -Configuration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf155.htm b/doc/html/AdminReference/auarf155.htm deleted file mode 100644 index e9aa7aebb..000000000 --- a/doc/html/AdminReference/auarf155.htm +++ /dev/null @@ -1,90 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs quota

    - - - - - -

    Purpose -

    Displays the percentage of quota used in the volume containing a directory -or file -

    Synopsis -

    fs quota [-path <dir/file path>+]  [-help]
    -    
    -fs q [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs quota command displays the percent of quota consumed in -the volume that contains each specified directory or file. -

    To display more detailed information about the volume and the partition it -resides on, use the fs examine and fs listquota -commands. -

    To set volume quota, use the fs setquota or fs setvol -command. -

    Options -

    -

    -path -
    Names each file or directory for which to display the quota consumed in -its parent volume. Partial pathnames are interpreted relative to the -current working directory, which is also the default value if this argument is -omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output reports the percent of volume quota used, in the following -format: -

       percent% of quota used.
    -   
    -
    -

    Examples -

    The following command lists the percent quota used of the volume housing -the current working directory: -

       % fs quota
    -   17% of quota used.
    -   
    -
    -

    The following command lists the percent quota used of both the volume -housing the current working directory's parent directory and the volume -housing the directory /afs/abc.com/usr/smith: -

       % fs quota -path  ..  /afs/abc.com/usr/smith
    -   43% of quota used.
    -   92% of quota used.
    -   
    -
    -

    Privilege Required -

    The issuer must have the l (lookup) permission on the -ACL of the root directory of the volume that houses the file or directory -named by the -path argument, and on the ACL of each directory that -precedes it in the pathname. -

    Related Information -

    fs examine -

    fs listquota -

    fs setquota -

    fs setvol -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf156.htm b/doc/html/AdminReference/auarf156.htm deleted file mode 100644 index 55aa8d529..000000000 --- a/doc/html/AdminReference/auarf156.htm +++ /dev/null @@ -1,75 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs rmmount

    - - - - - - -

    Purpose -

    Removes a mount point -

    Synopsis -

    fs rmmount -dir <directory>+  [-help]
    -      
    -fs rm -d <directory>+  [-h]
    -
    -

    Description -

    The fs rmmount command removes the mount point named by the --dir argument from the file system. The corresponding volume -remains on its host partition or partitions, but is inaccessible if there are -no other mount points for it. -

    Options -

    -

    -dir -
    Names the mount point to delete from the file system. The last -element in the pathname must be an actual name, not a shorthand notation such -as "dot" (.) or "dot dot" (. .). -

    Specify the read/write path to the directory, to avoid the failure that -results from attempting to delete a mount point from a read-only -volume. By convention, the read/write path is indicated by placing a -period before the cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes the mount points jones and -terry from the current working directory (the -/afs/abc.com/usr directory). -

       % fs rmmount jones terry
    -    
    -
    -

    Privilege Required -

    The issuer must have the d (delete) permission on the -ACL of the directory that houses each mount point. -

    Related Information -

    fs lsmount -

    fs mkmount -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf157.htm b/doc/html/AdminReference/auarf157.htm deleted file mode 100644 index f5fa9ef47..000000000 --- a/doc/html/AdminReference/auarf157.htm +++ /dev/null @@ -1,259 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setacl

    - - - - - - - - - - - - - -

    Purpose -

    Sets the ACL for a directory -

    Synopsis -

    fs setacl -dir <directory>+  -acl <access list entries>+  
    -          [-clear]  [-negative]  [-id]  [-if]  [-help]
    -    
    -fs sa -d <directory>+  -a <access list entries>+  
    -      [-c]  [-n]  [-id]  [-if]  [-h] 
    -      
    -fs seta -d <directory>+  -a <access list entries>+  
    -        [-c]  [-n]  [-id]  [-if]  [-h]
    -
    -

    Description -

    The fs setacl command adds the access control list (ACL) entries -specified with the -acl argument to the ACL of each directory named -by the -dir argument. -

    If the -dir argument designates a pathname in DFS filespace -(accessed via the AFS/DFS Migration Toolkit Protocol Translator), it can be a -file as well as a directory. The ACL must already include an entry for -mask_obj, however. For more details, refer to the IBM -AFS/DFS Migration Toolkit Administration Guide and Reference. -

    Only user and group entries are acceptable values for the -acl -argument. Do not place machine entries (IP addresses) directly on an -ACL; instead, make the machine entry a group member and place the group -on the ACL. -

    To completely erase the existing ACL before adding the new entries, provide -the -clear flag. To add the specified entries to the -Negative rights section of the ACL (deny rights to -specified users or groups), provide the -negative flag. -

    To display an ACL, use the fs listacl command. To copy an -ACL from one directory to another, use the fs copyacl -command. -

    Cautions -

    If the ACL already grants certain permissions to a user or group, the -permissions specified with the fs setacl command replace the -existing permissions, rather than being added to them. -

    Setting negative permissions is generally unnecessary and not -recommended. Simply omitting a user or group from the Normal -rights section of the ACL is normally adequate to prevent -access. In particular, note that it is futile to deny permissions that -are granted to members of the system:anyuser group on the -same ACL; the user needs only to issue the unlog command to -receive the denied permissions. -

    When including the -clear option, be sure to reinstate an entry -for each directory's owner that includes at least the l -(lookup) permission. Without that permission, it is -impossible to resolve the "dot" ( . ) and "dot dot" ( . . -) shorthand from within the directory. (The directory's owner does -implicitly have the a [administer] permission even on a -cleared ACL, but must know to use it to add other permissions.) -

    Options -

    -

    -dir -
    Names each AFS directory, or DFS directory or file, for which the set the -ACL. Partial pathnames are interpreted relative to the current working -directory. -

    Specify the read/write path to each directory (or DFS file), to avoid the -failure that results from attempting to change a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -acl -
    Defines a list of one or more ACL entries, each a pair that names -
      -

    • A user name or group name as listed in the Protection Database -

    • One or more ACL permissions, indicated either by combining the individual -letters or by one of the four acceptable shorthand words -
    -

    -

    in that order, separated by a space (thus every instance of this argument -has two parts). The accepted AFS abbreviations and shorthand words, and -the meaning of each, are as follows: -

    -

    a -
    (administer): change the entries on the ACL -

    d -
    (delete): remove files and subdirectories from the -directory or move them to other directories -

    i -
    (insert): add files or subdirectories to the directory by -copying, moving or creating -

    k -
    (lock): set read locks or write locks on the files in the -directory -

    l -
    (lookup): list the files and subdirectories in the -directory, stat the directory itself, and issue the fs listacl -command to examine the directory's ACL -

    r -
    (read): read the contents of files in the directory; -issue the ls -l command to stat the elements in the directory -

    w -
    (write): modify the contents of files in the directory, -and issue the UNIX chmod command to change their mode bits -

    A, B, C, D, E, F, G, H -
    Have no default meaning to the AFS server processes, but are made -available for applications to use in controlling access to the -directory's contents in additional ways. The letters must be -uppercase. -

    all -
    Equals all seven permissions (rlidwka). - - - - -

    none -
    No permissions. Removes the user/group from the ACL, but does not -guarantee they have no permissions if they belong to groups that remain on the -ACL. - - -

    read -
    Equals the r (read) and l -(lookup) permissions. - - -

    write -
    Equals all permissions except a (administer), that -is, rlidwk. - - -
    -

    -

    It is acceptable to mix entries that combine the individual letters with -entries that use the shorthand words, but not use both types of notation -within an individual pairing of user or group and permissions. -

    To learn the proper format and acceptable values for DFS ACL entries, see -the IBM AFS/DFS Migration Toolkit Administration Guide and -Reference. -

    -clear -
    Removes all existing entries on each ACL before adding the entries -specified with the -acl argument. -

    -negative -
    Places the specified ACL entries in the Negative -rights section of each ACL, explicitly denying the rights to the -user or group, even if entries on the accompanying Normal -rights section of the ACL grant them permissions. -

    This argument is not supported for DFS files or directories, because DFS -does not implement negative ACL permissions. -

    -id -
    Places the ACL entries on the Initial Container ACL of each DFS directory, -which are the only file system objects for which this flag is -supported. -

    -if -
    Places the ACL entries on the Initial Object ACL of each DFS directory, -which are the only file system objects for which this flag is -supported. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example adds two entries to the Normal rights -section of the current working directory's ACL: the first entry -grants r (read) and l (lookup) -permissions to the group pat:friends, while the other (using -the write shorthand) gives all permissions except a -(administer) to the user smith. -

       % fs setacl -dir . -acl pat:friends rl smith write
    -   
    -   % fs listacl -path .
    -   Access list for . is
    -   Normal rights:
    -      pat:friends rl
    -      smith rlidwk
    -   
    -
    -

    The following example includes the -clear flag, which removes -the existing permissions (as displayed with the fs listacl command) -from the current working directory's reports subdirectory and -replaces them with a new set. -

       % fs listacl -dir reports
    -   Access list for reports is
    -   Normal rights:
    -      system:authuser rl
    -      pat:friends rlid
    -      smith rlidwk
    -      pat rlidwka
    -   Negative rights:
    -      terry rl
    -   
    -   % fs setacl -clear -dir reports -acl pat all smith write system:anyuser rl
    -   
    -   % fs listacl -dir reports
    -   Access list for reports is
    -   Normal rights:
    -      system:anyuser rl
    -      smith rlidwk
    -      pat rlidwka
    -   
    -
    -

    The following example use the -dir and -acl switches -because it sets the ACL for more than one directory (both the current working -directory and its public subdirectory). -

       % fs setacl -dir . public -acl pat:friends rli
    -      
    -   % fs listacl -path . public
    -   Access list for . is
    -   Normal rights:
    -      pat rlidwka
    -      pat:friends rli
    -   Access list for public is
    -   Normal rights:
    -      pat rlidwka
    -      pat:friends rli
    -   
    -
    -

    Privilege Required -

    The issuer must have the a (administer) permission on -the directory's ACL; the directory's owner and the members of -the system:administrators group have the right implicitly, -even if it does not appear on the ACL. -

    Related Information -

    fs copyacl -

    fs listacl -

    fs mkmount -

    IBM AFS/DFS Migration Toolkit Administration Guide and Reference -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf158.htm b/doc/html/AdminReference/auarf158.htm deleted file mode 100644 index 7447c8f08..000000000 --- a/doc/html/AdminReference/auarf158.htm +++ /dev/null @@ -1,108 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setcachesize

    - - - - - - - - -

    Purpose -

    Sets the size of the disk cache -

    Synopsis -

    fs setcachesize [-blocks <size in 1K byte blocks (0 => reset)>]  
    -                [-reset]  [-help]
    -    
    -fs setca  [-b <size in 1K byte blocks (0 => reset)>]  [-r]  [-h]
    -      
    -fs cachesize [-b <size in 1K byte blocks (0 => reset)>]  [-r]  [-h]
    -  
    -fs ca [-b <size in 1K byte blocks (0 => reset)>]  [-r]  [-h]  
    -
    -

    Description -

    The fs setcachesize command changes the number of kilobyte -blocks of local disk space available to the Cache Manager for its data cache, -on machines that use a disk cache. The command is not operative on -machines that use a memory cache. -

    To return the cache size to the default value specified in the third field -of the local /usr/vice/etc/cacheinfo file, provide a value of -0 to the -blocks argument. -

    To return the cache size to the value set when the machine was last -rebooted, use the -reset flag instead of the -blocks -argument. This is normally the amount specified in the -cacheinfo file, unless the -blocks argument was included -on the afsd command to override the cacheinfo -value. -

    To display the current cache size and amount of cache in use, for both disk -and memory caches, use the fs getcacheparms command. -

    Cautions -

    This command is not operative on machines using a memory cache, and results -in an error message. To change memory cache size, edit the -cacheinfo file and reboot, or reboot and provide the --blocks argument to the afsd command. -

    On machines using a disk cache, do not set the cache size to exceed 85% to -90% of the actual disk space available for the cache directory. The -cache implementation itself requires a small amount of space on the -partition. -

    Options -

    -

    -blocks -
    Specifies the number of one-kilobyte blocks of disk space available for -the Cache Manager to devote to the cache. Provide a value of -0 to set cache size to the default specified in the -cacheinfo file. -

    -reset -
    Returns the cache size to the value set when the machine was last -booted. This agrees with the value in the cacheinfo file -unless the -blocks argument was used on the afsd -command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command sets the disk cache size to 25000 kilobyte -blocks. -

       % fs setcachesize -blocks 25000
    -   
    -
    -

    Both of the following commands reset the disk cache size to the value in -the cacheinfo file, assuming that the -blocks argument -to the afsd command was not used. -

       % fs setcachesize -blocks 0
    -   
    -   % fs setcachesize -reset
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    cacheinfo -

    afsd -

    fs getcacheparms -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf159.htm b/doc/html/AdminReference/auarf159.htm deleted file mode 100644 index aabf2319a..000000000 --- a/doc/html/AdminReference/auarf159.htm +++ /dev/null @@ -1,103 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setcell

    - - - - - - -

    Purpose -

    Allows or disallows running of setuid programs from specified cells -

    Synopsis -

    fs setcell -cell <cell name>+  [-suid]  [-nosuid]  [-help]
    -   
    -fs setce -c <cell name>+  [-s]  [-n]  [-h]
    -
    -

    Description -

    The fs setcell command sets whether the Cache Manager allows -programs (and other executable files) from each cell named by the --cell argument to run with setuid permission. By default, -the Cache Manager allows programs from its home cell to run with setuid -permission, but not programs from any foreign cells. A program belongs -to the same cell as the file server machine that houses the volume in which -the program's binary file resides, as specified in the file server -machine's /usr/afs/etc/ThisCell file. The Cache Manager -determines its own home cell by reading the /usr/vice/etc/ThisCell -file at initialization. -

    To enable programs from each specified cell to run with setuid permission, -include the -suid flag. To prohibit programs from running -with setuid permission, include the -nosuid flag, or omit both -flags. -

    The fs setcell command directly alters a cell's setuid -status as recorded in kernel memory, so rebooting the machine is -unnecessary. However, non-default settings do not persist across -reboots of the machine unless the appropriate fs setcell command -appears in the machine's AFS initialization file. -

    To display a cell's setuid status, issue the fs -getcellstatus command. -

    Cautions -

    AFS does not recognize effective UID: if a setuid program accesses -AFS files and directories, it does so using the current AFS identity of the -AFS user who initialized the program, not of the program's owner. -Only the local file system recognizes effective UID. -

    Only members of the system:administrators group can turn -on the setuid mode bit on an AFS file or directory. -

    When the setuid mode bit is turned on, the UNIX ls -l command -displays the third user mode bit as an s instead of an -x. However, the s does not appear on an AFS file -or directory unless setuid permission is enabled for the cell in which the -file resides. -

    Options -

    -

    -cell -
    Names each cell for which to set setuid status. Provide the fully -qualified domain name, or a shortened form that disambiguates it from the -other cells listed in the local /usr/vice/etc/CellServDB -file. -

    -suid -
    Allows programs from each specified cell to run with setuid -privilege. Provide it or the -nosuid flag, or omit both -flags to disallow programs from running with setuid privilege. -

    -nosuid -
    Prevents programs from each specified cell from running with setuid -privilege. Provide it or the -suid flag, or omit both flags -to disallow programs form running with setuid privilege. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command enables executable files from the State University -cell to run with setuid privilege on the local machine: -

       % fs setcell -cell stateu.edu -suid
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fs getcellstatus -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf160.htm b/doc/html/AdminReference/auarf160.htm deleted file mode 100644 index 40cff7d67..000000000 --- a/doc/html/AdminReference/auarf160.htm +++ /dev/null @@ -1,117 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setclientaddrs

    - - - - - -

    Purpose -

    Sets the client interfaces to register with the File Server -

    Synopsis -

    fs setclientaddrs [-address <client network interfaces>+]  [-help]
    -   
    -fs setcl [-a <client network interfaces>+]  [-h]
    -   
    -fs sc [-a <client network interfaces>+]  [-h]
    -
    -

    Description -

    The fs setclientaddrs command defines the IP addresses of the -interfaces that the local Cache Manager registers with a File Server when -first establishing a connection to it. -

    The File Server uses the addresses when it initiates a remote procedure -call (RPC) to the Cache Manager (as opposed to responding to an RPC sent by -the Cache Manager). There are two common circumstances in which the -File Server initiates RPCs: when it breaks callbacks and when it pings -the client machine to verify that the Cache Manager is still -accessible. -

    The list of interfaces specified with this command replaces the list that -the Cache Manager constructs and records in kernel memory as it -initializes. At that time, if the file /usr/vice/etc/NetInfo -exists on the client machine's local disk, the Cache Manager uses its -contents as the basis for the list of interfaces addresses. If the file -does not exist, the Cache Manager instead uses the network interfaces -configured with the operating system. It then removes from the list any -address included in the local /usr/vice/etc/NetRestrict -file. It records the final list in kernel memory. (An -administrator must create the NetInfo and NetRestrict -files; there are no default versions of them.) -

    If an RPC to that interface fails, the File Server simultaneously sends -RPCs to all of the other interfaces in the list, to learn which of them are -still available. Whichever interface replies first is the one to which -the File Server then sends pings and RPCs to break callbacks. -

    To list the interfaces that the Cache Manager is currently registering with -File Servers, use the fs getclientaddrs command. -

    Cautions -

    The list specified with this command persists in kernel memory only until -the client machine reboots. To preserve it across reboots, either list -the interfaces in the local /usr/vice/etc/NetInfo file, or place -the appropriate fs setclientaddrs command in the machine's AFS -initialization script. -

    Changes made with this command do not propagate automatically to File -Servers to which the Cache Manager has already established a -connection. To force such File Servers to use the revised list, either -reboot each file server machine, or change the NetInfo file and -reboot the client machine. -

    The fs command interpreter verifies that each of the addresses -specified as a value for the -address argument is actually -configured with the operating system on the client machine. If it is -not, the command fails with an error message that marks the address as a -Nonexistent interface. -

    Options -

    -

    -address -
    Specifies each IP address to place in the list of interfaces, in dotted -decimal format. Hostnames are not acceptable. Separate each -address with one or more spaces. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The message -

       Adding interface
    -   
    -
    -

    confirms that each new interface was added to the Cache Manager's -list. The address appears in hexadecimal format to match the notation -used in the File Server log, /usr/afs/logs/FileLog. -

    Examples -

    The following example sets the two interfaces that the Cache Manager -registers with File Servers. -

       % fs setclientaddrs 191.255.105.68 191.255.108.84
    -   Adding 0xbfff6944
    -   Adding 0xbfff6c54
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    NetInfo (client version) -

    NetRestrict (client version) -

    fileserver -

    fs getclientaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf161.htm b/doc/html/AdminReference/auarf161.htm deleted file mode 100644 index d7873d903..000000000 --- a/doc/html/AdminReference/auarf161.htm +++ /dev/null @@ -1,92 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setquota

    - - - - - -

    Purpose -

    Sets the maximum quota for the volume containing a file or directory -

    Synopsis -

    fs setquota [-path <dir/file path>]  -max <max quota in kbytes>  [-help]
    -   
    -fs setq [-p <dir/file path>]  -m <max quota in kbytes>  [-h] 
    -   
    -fs sq [-p <dir/file path>]  -m <max quota in kbytes>  [-h] 
    -
    -

    Description -

    The fs setquota command sets the quota (maximum possible size) -of the read/write volume that contains the directory or file named by the --path argument. -

    To set the quota on multiple volumes at the same time, use the fs -setvol command. -

    To display a volume's quota, use the fs examine, fs -listquota or fs quota command. -

    Options -

    -

    -path -
    Names the directory or file for which to set the host volume's -quota. Partial pathnames are interpreted relative to the current -working directory, which is also the default value if this argument is -omitted. -

    Specify the read/write path to the file or directory, to avoid the failure -that results from attempting to change a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -max -
    Sets the maximum amount of file server disk space the volume can -occupy. Specify the number of one-kilobyte blocks as a positive integer -(1024 is one megabyte). A value of 0 sets an -unlimited quota, but the size of the disk partition that houses the volume -places an absolute limit on the volume's size. -

    If the -path argument is omitted (to set the quota of the volume -housing the current working directory), the -max switch must be -included with this argument. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command imposes a maximum quota of 3000 kilobytes on the -volume that houses the /afs/abc.com/usr/smith -directory: -

       % fs setquota -path /afs/abc.com/usr/smith -max 3000
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators -group. -

    Related Information -

    fs examine -

    fs listquota -

    fs quota -

    fs mkmount -

    fs setvol -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf162.htm b/doc/html/AdminReference/auarf162.htm deleted file mode 100644 index 435639bda..000000000 --- a/doc/html/AdminReference/auarf162.htm +++ /dev/null @@ -1,270 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setserverprefs

    - - - - - - - -

    Purpose -

    Sets the Cache Manager's preference ranks for file server or VL Server -machines -

    Synopsis -

    fs setserverprefs [-servers <fileserver names and ranks>+]
    -                  [-vlservers <VL server names and ranks>+]
    -                  [-file <input from named file>]  [-stdin]  [-help]
    -   
    -fs sets [-se <fileserver names and ranks>+]  [-vl <VL server names and ranks>+]
    -        [-f <input from named file>]  [-st]  [-h]
    -   
    -fs sp [-se <fileserver names and ranks>+]  [-vl <VL server names and ranks>+]  
    -      [-f <input from named file>]  [-st]  [-h]
    -
    -

    Description -

    The fs setserverprefs command sets the local Cache -Manager's preference ranks for one or more file server machine interfaces -or, if the -vlserver argument is provided, for Volume Location (VL) -Server machines. For file server machines, the numerical ranks -determine the order in which the Cache Manager attempts to contact the -interfaces of machines that are housing a volume. For VL Server -machines, the ranks determine the order in which the Cache Manager attempts to -contact a cell's VL Servers when requesting VLDB information. -

    The fs getserverprefs reference page explains how the Cache -Manager uses preference ranks when contacting file server machines or VL -Server machines. The following paragraphs explain how the Cache Manager -calculates default ranks, and how to use this command to change the -defaults. -

    Calculation of Default Preference Ranks -

    The Cache Manager stores a preference rank in kernel memory as a paired IP -address and numerical rank. If a file server machine is multihomed, the -Cache Manager assigns a distinct rank to each of the machine's addresses -(up to the number of addresses that the VLDB can store per machine, which is -specified in the IBM AFS Release Notes). Once calculated, a -rank persists until the machine reboots, or until this command is used to -change it. -

    The Cache Manager sets default VL Server preference ranks as it -initializes, randomly assigning a rank from the range 10,000 to 10,126 to each -of the machines listed in the local /usr/vice/etc/CellServDB -file. Machines from different cells can have the same rank, but this -does not present a problem because the Cache Manager consults only one -cell's ranks at a time. -

    The Cache Manager sets default preference ranks for file server machine as -it fetches volume location information from the VLDB. Each time it -learns about file server machine interfaces for which it has not already set -ranks, it assigns a rank to each interface. If the local client machine -has only one IP address, the Cache Manager compares it to the server -interface's IP address and sets a rank according to the following -algorithm. If the client machine is multihomed, the Cache Manager -applies the algorithm to each of the client machine's addresses and -assigns to the file server machine interface the lowest rank that -results. -

      -

    • If the local machine is a file server machine, the base rank for each of -its interfaces is 5,000. -

    • If the file server machine interface is on the same subnetwork as the -client interface, its base rank is 20,000. -

    • If the file server machine interface is on the same network as the client -interface, or is at the distant end of a point-to-point link with the client -interface, its base rank is 30,000. -

    • If the file server machine interface is on a different network than the -client interface, or the Cache Manager cannot obtain network information about -it, its base rank is 40,000. -
    -

    After assigning a base rank to a file server machine interface, the Cache -Manager adds to it a number randomly chosen from the range 0 (zero) to -14. As an example, a file server machine interface in the same -subnetwork as the local machine receives a base rank of 20,000, but the Cache -Manager records the actual rank as an integer between 20,000 and -20,014. This process reduces the number of interfaces that have exactly -the same rank. As with VL Server machine ranks, it is possible for file -server machine interfaces from foreign cells to have the same rank as -interfaces in the local cell, but this does not present a problem. Only -the relative ranks of the interfaces that house a given volume are relevant, -and AFS only supports storage of a volume in one cell at a time. -

    Setting Non-default Preference Ranks -

    Use the fs setserverprefs command to reset an existing -preference rank, or to set the initial rank of a file server machine interface -or VL Server machine for which the Cache Manager has no rank. To make a -rank persist across a reboot of the local machine, place the appropriate -fs setserverprefs command in the machine's AFS initialization -file. -

    Specify each preference rank as a pair of values separated by one or more -spaces: -

      -

    • The first member of the pair is the fully-qualified hostname (for example, -fs1.abc.com), or the IP address in dotted decimal -format, of a file server machine interface or VL Server machine -

    • The second member of the pair is an integer. The possible ranks -range from 1 through 65535. -
    -

    As with default ranks, the Cache Manager adds a randomly chosen integer to -a rank specified by this command. For file server machine interfaces, -the integer is from the range 0 (zero) to 14; for VL Server machines, it -is from the range 0 (zero) to 126. For example, if the administrator -assigns a rank of 15,000 to a file server machine interface, the Cache Manager -stores an integer between 15,000 to 15,014. -

    There are several ways to provide ranks for file server machine interfaces -(but not for VL Server machines): -

      -

    • On the command line, following the -servers argument. -

    • In a file named by the -file argument. Place each pair -on its own line in the file. Directing the output from the fs -getserverprefs command to a file automatically generates a file with the -proper format. -

    • Via the standard input stream, by providing the -stdin -flag. This method enables the issuer to feed in values directly from a -program or script that generates preference ranks by using an algorithm -appropriate to the local cell. The AFS distribution does not include -such programs or scripts. -
    -

    When setting file server machine preference ranks, it is legal to combine -the -servers, -file, and -stdin options on a -single command line. If different options specify a different rank for -the same interface, the Cache Manager stores and uses the rank assigned with -the -servers argument. -

    The -vlservers argument is the only way to assign VL Server -machine ranks. It can be combined with one or more of the --servers, -file, and -stdin options, but the -Cache Manager applies the values provided for those options to file server -machine ranks only. -

    The fs command interpreter does not verify hostnames or IP -addresses, and so assigns preference ranks to invalid machine names or -addresses. The Cache Manager never uses such ranks unless the same -incorrect information is in the VLDB. -

    Options -

    -

    -servers -
    Specifies one or more file server machine preference ranks. Each -rank pairs the fully-qualified hostname or IP address (in dotted decimal -format) of a file server machine's interface with an integer rank, -separated by one or more spaces; also separate each pair with one or more -spaces. Acceptable values for the rank range from 1 through -65521; a lower value indicates a greater preference. -Providing ranks outside this range can have unpredictable results. -Providing a value no larger than 65521 guarantees that the rank -does not exceed the maximum possible value of 65,535 even if the largest -random factor (14) is added. -

    This argument can be combined with the -file argument, --stdin flag, or both. If more than one of the arguments sets -a rank for the same interface, the rank set by this argument takes -precedence. It can also be combined with the -vlservers -argument, but does not interact with it. -

    -vlservers -
    Specifies one or more VL Server preference ranks. Each rank pairs -the fully-qualified hostname or IP address (in dotted decimal format) of a VL -Server machine with an integer rank, separated by one or more spaces; -also separate each pair with one or more spaces. Acceptable values for -the rank range from 1 through 65521; a lower value -indicates a greater preference. Providing ranks outside this range can -have unpredictable results. Providing a value no larger than -65521 guarantees that the rank does not exceed the maximum possible -value of 65,535 even if the largest random factor (14) is added. -

    This argument can be combined with the -servers argument, --file argument, -stdin flag, or any combination of the -three, but does not interact with any of them. They apply only to file -server machine ranks. -

    -file -
    Specifies the full pathname of a file from which to read pairs of file -server machine interfaces and their ranks, using the same notation and range -of values as for the -servers argument. In the file, place -each pair on its own line and separate the two parts of each pair with one or -more spaces. -

    This argument can be combined with the -servers argument, --stdin flag, or both. If more than one of the arguments sets -a rank for the same interface, the rank set by the -server argument -takes precedence. It can also be combined with the --vlservers argument, but does not interact with it. -

    -stdin -
    Reads pairs of file server machine interface and integer rank from the -standard input stream. The intended use is to accept input piped in -from a user-defined program or script that generates ranks in the appropriate -format, but it also accepts input typed to the shell. Format the -interface and rank pairs as for the -file argument. If -typing at the shell, type <Ctrl-d> after the final newline to -complete the input. -

    This argument can be combined with the -servers argument, the --file argument, or both. If more than one of the arguments -sets a rank for the same interface, the rank set by the -server -argument takes precedence. It can also be combined with the --vlservers argument, but does not interact with it. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command sets the Cache Manager's preference ranks for -the file server machines named fs3.abc.com and -fs4.abc.com, the latter of which is specified by its -IP address, 192.12.105.100. The machines reside in -another subnetwork of the local machine's network, so their default base -rank is 30,000. To increase the Cache Manager's preference for -these machines, the issuer assigns a rank of 25000, to which the -Cache Manager adds an integer in the range from 0 to 15. -

       # fs setserverprefs -servers fs3.abc.com 25000 192.12.105.100 25000
    -   
    -
    -

    The following command uses the -servers argument to set the -Cache Manager's preference ranks for the same two file server machines, -but it also uses the -file argument to read a collection of -preference ranks from a file that resides in the local file -/etc/fs.prefs: -

       # fs setserverprefs -servers fs3.abc.com 25000 192.12.105.100 25000  \ 
    -                       -file /etc/fs.prefs
    -   
    -
    -

    The /etc/fs.prefs file has the following contents and -format: -

       192.12.108.214        7500
    -   192.12.108.212        7500
    -   138.255.33.41         39000
    -   138.255.33.34         39000
    -   128.0.45.36           41000
    -   128.0.45.37           41000
    -   
    -
    -

    The following command uses the -stdin flag to read preference -ranks from the standard input stream. The ranks are piped to the -command from a program, calc_prefs, which was written by the issuer -to calculate preferences based on values significant to the local cell. -

       # calc_prefs | fs setserverprefs -stdin
    -   
    -
    -

    The following command uses the -vlservers argument to set the -Cache Manager's preferences for the VL server machines named -fs1.abc.com, fs3.abc.com, -and fs4.abc.com to base ranks of 1, 11000, and 65521, -respectively: -

       # fs setserverprefs -vlservers fs1.abc.com 1 fs3.abc.com 11000  \
    -                       fs4.abc.com 65521
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fs getserverprefs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf163.htm b/doc/html/AdminReference/auarf163.htm deleted file mode 100644 index 834e736d5..000000000 --- a/doc/html/AdminReference/auarf163.htm +++ /dev/null @@ -1,108 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs setvol

    - - - - - - - -

    Purpose -

    Set maximum quota and messages for the volume containing a file or -directory -

    Synopsis -

    fs setvol [-path <dir/file path>+]  [-max <disk space quota in 1K units>]
    -          [-offlinemsg <offline message>]  [-help]
    -   
    -fs setv [-p <dir/file path>+]  [-ma <disk space quota in 1K  units>] 
    -        [-o <offline message>]  [-h]
    -    
    -fs sv [-p <dir/file path>+]  [-ma <disk space quota in 1K units>] 
    -      [-o <offline message>]  [-h]
    -
    -

    Description -

    The fs setvol command sets the quota (maximum possible size) of -the read/write volume that contains each directory or file named by the --path argument. To associate a message with the volume which -then appears in the output of the fs examine command, include the --offlinemsg argument. -

    To display all of the settings made with this command, use the fs -examine command. The fs listquota command reports a -fileset's quota, and the fs quota command the percent of quota -used. -

    To set quota on one volume at a time, use the fs setquota -command. -

    Options -

    -

    -path -
    Names each file or directory for which to set the host volume's quota -and offline message. Partial pathnames are interpreted relative to the -current working directory, which is also the default value if this argument is -omitted. -

    Specify the read/write path to the file or directory, to avoid the failure -that results from attempting to change a read-only volume. By -convention, the read/write path is indicated by placing a period before the -cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -max -
    Sets the maximum amount of file server disk space the volume can -occupy. Provide a positive integer to indicate the number of -one-kilobyte blocks (1024 is one megabyte). A value of -0 sets an unlimited quota, but the size of the disk partition that -houses the volume places an absolute limit on the volume's size. -

    If the -path argument is omitted (so that the command sets the -quota of the volume housing the current working directory), the --max switch must be provided. -

    -offlinemsg -
    Associates a message with the volume which then appears in the output of -the fs examine command. Its intended use is to explain why -the volume is currently offline. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command imposes a 6500 kilobyte quota on the volumes mounted -at the home directories /afs/abc.com/usr/smith and -/afs/abc.com/usr/pat: -

       % cd /afs/abc.com/usr
    -    
    -   % fs setvol -path smith pat -max 6500
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators -group. -

    Related Information -

    fs examine -

    fs listquota -

    fs mkmount -

    fs quota -

    fs setquota -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf164.htm b/doc/html/AdminReference/auarf164.htm deleted file mode 100644 index a67d2160a..000000000 --- a/doc/html/AdminReference/auarf164.htm +++ /dev/null @@ -1,205 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs storebehind

    - - -

    Purpose -

    Enables asynchronous writes to the file server -

    Synopsis -

    fs storebehind [-kbytes <asynchrony for specified names>]  
    -               [-files <specific pathnames>+]  
    -               [-allfiles <new default (KB)>]  [-verbose]  [-help]
    -    
    -fs st [-k <asynchrony for specified names>]  [-f <specific pathnames>+]  
    -      [-a <new default (KB)>]  [-v]  [-h]
    -
    -

    Description -

    The fs storebehind command enables the Cache Manager to perform -a delayed asynchronous write to the File Server when an application closes a -file. By default, the Cache Manager writes all data to the File Server -immediately and synchronously when an application program closes a -file--that is, the close system call does not return until the -Cache Manager has actually transferred the final chunk of the file to the File -Server. This command specifies the number of kilobytes of a file that -can still remain to be written to the File Server when the Cache Manager -returns control to the application. It is useful if users working on -the machine commonly work with very large files, but also introduces the -complications discussed in the Cautions section. -

    Set either or both of the following in a single command: -

      -

    • To set a value that applies to all AFS files manipulated by applications -running on the machine, use the -allfiles argument. This -value is termed the default store asynchrony for the machine, and -persists until the machine reboots. If it is not set, the default value -is zero, indicating that the Cache Manager performs synchronous writes. -

      -

      As an example, the following setting means that when an application closes -a file, the Cache Manager can return control to the application as soon as no -more than 10 kilobytes of the file remain to be written to the File -Server. -

         -allfiles 10
      -   
      -
      -

    • To set a value that applies to one or more individual files, and overrides -the value of the -allfiles argument for them, combine the --kbytes and -files arguments. The setting -persists as long as there is an entry for the file in the kernel table that -the Cache Manager uses to track certain information about files. In -general, such an entry persists at least until an application closes the file -or exits, but the Cache Manager is free to recycle the entry if the file is -inactive and it needs to free up slots in the table. To increase the -certainty that there is an entry for the file in the table, issue the fs -storebehind command shortly before closing the file. -

      As an example, the following setting means that when an application closes -either of the files bigfile and biggerfile, the Cache -Manager can return control to the application as soon as no more than a -megabyte of the file remains to be written to the File Server. -

         -kbytes 1024 -files bigfile biggerfile
      -   
      -
      -

      Note that once an explicit value has been set for a file, the only way to -make it subject to the default store asynchrony once again is to set --kbytes to that value. In other words, there is no -combination of arguments that automatically makes a file subject to the -default store asynchrony once another value has been set for the file. -

    -

    To display the settings that currently apply to individual files or to all -files, provide the command's arguments in certain combinations as -specified in the Output section of this reference page. -

    Cautions -

    For the following reasons, use of this command is not recommended in most -cases. -

    In normal circumstances, an asynchronous setting results in the Cache -Manager returning control to applications earlier than it otherwise does, but -this is not guaranteed. -

    If a delayed write fails, there is no way to notify the application, since -the close system call has already returned with a code indicating -success. -

    Writing asynchronously increases the possibility that the user will not -notice if a write operation makes the volume that houses the file exceed its -quota. As always, the portion of the file that exceeds the -volume's quota is lost, which prompts a message such as the -following: -

       No space left on device
    -   
    -
    -

    To avoid losing data, it is advisable to verify that the volume housing the -file has space available for the amount of data anticipated to be -written. -

    Options -

    -

    -kbytes -
    Specifies the number of kilobytes of data from each file named by the --files argument that can remain to be written to the file server -when the Cache Manager returns control to an application program that closed -the file. The -files argument is required along with this -argument. Provide an integer from the range 0 (which -reinstates the Cache Manager's default behavior or writing synchronously) -to the maximum AFS file size. -

    -files -
    Names each file to which the value set with the -kbytes -argument applies. The setting persists as long as there is an entry for -the file in the kernel table that the Cache Manager uses to track certain -information about files. Because closing a file generally erases the -entry, when reopening a file the only way to guarantee that the setting still -applies is to reissue the command. If this argument is provided without -the -kbytes argument, the command reports the current setting for -the specified files, and the default store asynchrony. -

    -allfiles -
    Sets the default store asynchrony for the local machine, which is the -number of kilobytes of data that can remain to be written to the file server -when the Cache Manager returns control to the application program that closed -a file. The value applies to all AFS files manipulated by applications -running on the machine, except those for which settings have been made with -the -kbytes and -files arguments. Provide an -integer from the range 0 (which indicates the default of -synchronous writes) to the maximum AFS file size. -

    -verbose -
    Produces output confirming the settings made with the accompanying --kbytes and -files arguments, the -allfiles -argument, or all three. If provided by itself, reports the current -default store asynchrony. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If none of the command's options are included, or if only the --verbose flag is included, the following message reports the -default store asynchrony (the setting that applies to all files manipulated by -applications running on the local machine and for which not more specific -asynchrony is set). -

       Default store asynchrony is x kbytes.
    -   
    -
    -

    A value of 0 (zero) indicates synchronous writes and is the -default if no one has included the -allfiles argument on this -command since the machine last rebooted. -

    If the -files argument is provided without the --kbytes argument, the output reports the value that applies to each -specified file along with the default store asynchrony. If a particular -value has previously been set for a file, the following message reports -it: -

       Will store up to y kbytes of file asynchronously.
    -   Default store asynchrony is x kbytes.
    -   
    -
    -

    If the default store asynchrony applies to a file because no explicit --kbytes value has been set for it, the message is instead as -follows: -

       Will store file according to default.
    -   Default store asynchrony is x kbytes.
    -   
    -
    -

    If the -verbose flag is combined with arguments that set values -(-files and -kbytes, or -allfiles, or all -three), there is a message that confirms immediately that the setting has -taken effect. When included without other arguments or flags, the --verbose flag reports the default store asynchrony only. -

    Examples -

    The following command enables the Cache Manager to return control to the -application program that closed the file test.data when 100 -kilobytes still remain to be written to the File Server. The --verbose flag produces output that confirms the new setting, and -that the default store asynchrony is zero. -

       % fs storebehind -kbytes 100 -files test.data -verbose
    -   Will store up to 100 kbytes of test.data asynchronously.
    -   Default store asynchrony is 0 kbytes.
    -   
    -
    -

    Privilege Required -

    To include the -allfiles argument, the issuer must be logged in -as the local superuser root. -

    To include the -kbytes and -files arguments, the -issuer must either be logged in as the local superuser root or have -the w (write) permission on the ACL of each file's -directory. -

    To view the current settings (by including no arguments, the --file argument alone, or the -verbose argument alone), -no privilege is required. -

    Related Information -

    afsd -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf165.htm b/doc/html/AdminReference/auarf165.htm deleted file mode 100644 index 793fc1cbd..000000000 --- a/doc/html/AdminReference/auarf165.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs sysname

    - - - - - - - - - - - - - - -

    Purpose -

    Reports or sets the CPU/operating system type -

    Synopsis -

    fs sysname [-newsys <new sysname>]  [-help]
    -    
    -fs sy [-n <new sysname>]  [-h]
    -
    -

    Description -

    The fs sysname command sets or displays the local machine's -CPU/operating system type as recorded in kernel memory. The Cache -Manager substitutes the string for the @sys variable which can occur -in AFS pathnames; the IBM AFS Quick Beginnings and IBM -AFS Administration Guide explain how using @sys can simplify -cell configuration. It is best to use it sparingly, however, because it -can make the effect of changing directories unpredictable. -

    The command always applies to the local machine only. If issued on -an NFS client machine accessing AFS via the NFS/AFS Translator, the string is -set or reported for the NFS client machine. The Cache Manager on the -AFS client machine serving as the NFS client's NFS/AFS translator machine -stores the value in its kernel memory, and so can provide the NFS client with -the proper version of program binaries when the user issues commands for which -the pathname to the binaries includes @sys. There is a -separate record for each user logged into the NFS client, which implies that -if a user adopts a new identity (UNIX UID) during a login session on the NFS -client--perhaps by using the UNIX su command--he or she -must verify that the correct string is set for the new identity also. -

    Options -

    -

    -newsys -
    Sets the CPU/operating system indicator string for the local -machine. If this argument is omitted, the output displays the current -setting instead. AFS uses a standardized set of strings; consult -the IBM AFS Quick Beginnings or AFS Release -Notes. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    When the -newsys argument is omitted, the output reports the -machine's system type in the following format: -

       Current sysname is 'system_type'
    -   
    -
    -

    Examples -

    The following example shows the output produced on a Sun SPARCStation -running Solaris 5.7: -

       % fs sysname
    -   Current sysname is 'sun4x_57'
    -   
    -
    -

    The following command defines a machine to be a IBM RS/6000 running AIX -4.2: -

       % fs sysname -newsys rs_aix42
    -   
    -
    -

    Privilege Required -

    To display the current setting, no privilege is required. To include -the -newsys argument on an AFS client machine, the issuer must be -logged in as the local superuser root. -

    Related Information -

    fs exportafs -

    sys -

    IBM AFS Quick Beginnings -

    IBM AFS Administration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf166.htm b/doc/html/AdminReference/auarf166.htm deleted file mode 100644 index 570e0cea7..000000000 --- a/doc/html/AdminReference/auarf166.htm +++ /dev/null @@ -1,80 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs whereis

    - - - - - - - -

    Purpose -

    Reports the name of each file server machine housing a file or directory -

    Synopsis -

    fs whereis [-path <dir/file path>+]  [-help]
    -   
    -fs whe [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs whereis command returns the name of each file server -machine that houses the volume containing each directory or file named by the --path argument. -

    Options -

    -

    -path -
    Names each AFS file or directory for which to return the host file server -machine. Partial pathnames are interpreted relative to the current -working directory, which is also the default value if this argument is -omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes a line for each specified directory or file. It -names the file server machine on which the volume that houses the specified -directory or file resides. A list of multiple machines indicates that -the directory or file is in a replicated volume. -

    Machine names usually have a suffix indicating their cell -membership. If the cell is not clear, use the fs whichcell -command to display the cell in which the directory or file resides. To -display the cell membership of the local machine, use the fs wscell -command. -

    Examples -

    The following example indicates that volume housing the directory -/afs/abc.com resides is replicated on both -fs1.abc.com and -fs3.abc.com: -

       % fs whereis -path /afs/abc.com
    -   File /afs/abc.com is on hosts fs1.abc.com fs3.abc.com
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs whichcell -

    fs wscell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf167.htm b/doc/html/AdminReference/auarf167.htm deleted file mode 100644 index 51f4a6fd5..000000000 --- a/doc/html/AdminReference/auarf167.htm +++ /dev/null @@ -1,74 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs whichcell

    - - - - - - - -

    Purpose -

    Returns the name of the cell to which a file or directory belongs -

    Synopsis -

    fs whichcell [-path <dir/file path>+]  [-help]
    -   
    -fs whi  [-p <dir/file path>+]  [-h]
    -
    -

    Description -

    The fs whichcell command returns the name of the cell in which -the volume that houses each indicated directory or file resides. -

    To display the file server machine on which the volume housing a directory -or file resides, use the fs whichcell command. To display -the cell membership of the local machine, use the fs wscell -command. -

    Options -

    -

    -path -
    Names each AFS file or directory for which to return the cell -membership. Partial pathnames are interpreted relative to the current -working directory, which is also the default value if this argument is -omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes a line for each directory or file, naming the cell to -which the volume that houses the directory or file resides. -

    Examples -

    The following example shows that the current working directory resides in a -volume in the ABC Corporation cell: -

       % fs whichcell
    -   File . lives in cell 'abc.com'
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs wscell -

    fs whereis -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf168.htm b/doc/html/AdminReference/auarf168.htm deleted file mode 100644 index 0bed0f4eb..000000000 --- a/doc/html/AdminReference/auarf168.htm +++ /dev/null @@ -1,67 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs wscell

    - - - - - - -

    Purpose -

    Returns the name of the cell to which a machine belongs -

    Synopsis -

    fs wscell [-help]
    -   
    -fs ws [-h]
    -
    -

    Description -

    The fs wscell command returns the name of the local -machine's home cell. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output displays the contents of the local -/usr/vice/etc/ThisCell file, in the format -

       This workstation belongs to cell 'cellname'
    -   
    -
    -

    Examples -

    The following example results when the fs wscell is issued on a -machine in the State University cell: -

       % fs wscell
    -   This workstation belongs to cell 'stateu.edu'
    -    
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs whereis -

    fs whichcell -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf169.htm b/doc/html/AdminReference/auarf169.htm deleted file mode 100644 index f9c454d4f..000000000 --- a/doc/html/AdminReference/auarf169.htm +++ /dev/null @@ -1,89 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace

    -

    Purpose - - - - - - -

    Introduction to the fstrace command suite -

    Description -

    The commands in the fstrace command suite are the interface that -system administrators employ to trace Cache Manager operations for debugging -purposes. Examples of Cache Manager operations are fetching file data -or the status information used to produce output for the UNIX ls -command. -

    The fstrace command interpreter defines an extensive set of -Cache Manager operations as the cm event set. -When the event set is activated, the Cache Manager writes a message to the -cmfx trace log in kernel memory each time it performs -one of the defined operations. The log expands only to a defined size -(by default, 60 KB), after which it is overwritten in a circular fashion (new -trace messages overwrite the oldest ones). If an operation of -particular interest occurs, the administrator can afterward display the log on -the standard output stream or write it to a file for later study. For -more specific procedural instructions, see the IBM AFS Administration -Guide. -

    There are several categories of commands in the fstrace command -suite: -

      -

    • Commands to administer or display information about the trace log: -

      fstrace clear, fstrace lslog, fstrace -setlog -

    • Commands to set or display the status of the event set: -

      fstrace lsset and fstrace setset -

    • A command to display the contents of the trace log: fstrace -dump -

    • Commands to obtain help: fstrace apropos and fstrace -help -
    -

    Options -

    All fstrace commands accept the following optional flag. -It is listed in the command descriptions and described in detail here: - -

    -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -
    -

    Privilege Required -

    To issue most fstrace commands, the issuer must be logged on as -the local superuser root on the machine that is generating the -trace log. -

    Related Information -

    fstrace apropos -

    fstrace clear -

    fstrace dump -

    fstrace help -

    fstrace lslog -

    fstrace lsset -

    fstrace setlog -

    fstrace setset -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf170.htm b/doc/html/AdminReference/auarf170.htm deleted file mode 100644 index 6eb60b7cf..000000000 --- a/doc/html/AdminReference/auarf170.htm +++ /dev/null @@ -1,74 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace apropos

    -

    Purpose - - - -

    Displays each help entry containing a keyword string -

    Synopsis -

    fstrace apropos -topic <help string>  [-help]
    -   
    -fstrace ap -t <help string>  [-h]
    -
    -

    Description -

    The fstrace apropos command displays the first line of the -online help entry for any fstrace command that contains in its name -or short description the string specified with the -topic -argument. -

    To display a command's complete syntax, use the fstrace -help command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -fstrace command where the string specified with the --topic argument is part of the command name or first line. -

    Examples -

    The following command lists all fstrace commands that include -the word set in their names or short descriptions: -

       % fstrace apropos set
    -   clear: clear logs by logname or by event set
    -   lsset: list available event sets
    -   setlog: set the size of a log
    -   setset: set state of event sets
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fstrace -

    fstrace help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf171.htm b/doc/html/AdminReference/auarf171.htm deleted file mode 100644 index e14a9b319..000000000 --- a/doc/html/AdminReference/auarf171.htm +++ /dev/null @@ -1,65 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace clear

    -

    Purpose -

    Clears the trace log -

    Synopsis -

    fstrace clear [-set <set_name>+]  [-log <log_name>+]  [-help] 
    -           
    -fstrace c [-s <set_name>+]  [-l <log_name>+]  [-h]
    -
    -

    Description -

    The fstrace clear command erases the contents of the trace log -from kernel memory, but leaves kernel memory allocated for the log. -

    Options -

    -

    -set -
    Names the event set for which to clear the associated trace log. -The only acceptable value is cm (for which the associated trace log -is cmfx). Provide either this argument or the --log argument, or omit both to clear the cmfx log by -default. -

    -log -
    Names the trace log to clear. The only acceptable value is -cmfx. Provide either this argument or the -set -argument, or omit both to clear the cmfx log by default. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command clears the cmfx trace log on the local -machine: -

       # fstrace clear
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fstrace -

    fstrace lslog -

    fstrace lsset -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf172.htm b/doc/html/AdminReference/auarf172.htm deleted file mode 100644 index 62ba54eb6..000000000 --- a/doc/html/AdminReference/auarf172.htm +++ /dev/null @@ -1,208 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace dump

    -

    Purpose - - -

    Dumps a trace log -

    Synopsis -

    fstrace dump [-set <set_name>+]  [-follow <log_name>]  
    -             [-file <output_filename>]  
    -             [-sleep <seconds_between_reads>]  [-help]
    -   
    -fstrace d [-se <set_name>+]  [-fo <log_name>]  [-fi <output_filename>] 
    -          [-sl <seconds_between_reads>]  [-h]
    -
    -

    Description -

    The fstrace dump command displays the current contents of the -cmfx trace log on the standard output stream or writes it to the -file named by the -file argument. -

    To write the log continuously to the standard output stream or to a file, -use the -follow argument. By default, the log's -contents are written out every ten seconds and then automatically -cleared. To change the interval between writes, use the --sleep argument. -

    Cautions -

    This command produces output only if the cm event set is -active. To display or set the event set's state, use the -fstrace lsset or fstrace setset command -respectively. -

    To make the output from this command maximally readable, the message -catalog file called afszcm.cat must reside in the local -/usr/vice/etc/C directory. If necessary, copy the file to -that directory from the AFS Binary Distribution before activating -tracing. -

    When the cm event set is active, a defined amount of kernel -memory (by default, 60 KB) is allocated for the cmfx trace -log. As described on the introductory fstrace reference -page, when the buffer is full, messages are overwritten in a circular fashion -(new messages overwrite the oldest ones). To allocate more kernel -memory for the log, use the fstrace setlog command; to display -the log buffer's current size, use the fstrace lslog command -with the -long argument. -

    Options -

    -

    -set -
    Names the event set for which to write out the associated trace -log. The only acceptable value is cm (for which the -associated trace log is cmfx). Provide either this argument -or the -log argument, or omit both to write out the cmfx -log by default. -

    -follow -
    Names the trace log to write out continuously at a specified interval (by -default, every ten seconds; use the -sleep argument to change -the interval). The log is cleared after each write operation. -

    The only acceptable value is cmfx. Provide either this -argument or the -set argument, or omit both to write out the -cmfx log by default. -

    -file -
    Specifies the pathname of the file to which to write the trace log's -contents. It can be in AFS or on the local disk. Partial -pathnames are interpreted relative to the current working directory. If -this argument is omitted, the trace log appears on the standard output -stream. -

    -sleep -
    Sets the number of seconds between writes of the trace log's contents -when it is dumped continuously. Provide the -follow argument -along with this one. If this argument is omitted, the default interval -is ten seconds. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output begins with a header specifying the date and time at which the -write operation began. If the -follow argument is not -included, the header also reports the number of logs being dumped; it is -always 1, since there is only the cmfx trace log. -The format of the header is as follows: -

       AFS Trace Dump -
    -     Date: starting_timestamp
    -   Found 1 logs.
    -   Contents of log cmfx:
    -   
    -
    -

    Each subsequent message describes a Cache Manager operation in the -following format: -

       time timestamp, pid pid:event_message
    -   
    -
    -

    where -

    -

    timestamp -
    Specifies the time at which the Cache Manager performed the operation, as -the number of seconds since the dump began -

    pid -
    Specifies the process ID of the process or thread associated with the -message -

    event_message -
    Is the message itself. They are generally meaningful only to -someone familiar with the AFS source code. -
    -

    In addition, every 1024 seconds the fstrace command interpreter -writes a message that records the current clock time, in the following -format: -

       time timestamp, pid pid: Current time: unix_time
    -   
    -
    -

    where -

    -

    timestamp -
    Is the number of seconds from the start of trace logging -

    pid -
    Is the process ID number -

    unix_time -
    Is the machine's clock time, represent in the standard UNIX time -format as the number of seconds since midnight on January 1, 1970. -
    -

    Use this message to determine the actual clock time associated with each -log message. Determine the actual time as follows: -

      -

    1. Locate the message of interest. -

    2. Search backward through the trace file for the closest current time -message. -

    3. If the current time message's timestamp is smaller than the -log message's timestamp, subtract former from the latter. -If the current time message's timestamp is larger than the log -message's timestamp, add 1024 to the latter and subtract the -former from the result. -

    4. Add the resulting number to the current time message's -unix_time to determine the log message's actual time. -
    -

    If any of the data in the kernel trace buffer has been overwritten since -tracing was activated, the following message appears at the appropriate place -in the output: -

       Log wrapped; data missing.
    -   
    -
    -

    To reduce the likelihood of overwriting, use the fstrace setlog -command to increase the kernel buffer's size. To display the -current defined buffer size, use the fstrace lslog command with the --long argument. -

    The following message at the end of the log dump indicates that it is -completed: -

       AFS Trace Dump - Completed
    -   
    -
    -

    Examples -

    The following command dumps the log associated with the cm event -set to the standard output stream. -

       # fstrace dump -set cm
    -   AFS Trace Dump -
    -      Date: Tue Apr  7 10:54:57 1998
    -   Found 1 logs.
    -   time 32.965783, pid 0: Tue Apr  7 10:45:52 1998
    -   time 32.965783, pid 33657: Close 0x5c39ed8 flags 0x20 
    -   time 32.965897, pid 33657: Gn_close vp 0x5c39ed8 flags 0x20 (returns 0x0) 
    -   time 35.159854, pid 10891: Breaking callback for 5bd95e4 states 1024 (volume 0)
    -   time 35.407081, pid 10891: Breaking callback for 5c0fadc states 1024 (volume 0)
    -                                    .
    -                                    .
    -                                    .
    -   time 71.440456, pid 33658: Lookup adp 0x5bbdcf0 name g3oCKs \
    -        fid (756 4fb7e:588d240.2ff978a8.6) 
    -   time 71.440569, pid 33658: Returning code 2 from 19 
    -   time 71.440619, pid 33658: Gn_lookup vp 0x5bbdcf0 name g3oCKs (returns 0x2) 
    -   time 71.464989, pid 38267: Gn_open vp 0x5bbd000 flags 0x0 (returns 0x0) 
    -   AFS Trace Dump - Completed
    -   
    -
    -

    The following command dumps the trace log associated with the cm -event set on the local machine to the file -cmfx.dump.file.1, using the default interval -of 10 seconds between successive dumps: -

       # fstrace dump -follow cmfx -file cmfx.dump.file.1
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    afszcm.cat -

    fstrace -

    fstrace lslog -

    fstrace setlog -

    fstrace lsset -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf173.htm b/doc/html/AdminReference/auarf173.htm deleted file mode 100644 index 79a37c673..000000000 --- a/doc/html/AdminReference/auarf173.htm +++ /dev/null @@ -1,86 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace help

    -

    Purpose - - - -

    Displays the syntax of specified fstrace commands or lists -functional descriptions of all fstrace commands -

    Synopsis -

    fstrace help [-topic <help string>+]  [-help] 
    -    
    -fstrace h [-t <help string>+]  [-h] 
    -
    -

    Description -

    The fstrace help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every fstrace -command. -

    To list every fstrace command whose name or short description -includes a specified keyword, use the fstrace apropos -command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the fstrace part of the command name, providing -only the operation code (for example, specify clear, not -fstrace clear). If this argument is omitted, the output -briefly describes every fstrace command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each fstrace command consists of two -or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the fstrace -setset command: -

       % fstrace help -topic setset
    -   fstrace setset: set state of event sets 
    -   Usage: fstrace setset [-set <set_name>+] [-active] [-inactive]  
    -   [-dormant] [-help] 
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fstrace -

    fstrace apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf174.htm b/doc/html/AdminReference/auarf174.htm deleted file mode 100644 index a021b3490..000000000 --- a/doc/html/AdminReference/auarf174.htm +++ /dev/null @@ -1,107 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace lslog

    -

    Purpose - - -

    Displays information about a log -

    Synopsis -

    fstrace lslog [-set <set_name>+]  [-log <log_name>]  [-long]  [-help]
    -   
    -fstrace lsl [-s <set_name>+]  [-log <log_name>]  [-lon]  [-h] 
    -
    -

    Description -

    The fstrace lslog command reports whether the cmfx -log is available for use. If the -long argument is included, -the output reports the log's defined size, and whether that amount of -space is currently allocated in kernel memory or not. -

    To change the cmfx trace log's size, use the fstrace -setlog command. To display or set whether space is allocated for -it in kernel memory, use the fstrace lsset or fstrace -setset command to display or set the state of the corresponding -cm event set, respectively. -

    Options -

    -

    -set -
    Names the event set for which to display information about the -corresponding trace log. The only acceptable value is cm -(for which the associated trace log is cmfx). Provide either -this argument or the -log argument, or omit both to display -information about the cmfx log by default. -

    -log -
    Names the trace log about which to report. The only acceptable -value is cmfx. Provide either this argument or the --set argument, or omit both to report on the cmfx log by -default. -

    -long -
    Reports the defined size of the log in kilobyte units and whether that -amount of space is currently allocated in kernel memory. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    By default, the fstrace lslog command displays only the name of -the available log, cmfx, in the following format: -

       Available logs:
    -   cmfx
    -    
    -
    -

    When the -long flag is included, the output also reports the -defined size of the log in kilobytes, and whether or not that amount of space -is currently allocated in kernel memory, in the following format: -

       Available logs:
    -   cmfx : log_size kbytes (allocated  |  unallocated)
    -   
    -
    -

    The allocated state indicates that the indicated number of -kilobytes is reserved for the cmfx trace log in kernel -memory. The cm event set's state is either -active or inactive, as reported by the fstrace -lsset command, and set by the fstrace setset command's --active or -inactive flags respectively. -

    The unallocated state indicates that no kernel memory is -currently reserved for the cmfx trace log. The cm -event set's state is dormant, as reported by the fstrace -lsset command and set by the fstrace setset command's --dormant flag. If the event set's state is later -changed to active or inactive, the number of kilobytes indicated as -log_size are again allocated in kernel memory. -

    Examples -

    The following example uses the -long flag to display information -about the cmfx log: -

       # fstrace lslog -log cmfx -long
    -   Available logs:
    -   cmfx : 60 kbytes (allocated)
    -    
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fstrace -

    fstrace lsset -

    fstrace setlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf175.htm b/doc/html/AdminReference/auarf175.htm deleted file mode 100644 index 16fb55453..000000000 --- a/doc/html/AdminReference/auarf175.htm +++ /dev/null @@ -1,83 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace lsset

    -

    Purpose - - -

    Reports the status of an event set -

    Synopsis -

    fstrace lsset [-set <set_name>+]  [-help] 
    -   
    -fstrace lss [-s <set_name>+]  [-h]
    -
    -

    Description -

    The fstrace lsset command displays a list of the available event -sets and reports their current status (active, inactive, or dormant). -

    To change an event set's status, use the fstrace setset -command. -

    Options -

    -

    -set -
    Names the event set for which to display the status. The only -acceptable value is cm, which is also the default if this argument -is omitted. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output lists the available event sets and the status of each, in the -following format: -

       Available sets:
    -   cm {active | inactive | dormant}
    -   
    -
    -

    where -

    -

    active -
    Indicates that tracing is enabled for the event set, and kernel memory -allocated for the corresponding trace log. -

    inactive -
    Indicates that tracing is temporarily disabled for the event set, but -kernel memory still allocated for the corresponding trace log. -

    dormant -
    Indicates that tracing is disabled for the event set, and no kernel memory -allocated for the corresponding trace log. -
    -

    Examples -

    The following example displays the available event set and its -status: -

       # fstrace lsset
    -   Available sets:
    -   cm active
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fstrace -

    fstrace setset -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf176.htm b/doc/html/AdminReference/auarf176.htm deleted file mode 100644 index 30377e44f..000000000 --- a/doc/html/AdminReference/auarf176.htm +++ /dev/null @@ -1,75 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace setlog

    -

    Purpose - - -

    Sets the size of a trace log -

    Synopsis -

    fstrace setlog [-log <log_name>+]  -buffersize <1-kilobyte_units>  [-help]
    -      
    -fstrace setl [-l <log_name>+]  -b <1-kilobyte_units>  [-h]
    -      
    -fstrace sl [-l <log_name>+]  -b <1-kilobyte_units>  [-h]
    -
    -

    Description -

    The fstrace setlog command defines the number of kilobytes of -kernel memory allocated for the cmfx trace log. If kernel -memory is currently allocated, the command clears the current log and creates -a new log buffer of the specified size. -

    To display the current defined size of the log buffer, issue the -fstrace lslog command with the -long argument. To -control whether the indicated amount of space is actually allocated, use the -fstrace setset command to set the status of the cm event -set; to display the event set's status, use the fstrace -lsset command. -

    Options -

    -

    -log -
    Names trace log for which to set the size. The only acceptable -value is cmfx, which is also the default if this argument is -omitted. -

    -buffersize -
    Specifies the number of 1-kilobyte blocks of kernel memory to allocate for -the trace log. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command allocated 80 KB of kernel memory for the -cmfx trace log: -

       # fstrace setlog -log cmfx -buffersize 80
    -    
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fstrace -

    fstrace lslog -

    fstrace lsset -

    fstrace setset -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf177.htm b/doc/html/AdminReference/auarf177.htm deleted file mode 100644 index 2d40e26fe..000000000 --- a/doc/html/AdminReference/auarf177.htm +++ /dev/null @@ -1,75 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fstrace setset

    -

    Purpose - - -

    Sets the status of an event set -

    Synopsis -

    fstrace setset [-set <set_name>+]  [-active]  [-inactive]  [-dormant]  [-help] 
    -   
    -fs set [-s <set_name>+]  [-a]  [-i]  [-d]  [-h]
    -
    -

    Description -

    The fstrace setset command sets the status of the cm -kernel event set on the local machine, which determines whether trace messages -are recorded in the log buffer in kernel memory. -

    Options -

    -

    -set -
    Names the event set for which to set the status. The only -acceptable value cm, which is also the default if this argument is -omitted. -

    -active -
    Enables tracing for the event set and allocates kernel memory for the -associated trace log buffer. Provide one of this flag, the --inactive flag, or the -dormant flag. -

    -inactive -
    Temporarily disables tracing for the event set, but does not change the -allocation of kernel memory for the associated trace log buffer. -Provide one of this flag, the -active flag, or the --dormant flag. -

    -dormant -
    Disables tracing for the event set and frees the kernel memory previously -allocated for the associated trace log buffer. Provide one of this -flag, the -active flag, or the -inactive flag. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example sets the cm event set's status to -inactive: -

       # fstrace setset -set cm -inactive
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    fstrace -

    fstrace lsset -

    fstrace setlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf178.htm b/doc/html/AdminReference/auarf178.htm deleted file mode 100644 index 6537ddc39..000000000 --- a/doc/html/AdminReference/auarf178.htm +++ /dev/null @@ -1,118 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    ftpd (AFS version)

    - - - - - -

    Purpose -

    Initializes the Internet File Transfer Protocol server -

    Synopsis -

    ftpd  [-d]  [-l]  [-t <timeout>]  [-v]  [-T <MaxTimeOut>]  [-u]  [-s]
    -
    -

    Description -

    The AFS-modified ftpd program functions like the standard UNIX -ftpd program, but also authenticates the issuer of the -ftp command (who is presumably working on a remote machine) with -the Authentication Server in the local cell (the home cell of the machine -where the ftpd process is running, as defined in the local -/usr/vice/etc/ThisCell file). The authentication is based on -the user name and password provided at the ftp> prompts on the -remote machine. The Cache Manager on the machine running the -ftpd process stores the newly created token, identifying it by -process authentication group (PAG) rather than by the user's UNIX -UID. -

    The issuer of the ftp command can be working in a foreign cell, -as long as the user name and password provided are valid in the cell where the -ftpd process is running. If the user name under which the -ftp command is issued does not exist in the Authentication Database -for the cell where the ftpd process is running, or the issuer -provides the wrong password, then the ftpd process logs the user -into the local file system of the machine where the ftpd process is -running. The success of this local login depends on the user name -appearing in the local password file and on the user providing the correct -local password. In the case of a local login, AFS server processes -consider the issuer of the ftp command to be the user -anonymous. -

    In the recommended configuration, the AFS version of the ftpd -process is substituted for the standard version (only one of the versions can -run at a time). The administrator then has two choices: -

      -

    • Name the binary for the AFS version something like -ftpd.afs, leaving the standard version as the -ftpd process. Change the inetd.conf -configuration file to refer to the ftpd.afs file rather than -to the standard version. -

    • Rename the binary for the AFS version to the standard name (such as -ftpd) and rename the binary for the standard version to something -like ftpd.orig. No change to the -inetd.conf file is necessary, but it is not as obvious that -the standard version of the ftpd process is no longer in -use. -
    -

    Cautions -

    The AFS distribution does not include an AFS-modified version of this -command for every system type. On system types that use an integrated -authentication system, it is appropriate instead to control the -ftpd daemon's handling of AFS authentication through the -integrated system. For example, on system types that use the Pluggable -Authentication Module (PAM), add an ftpd entry that references the -AFS PAM module to the PAM configuration file. For instructions on -incorporating AFS into a machine's integrated authentication system, see -the IBM AFS Quick Beginnings. -

    Some system types impose the following requirement. If the issuer of -the ftp command on the remote machine is using a shell other than -/bin/csh, then the /etc/shells file on the local disk of -the machine being accessed (the machine running the ftpd process) -must include an entry for the alternate shell. -

    Options -

    -

    -d -
    Directs debugging information to the system log daemon. -

    -l -
    Directs each FTP session to be logged to the system log daemon. -

    -t -
    Specifies a timeout period. By default, the FTP server will timeout -an inactive session after 15 minutes. -

    -v -
    Same as -d. -

    -T -
    Specifies a timeout period in seconds. By default, the FTP server -will timeout after 2 hours (7200 seconds). -

    -s -
    Turns on socket level debugging. Do not use this flag. It is -valid only on an operating system level that AFS does not support. -

    -u -
    Specifies the default UNIX mode bit file mask to use. -
    -

    Privilege Required -

    See the UNIX manual page for the ftpd process. -

    Related Information -

    UNIX manual page for ftp -

    UNIX manual page for ftpd -

    IBM AFS Quick Beginnings -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf179.htm b/doc/html/AdminReference/auarf179.htm deleted file mode 100644 index 1c0ee2e2d..000000000 --- a/doc/html/AdminReference/auarf179.htm +++ /dev/null @@ -1,150 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    inetd (AFS version)

    - - - - - -

    Purpose -

    Initializes the Internet service daemon -

    Synopsis -

    inetd [-d]  [<configfile>]
    -
    -

    Description -

    The AFS-modified inetd program functions like the standard UNIX -inetd program, but also enables users of the remote services it -supports to access them as authenticated AFS users, provided that the -supported services are also AFS-modified versions that pass AFS tokens -(authentication information). Examples of supported services are the -rcp and rsh programs. -

    The AFS inetd program can service the standard UNIX versions of -the remote services, but it is instead recommended that the standard UNIX -version of the inetd program be run in parallel with the AFS -version. Name the AFS version something like -inetd.afs and use it to service requests from AFS-modified -programs; use the standard inetd program to service requests -from standard UNIX programs. This separation requires using two -different inetd.conf files, as described in the following -section. -

    Cautions -

    Several configuration changes are necessary for token passing to work -correctly with the AFS version of the inetd program. There -are possibly other UNIX-based requirements or restrictions not mentioned -here; consult the UNIX manual page. (One important restriction is -that there can be no blank lines in the configuration file other than at the -end.) -

    The requirements and restrictions include the following. They assume -that the inetd.afs process is running in parallel with the -standard inetd process. -

      -

    • For token passing to work, the request must come from the AFS version of -the remote service (such as the AFS rcp or AFS rsh -command). If the remote service is the standard UNIX version, it cannot -pass a token. The issuer of the remote command is authenticated only in -the local file system, not with AFS. -

    • The machine's initialization files (/etc/rc file or -equivalent) must invoke both the standard inetd and -inetd.afs programs. -

    • An AFS-specific inetd.conf file, perhaps called -inetd.conf.afs, must exist alongside the standard -one. When initializing the inetd.afs program, specify -this configuration file rather than the standard one. Each line in the -inetd.conf.afs file must include an additional field, -fifth from the left, to specify the identity under which the program is to -run. The normal choice is the local superuser root. -The following sample shows the only lines that need to appear in this -file: -
         ta-rauth stream tcp nowait root internal          ta-rauth
      -   shell    stream tcp nowait root /usr/etc/rshd     rshd
      -   login    stream tcp nowait root /usr/etc/rlogind  rlogind
      -
      -

      Substitute appropriate values for the binary locations and names in the -instructions, particularly for the shell and login -processes. Include the login instruction only if the -AFS-modified versions of login utilities are also in use in the cell; -otherwise, refer to login in the standard -inetd.conf instead. -

      Note also that some system types use different process names. For -example, on Sun system types change rshd to -in.rshd and rlogind.afs to -in.rlogind.afs in the shell and -login instructions, respectively. -

    • Edit the standard inetd.conf file (referenced by the -standard inetd process): comment out the shell -instruction and, if AFS-modified versions of login utilities are in use in the -cell, the login instruction. The -inetd.conf.afs file references these processes -instead. Retain the login instruction if AFS-modified -versions of login utilities are not being used. Alter the -ftp instruction to refer to the AFS version of the ftpd -process, if it is substituted for the standard version. Do not insert -the extra fifth column into instructions in the standard -inetd.conf file if it does not already appear there. -See the following Examples section for an illustration. -
    -

    Options -

    See the UNIX manual page for the inetd program. -

    Examples -

    The following are sample inetd.conf.afs and -inetd.conf files, appropriate for use when the -inetd.afs program is running in parallel with the standard -inetd and AFS-modified login utilities are being used in the -cell. Changes to the standard inetd.conf file include -referencing the AFS version of the ftpd binary and commenting out -the shell and login lines. The example -inetd.conf file does not include the extra fifth -column. Do not use these examples without modifying them appropriately -for the local machine type or cell. -

       # AFS version of Internet server configuration database 
    -   #(EXAMPLE ONLY)
    -   #
    -   ta-rauth stream tcp nowait root internal           ta-rauth
    -   shell    stream tcp nowait root /usr/etc/rshd      rshd
    -   login    stream tcp nowait root /usr/etc/rlogind   rlogind
    -   
    -   # Standard version of Internet server configuration database 
    -   #(EXAMPLE ONLY)
    -   #
    -   ftp	  stream tcp nowait /etc/ftpd.afs   ftpd.afs
    -   telnet stream tcp nowait /etc/telnetd    telnetd
    -   #shell stream tcp nowait /etc/rshd       rshd
    -   #login stream tcp nowait /etc/rlogind    rlogind
    -   finger stream tcp nowait /usr/etc/fingd  fingd
    -   uucp	  stream tcp nowait /etc/uucpd	    uucpd
    -   exec	  stream tcp nowait /etc/rexecd	    rexecd
    -   comsat dgram	 udp wait   /etc/comsat	    comsat
    -   talk	  dgram	 udp wait   /etc/talkd	    talkd
    -   ntalk  dgram	 udp wait   /usr/etc/ntalkd talkd
    -   time	  dgram	 udp wait   /etc/miscd	    timed
    -
    -

    Privilege Required -

    See the UNIX manual page for the inetd program. -

    Related Information -

    rcp (AFS version) -

    rsh (AFS version) -

    UNIX manual page for inetd -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf180.htm b/doc/html/AdminReference/auarf180.htm deleted file mode 100644 index 206a5f380..000000000 --- a/doc/html/AdminReference/auarf180.htm +++ /dev/null @@ -1,93 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kadb_check

    - - - -

    Purpose -

    Checks the integrity of the Authentication Database -

    Synopsis -

    kadb_check -database <kadb_file>  [-uheader]  [-kheader]  [-entries]  
    -           [-verbose]  [-rebuild <out_file>]  [-help]
    -   
    -kadb_check -d <kadb_file>  [-u]  [-k]  [-e]  [-v]  [-r <out_file>]  [-h]
    -
    -

    Description -

    The kadb_check command checks the integrity of the Protection -Database, reporting any errors or corruption it finds. If there are -problems, do not issue any kas commands until the database is -repaired. -

    Cautions -

    The results can be unpredictable if the Authentication Server makes changes -to the Authentication Database while this command is running. Use the -bos shutdown command to shutdown the local kaserver -process before running this command, or before creating a second copy of the -kaserver.DB0 file (with a different name) on which to run -the command. -

    Options -

    -

    -database -
    Names the Authentication Database (copy of the -kaserver.DB0 file) to check. If the current working -directory is not the location of the file, provide a pathname, either full or -relative to the current working directory. -

    -uheader -
    Displays information which Ubik maintains in the database's -header. -

    -kheader -
    Displays information which the Authentication Server maintains in the -database's header. -

    -entries -
    Outputs every entry in the database, providing information similar to that -returned by the kas examine command. -

    -verbose -
    Reports additional information about the database, including the number of -free (allocated but unused) entries in the database. -

    -rebuild -
    Names the file in which to record a list of kas commands which, -if issued in the command shell, recreate the current state of the database -being verified. Partial pathnames are interpreted relative to the -current working directory. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If there are errors in the database, the output always reports them on the -standard error stream. If any options other than -database -or -help are provided, the output written to the standard output -stream includes additional information as described for each option in the -preceding Options section of this reference page. The output -is intended for debugging purposes and is meaningful to someone familiar with -the internal structure of the Authentication Database. -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    kaserver.DB0 and kaserver.DBSYS1 -

    bos shutdown -

    kas examine -

    kaserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf181.htm b/doc/html/AdminReference/auarf181.htm deleted file mode 100644 index f9380883f..000000000 --- a/doc/html/AdminReference/auarf181.htm +++ /dev/null @@ -1,189 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas

    - - - - - -

    Purpose -

    Introduction to the kas command suite -

    Description -

    The commands in the kas command suite are the administrative -interface to the Authentication Server, which runs on each database server -machine in a cell, maintains the Authentication Database, and provides the -authentication tickets that client applications must present to AFS servers in -order to obtain access to AFS data and other services. -

    There are several categories of commands in the kas command -suite: -

      -

    • Commands to create, modify, examine and delete entries in the -Authentication Database, including passwords: kas create, -kas delete, kas examine, kas list, kas -setfields, kas setkey, kas setpassword, and -kas unlock -

    • Commands to create, delete, and examine tokens and server tickets: -kas forgetticket, kas listtickets, kas -noauthentication, and kas stringtokey -

    • A command to enter interactive mode: kas interactive -

    • A command to trace Authentication Server operations: kas -statistics -

    • Commands to obtain help: kas apropos and kas -help -
    -

    Because of the sensitivity of information in the Authentication Database, -the Authentication Server authenticates issuers of kas commands -directly, rather than accepting the standard token generated by the Ticket -Granting Service. Any kas command that requires -administrative privilege prompts the issuer for a password. The -resulting ticket is valid for six hours unless the maximum ticket lifetime for -the issuer or the Authentication Server's Ticket Granting Service is -shorter. - - -

    To avoid having to provide a password repeatedly when issuing a sequence of -kas commands, enter interactive mode by issuing the -kas interactive command, typing kas without any -operation code, or typing kas followed by a user and cell name, -separated by an at-sign (@; an example is kas -smith.admin@abc.com). After prompting once for a -password, the Authentication Server accepts the resulting token for every -command issued during the interactive session. See the reference page -for the kas interactive command for a discussion of when to use -each method for entering interactive mode and of the effects of entering a -session. -

    The Authentication Server maintains two databases on the local disk of the -machine where it runs: -

      -

    • The Authentication Database (/usr/afs/db/kaserver.DB0) -stores the information used to provide AFS authentication services to users -and servers, including the password scrambled as an encryption key. The -reference page for the kas examine command describes the -information in a database entry. -

    • An auxiliary file (/usr/afs/local/kaauxdb by default) that -tracks how often the user has provided an incorrect password to the local -Authentication Server. The reference page for the kas -setfields command describes how the Authentication Server uses this file -to enforce the limit on consecutive authentication failures. To -designate an alternate directory for the file, use the kaserver -command's -localfiles argument. -
    -

    Options -

    The following arguments and flags are available on many commands in the -kas suite. (Some of them are unavailable on commands entered -in interactive mode, because the information they specify is established when -entering interactive mode and cannot be changed except by leaving interactive -mode.) The reference page for each command also lists them, but they -are described here in greater detail. -

    -

    - --admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. If this argument is -omitted, the kas command interpreter requests authentication for -the identity under which the issuer is logged onto the local machine. -Do not combine this argument with the -noauth flag. - -

    -cell <cell name> -
    Names the cell in which to run the command. It is acceptable to -abbreviate the cell name to the shortest form that distinguishes it from the -other entries in the /usr/vice/etc/CellServDB file on the local -machine. If the -cell argument is omitted, the command -interpreter determines the name of the local cell by reading the following in -order: -
      -

    1. The value of the AFSCELL environment variable -

    2. The local /usr/vice/etc/ThisCell file -
    -

    -

    The -cell argument is not available on commands issued in -interactive mode. The cell defined when the kas command -interpreter enters interactive mode applies to all commands issued during the -interactive session. - -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -

    - --noauth -
    Establishes an unauthenticated connection to the Authentication Server, in -which the Authentication Server treats the issuer as the unprivileged user -anonymous. It is useful only when authorization checking is -disabled on the server machine (during the installation of a server machine or -when the bos setauth command has been used during other unusual -circumstances). In normal circumstances, the Authentication Server -allows only privileged users to issue most kas commands, and -refuses to perform such an action even if the -noauth flag is -provided. Do not combine this flag with the -admin_username -and -password_for_admin arguments. -

    - --password_for_admin -
    Specifies the password of the command's issuer. It is best to -omit this argument, which echoes the password visibly in the command shell, -instead enter the password at the prompt. Do not combine this argument -with the -noauth flag. -

    - --servers -
    Establishes a connection with the Authentication Server running on each -specified database server machine, instead of on each machine listed in the -local /usr/vice/etc/CellServDB file. In either case, the -kas command interpreter then chooses one of the machines at random -to contact for execution of each subsequent command. The issuer can -abbreviate the machine name to the shortest form that allows the local name -service to identify it uniquely. -
    -

    Privilege Required -

    To issue most kas commands, the issuer must have the -ADMIN flag set in his or her Authentication Database entry (use the -kas setfields command to turn the flag on). -

    Related Information -

    CellServDB (client version) -

    kaserver.DB0 and kaserver.DBSYS1 -

    kaserverauxdb -

    kas apropos -

    kas create -

    kas delete -

    kas examine -

    kas forgetticket -

    kas help -

    kas interactive -

    kas list -

    kas listtickets -

    kas noauthentication -

    kas quit -

    kas setfields -

    kas setpassword -

    kas statistics -

    kas stringtokey -

    kas unlock -

    kaserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf182.htm b/doc/html/AdminReference/auarf182.htm deleted file mode 100644 index e51a16649..000000000 --- a/doc/html/AdminReference/auarf182.htm +++ /dev/null @@ -1,71 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    kas apropos -topic <help string>  [-help]
    -    
    -kas a  -t <help string>  [-h]
    -
    -

    Description -

    The kas apropos command displays the first line of the online -help entry for any kas command that has the string specified by the --topic argument in its name or short description. -

    To display the syntax for a command, use the kas help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -kas command where the string specified with the -topic -argument is part of the command name or first line. -

    Examples -

    The following command lists all kas commands that include the -word key in their names or short descriptions: -

       % kas apropos key
    -   setkey: set a user's key
    -   stringtokey: convert a string to a key
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    kas -

    kas help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf183.htm b/doc/html/AdminReference/auarf183.htm deleted file mode 100644 index 8ba5b98ca..000000000 --- a/doc/html/AdminReference/auarf183.htm +++ /dev/null @@ -1,117 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas create

    - - - - - -

    Purpose -

    Creates an entry in the Authentication Database -

    Synopsis -

    kas create -name <name of user>  [-initial_password <initial password>] 
    -           [-admin_username <admin principal to use for authentication>] 
    -           [-password_for_admin <admin password>]  [-cell <cell name>] 
    -           [-servers <explicit list of authentication servers>+]  
    -           [-noauth]  [-help]
    -   
    -kas c -na <name of user>  [-i <initial password>] 
    -      [-a <admin principal to use for authentication>]  
    -      [-p <admin password>]  [-c <cell name>]  
    -      [-s <explicit list of authentication servers>+]  [-no]  [-h] 
    -
    -

    Description -

    The kas create command creates an entry in the Authentication -Database for the user named by the -name argument. -

    To avoid having the account's initial password echo visibly at the -shell prompt, omit the -initial_password argument; the command -interpreter prompts for the password and does not echo it visibly. -Whether or not -initial_password is omitted, the Authentication -Server converts the password into a form suitable for use as an encryption -key, and records it in the entry's key field. -

    To alter settings in an Authentication Database entry, use the kas -setfields command. To examine an entry, use the kas -examine command. To list every entry in the database, use the -kas list command. -

    Options -

    -

    -name -
    Names the new Authentication Database entry. Because it is the name -under which the user logs in, it must obey the restrictions that many -operating systems impose on user names (usually, to contain no more than eight -lowercase letters). -

    -initial_password -
    Sets the user's password; provide a character string that can -include uppercase and lowercase letters, numerals and punctuation. The -Authentication Server scrambles the string into an octal string suitable for -use as an encryption key before placing it in the entry's key -field. If this argument is omitted, the command interpreter prompts for -the string and does not echo it visibly. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example shows the prompts that appear when an administrator -logged in as admin creates an Authentication Database entry for the -user smith, and does not include either the --initial_password or -password_for_admin -arguments. -

       % kas create smith
    -   Password for admin: 
    -   initial_password:
    -   Verifying, please re-enter initial_password:
    -   
    -
    -

    Privilege Required -

    The issuer must have the ADMIN flag set on his or her -Authentication Database entry. -

    Related Information -

    kas -

    kas examine -

    kas list -

    kas setfields -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf184.htm b/doc/html/AdminReference/auarf184.htm deleted file mode 100644 index c7aba9730..000000000 --- a/doc/html/AdminReference/auarf184.htm +++ /dev/null @@ -1,98 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas delete

    - - - - -

    Purpose -

    Deletes an entry from the Authentication Database -

    Synopsis -

    kas delete -name <name of user>  
    -           [-admin_username <admin principal to use for authentication>]  
    -           [-password_for_admin <admin password>]  [-cell <cell name>]  
    -           [-servers <explicit list of authentication servers>+]  
    -           [-noauth]  [-help] 
    -   
    -kas d -na <name of user>  [-a <admin principal to use for authentication>] 
    -      [-p <admin password>]  [-c <cell name>]  
    -      [-s <explicit list of authentication servers>+]  [-no]  [-h] 
    -     
    -kas rm -na <name of user>  [-a <admin principal to use for authentication>]  
    -       [-p <admin password>]  [-c <cell name>]  
    -       [-s <explicit list of authentication servers>+]  [-no]  [-h]  
    -
    -

    Description -

    The kas delete command removes from the Authentication Database -the user entry named by the -name argument. The indicated -user becomes unable to log in, or the indicated server becomes unreachable -(because the Authentication Server's Ticket Granting Service module no -longer has a key with which to seal tickets for the server). -

    Options -

    -

    -name -
    Names the Authentication Database entry to delete. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example shows the administrative user admin -entering interactive mode to delete three accounts. -

       % kas
    -   Password for admin:
    -   ka> delete smith
    -   ka> delete pat
    -   ka> delete terry
    -   
    -
    -

    Privilege Required -

    The issuer must have the ADMIN flag set on his or her -Authentication Database entry. -

    Related Information -

    kas -

    kas create -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf185.htm b/doc/html/AdminReference/auarf185.htm deleted file mode 100644 index 05775b803..000000000 --- a/doc/html/AdminReference/auarf185.htm +++ /dev/null @@ -1,261 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas examine

    - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Displays information from an Authentication Database entry -

    Synopsis -

    kas examine -name <name of user> [-showkey] 
    -            [-admin_username <admin principal to use for authentication>]  
    -            [-password_for_admin <admin password>]  [-cell <cell name>] 
    -            [-servers <explicit list of authentication servers>+]  
    -            [-noauth]  [-help] 
    -    
    -kas e -na <name of user>  [-sh] 
    -      [-a <admin principal to use for authentication>] 
    -      [-p <admin password>]  [-c <cell name>] 
    -      [-se <explicit list of authentication servers>+]  [-no]  [-h]  
    -
    -

    Description -

    The kas examine command formats and displays information from -the Authentication Database entry of the user named by the -name -argument. -

    To alter the settings displayed with this command, issue the kas -setfields command. -

    Cautions -

    Displaying actual keys on the standard output stream by including the --showkey flag constitutes a security exposure. For most -purposes, it is sufficient to display a checksum. -

    Options -

    -

    -name -
    Names the Authentication Database entry from which to display -information. -

    -showkey -
    Displays the octal digits that constitute the key. The issuer must -have the ADMIN flag on his or her Authentication Database -entry. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes: -

      -

    • The entry name, following the string User data for. -

    • One or more status flags in parentheses; they appear only if an -administrator has used the kas setfields command to change them -from their default values. A plus sign (+) separates the -flags if there is more than one. The nondefault values that can appear, -and their meanings, are as follows: -
      -

      ADMIN -
      Enables the user to issue privileged kas commands (default is -NOADMIN) -

      NOTGS -
      Prevents the user from obtaining tickets from the Authentication -Server's Ticket Granting Service (default is TGS) -

      NOSEAL -
      Prevents the Ticket Granting Service from using the entry's key field -as an encryption key (default is SEAL) -

      NOCPW -
      Prevents the user from changing his or her password (default is -CPW) -
      - - - -

    • The key version number, in parentheses, following the word key, -then one of the following. -
        -

      • A checksum equivalent of the key, following the string cksum -is, if the -showkey flag is not included. The checksum -is a decimal number derived by encrypting a constant with the key. In -the case of the afs entry, this number must match the -checksum with the corresponding key version number in the output of the -bos listkeys command; if not, follow the instructions in the -IBM AFS Administration Guide for creating a new server encryption -key. -

      • The actual key, following a colon, if the -showkey flag is -included. The key consists of eight octal numbers, each represented as -a backslash followed by three decimal digits. -
      -

    • The date the user last changed his or her own password, following the -string last cpw (which stands for "last change of -password"). -

    • The string password will never expire indicates that the -associated password never expires; the string password will -expire is followed by the password's expiration date. After -the indicated date, the user cannot authenticate, but has 30 days after it in -which to use the kpasswd or kas setpassword command to -set a new password. After 30 days, only an administrator (one whose -account is marked with the ADMIN flag) can change the password by -using the kas setpassword command. To set the password -expiration date, use the kas setfields command's --pwexpires argument. -

    • The number of times the user can fail to provide the correct password -before the account locks, followed by the string consecutive unsuccessful -authentications are permitted, or the string An unlimited number of -unsuccessful authentications is permitted to indicate that there is no -limit. To set the limit, use the kas setfields -command's -attempts argument. To unlock a locked -account, use the kas unlock command. The kas -setfields reference page discusses how the implementation of the lockout -feature interacts with this setting. -

    • The number of minutes for which the Authentication Server refuses the -user's login attempts after the limit on consecutive unsuccessful -authentication attempts is exceeded, following the string The lock time -for this user is. Use the kas command's --locktime argument to set the lockout time. This line -appears only if a limit on the number of unsuccessful authentication attempts -has been set with the the kas setfields command's --attempts argument. -

    • An indication of whether the Authentication Server is currently refusing -the user's login attempts. The string User is not -locked indicates that authentication can succeed, whereas the string -User is locked until time indicates that the user cannot -authenticate until the indicated time. Use the kas unlock -command to enable a user to attempt authentication. This line appears -only if a limit on the number of unsuccessful authentication attempts has been -set with the kas setfields command's -attempts -argument. -

    • The date on which the Authentication Server entry expires, or the string -entry never expires to indicate that the entry does not -expire. A user becomes unable to authenticate when his or her entry -expires. Use the kas setfields command's --expiration argument to set the expiration date. -

    • The maximum possible lifetime of the tokens that the Authentication Server -grants the user. This value interacts with several others to determine -the actual lifetime of the token, as described on the klog -reference page. Use the kas setfields command's --lifetime argument to set this value. -

    • The date on which the entry was last modified, following the string -last mod on and the user name of the administrator who modified -it. The date on which a user changed his or her own password is -recorded on the second line of output as last cpw instead. -

    • An indication of whether the user can reuse one of his or her last twenty -passwords when issuing the kpasswd, kas setpassword, or -kas setkey commands. Use the kas setfields -command's -reuse argument to set this restriction. -
    -

    Examples -

    The following example command shows the user smith displaying -her own Authentication Database entry. Note the ADMIN flag, -which shows that smith is privileged. -

       % kas examine smith
    -   Password for smith:
    -   User data for smith (ADMIN)
    -    key (0) cksum is 3414844392,  last cpw: Thu Mar 25 16:05:44 1999
    -    password will expire:  Fri Apr 30 20:44:36 1999
    -    5 consecutive unsuccessful authentications are permitted.
    -    The lock time for this user is 25.5 minutes.
    -    User is not locked.
    -    entry never expires. Max ticket lifetime 100.00 hours.
    -    last mod on Tue Jan 5 08:22:29 1999 by admin
    -    permit password reuse
    -   
    -
    -

    In the following example, the user pat examines his -Authentication Database entry to determine when the account lockout currently -in effect will end. -

       % kas examine pat
    -   Password for pat:
    -   User data for pat
    -    key (0) cksum is 73829292912,  last cpw: Wed Apr 7 11:23:01 1999
    -    password will expire:  Fri  Jun 11 11:23:01 1999
    -    5 consecutive unsuccessful authentications are permitted.
    -    The lock time for this user is 25.5 minutes.
    -    User is locked until Tue Sep 21 12:25:07 1999
    -    entry expires on never. Max ticket lifetime 100.00 hours.
    -    last mod on Thu Feb 4 08:22:29 1999 by admin
    -    permit password reuse
    -   
    -
    -

    In the following example, an administrator logged in as admin -uses the -showkey flag to display the octal digits that constitute -the key in the afs entry. -

       % kas examine -name afs -showkey
    -   Password for admin: admin_password
    -   User data for afs
    -    key (12): \357\253\304\352\234\236\253\352, last cpw: no date 
    -    entry never expires. Max ticket lifetime 100.00 hours.
    -    last mod on Thu Mar 25 14:53:29 1999 by admin
    -    permit password reuse
    -   
    -
    -

    Privilege Required -

    A user can examine his or her own entry. To examine others' -entries or to include the -showkey flag, the issuer must have the -ADMIN flag set in his or her Authentication Database entry. -

    Related Information -

    bos addkey -

    bos listkeys -

    bos setauth -

    kas -

    kas setfields -

    kas setpassword -

    kas unlock -

    klog -

    kpasswd -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf186.htm b/doc/html/AdminReference/auarf186.htm deleted file mode 100644 index bdd8c981a..000000000 --- a/doc/html/AdminReference/auarf186.htm +++ /dev/null @@ -1,64 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas forgetticket

    - - - - - -

    Purpose -

    Discards all tickets for the issuer -

    Synopsis -

    kas forgetticket [-all]  [-help]
    -    
    -kas f [-a]  [-h]
    -
    -

    Description -

    The kas forgetticket command discards all of the issuer's -tickets stored in the local machine's kernel memory. This includes -the AFS server ticket from each cell in which the user has authenticated, and -any tickets that the user have acquired during the current kas -session (either when entering the session or by using the kas -getticket command). -

    Options -

    -

    -all -
    Discards all tickets. This argument explicitly invokes the -command's default behavior. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command discards all of the issuer's tickets. -

       % kas forgetticket
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    kas -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf187.htm b/doc/html/AdminReference/auarf187.htm deleted file mode 100644 index e29d23ba7..000000000 --- a/doc/html/AdminReference/auarf187.htm +++ /dev/null @@ -1,88 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas help

    - - - -

    Purpose -

    Displays the syntax of each specified kas command or lists -functional descriptions of all kas commands -

    Synopsis -

    kas help [-topic <help string>+]  [-help]
    -   
    -kas h [-t <help string>+]  [-h]
    -
    -

    Description -

    The kas help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every kas command. -

    To list every kas command whose name or short description -includes a specified keyword, use the kas apropos command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the kas part of the command name, providing only -the operation code (for example, specify setpassword, not kas -setpassword). If this argument is omitted, the output briefly -describes every kas command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each kas command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the kas -setpassword command: -

       % kas help setpassword
    -   kas setpassword: set a user's password 
    -   aliases: sp 
    -   Usage: kas setpassword -name <name of user> 
    -   [-new_password <new password>] [-kvno <key version number>] 
    -   [-admin_username <admin principal to use for authentication>] 
    -   [-password_for_admin <password>] [-cell <cell name>] 
    -   [-servers <explicit list of authentication servers>+] [-help]  
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    kas -

    kas apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf188.htm b/doc/html/AdminReference/auarf188.htm deleted file mode 100644 index 3529c249a..000000000 --- a/doc/html/AdminReference/auarf188.htm +++ /dev/null @@ -1,133 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas interactive

    -

    Purpose -

    Enters interactive mode -

    Synopsis -

    kas interactive [-admin_username <admin principal to use for authentication>] 
    -                [-password_for_admin <admin password>]  [-cell <cell name>] 
    -                [-servers <explicit list of authentication servers>+]  
    -                [-noauth]  [-help]
    -      
    -kas i [-a <admin principal to use for authentication>]  
    -      [-p <admin password>]  [-c <cell name>]  
    -      [-s <explicit list of authentication servers>+]  [-n]  [-h]
    -
    -

    Description -

    The kas interactive command establishes an interactive session -for the issuer of the command. By default, the command interpreter -establishes an authenticated connection for the user logged into the local -file system with all of the Authentication Servers listed in the local -/usr/vice/etc/CellServDB file for the cell named in the local -/usr/vice/etc/ThisCell file. To specify an alternate -identity, cell name, or list of Authentication Servers, include the --admin_username, -cell, or -servers arguments -respectively. Interactive mode lasts for six hours unless the maximum -ticket lifetime for the issuer or the Authentication Server's Ticket -Granting Service is shorter. -

    There are two other ways to enter interactive mode, in addition to the -kas interactive command: -

      -

    1. Type the kas command at the shell prompt without any operation -code. If appropriate, include one or more of the --admin_username, -password_for_admin, -cell, -and -servers arguments. -

    2. Type the kas command followed by a user name and cell name, -separated by an @ sign (for example: kas -admin@abc.com), to establish a connection under the specified -identity with the Authentication Servers listed in the local -/usr/vice/etc/CellServDB file for the indicated cell. If -appropriate, provide the -servers argument to specify an alternate -list of Authentication Server machines that belong to the indicated -cell. -
    -

    There are several consequences of entering interactive mode: -

      -

    • The ka> prompt replaces the system (shell) prompt. When -typing commands at this prompt, provide only the operation code (omit the -command suite name, kas). -

    • The command interpreter does not prompt for the issuer's -password. -

      The issuer's identity and password, the relevant cell, and the set of -Authentication Server machines specified when entering interactive mode apply -to all commands issued during the session. They cannot be changed -without leaving the session, except by using the (kas) -noauthentication command to replace the current authenticated -connections with unauthenticated ones. The -admin_username, --password_for_admin, -cell, and -servers -arguments are ignored if provided on a command issued during interactive -mode. -

    -

    To establish an unauthenticated connection to the Authentication Server, -include the -noauth flag or provide an incorrect password. -Unless authorization checking is disabled on each Authentication Server -machine involved, however, it is not possible to perform any privileged -operations within such a session. -

    To end the current authenticated connection and establish an -unauthenticated one, issue the (kas) noauthentication -command. To leave interactive mode and return to the regular shell -prompt, issue the (kas) quit command. -

    Options -

    -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example shows a user entering interactive mode as the -privileged user admin. -

       % kas interactive admin
    -   Password for admin: admin_password
    -   ka>
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    kas -

    kas noauthentication -

    kas quit -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf189.htm b/doc/html/AdminReference/auarf189.htm deleted file mode 100644 index bcfffafc6..000000000 --- a/doc/html/AdminReference/auarf189.htm +++ /dev/null @@ -1,118 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas list

    - - - - -

    Purpose -

    Displays all entries in the Authentication Database -

    Synopsis -

    kas list [-long]  [-showadmin]  [-showkey]
    -         [-admin_username <admin principal to use for authentication>] 
    -         [-password_for_admin <admin password>]  [-cell <cell name>] 
    -         [-servers <explicit list of authentication servers>+]
    -         [-noauth]  [-help]
    -   
    -kas ls [-l]  [-showa]   [-showk]
    -       [-a <admin principal to use for authentication>] 
    -       [-p <admin password>]  [-c <cell name>] 
    -       [-se <explicit list of authentication servers>+]  [-n]  [-h] 
    -
    -

    Description -

    The kas list command either displays all entries from the -Authentication Database by name, or displays the full database entry for a -defined set of entries, as determined by the flag provided: -

      -

    • To display every entry in the Authentication Database in full, include the --long flag. -

    • To display only those entries in full that have the ADMIN flag -set, include the -showadmin flag. -

    • To list only the name of each Authentication Database entry, omit both the --long and -showadmin flags. -
    -

    By default, full entries include a checksum for the encryption key, rather -than the actual octal digits that constitute the key. To display the -octal digits, include the -showkey flag with the -long -or -showadmin flag. -

    Options -

    -

    -long -
    Displays every Authentication Database entry in full. Provide this -flag or the -showadmin flag, or omit both to display just the name -of every database entry. -

    -showadmin -
    Displays in full only the Authentication Database entries that have the -ADMIN flag set. Provide this flag or the -long -flag, or omit both to display just the name of every database entry. -

    -showkey -
    Displays the octal digits that constitute the key in each full -entry. Provide either the -long or -showadmin -flag along with this one. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If neither the -long or -showadmin flag is provided, -the output lists the name of each entry in the Authentication Database on its -own line. -

    If the -long flag is included, the output includes every -Authentication Database entry in full. If the -showadmin -flag is included, the output includes in full only the Authentication Database -entries that have the ADMIN flag set. If the --showkey is provided along with either one, the output includes the -octal digits that constitute the encryption key in each entry. -

    A full Authentication Database entry includes the same information -displayed by the kas examine command; for details, see that -command's reference page. -

    Privilege Required -

    The issuer must have the ADMIN flag set on his or her -Authentication Database entry. -

    Related Information -

    kas -

    kas examine -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf190.htm b/doc/html/AdminReference/auarf190.htm deleted file mode 100644 index 4ecb7253b..000000000 --- a/doc/html/AdminReference/auarf190.htm +++ /dev/null @@ -1,102 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas listtickets

    - - - - -

    Purpose -

    Displays all of the issuer's tickets (tokens) -

    Synopsis -

    kas listtickets [-name <name of server>]  [-long]  [-help]
    -   
    -kas listt [-n <name of server>]  [-l]  [-h]
    -
    -

    Description -

    The kas listtickets command displays the associated user ID (AFS -UID), cell name, and expiration date of some or all of the issuer's -tickets (tokens), depending on which options are provided: -

      -

    • To display all tokens, provide neither the -name argument nor --long flag. The output is similar to that of the -tokens command. -

    • To display a single token, provide the -name argument to -specify name of the Authentication Database entry for the entity that accepts -the token. All AFS server processes accept tokens sealed with the key -from the afs entry. -

    • To display in addition the octal numbers that constitute the token and -session key, provide the -long flag. -
    -

    Options -

    -

    -name -
    Names the Authentication Database entry of the entity (usually a server -process) that accepts the token to display. -

    -long -
    Displays the octal numbers that constitute the session key and -ticket. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output reports the AFS UID of the user who owns the token, the service -(usually, afs) and cell for which it is valid, and its expiration -date, using the following format. If the message does not specify a -cell, the ticket is for the local cell. -

       User's (AFS ID AFS UID) tokens for service[@cellname] [Expires date]
    -   
    -
    -

    If the -long flag is provided, the output also includes the -octal numbers making up the session key and token, along with the key version -number and the number of bytes in the token (if the number of bytes is not 56, -there is an error). -

    If the marker [>> POSTDATED <] appears instead of an -expiration date, the ticket does not become valid until the indicated -time. (Only internal calls can create a postdated ticket; there is -no standard interface that allows users to do this.) -

    Examples -

    The following two examples are for a user with AFS UID 1020 in the -abc.com cell and AFS UID 35 in the -test.abc.com cell. He is working on a machine -in the first cell and is authenticated in both cells. -

       % kas listtickets
    -   User's (AFS ID 1020) tokens for afs [Expires Wed Mar 31 9:30:54 1999]
    -   User's (AFS ID 35@test.abc.com) tokens for afs@test.abc.com  \
    -             [Expires Wed Mar 31 13:54:26 1999]
    -   
    -   % kas listtickets -name afs -long
    -   User's (AFS ID 1020) tokens for afs [Expires Wed Mar 31 9:30:54 1999]
    -   SessionKey: \375\205\351\227\032\310\263\013
    -   Ticket: (kvno = 0, len = 56): \033\005\221\156\203\278\312\058\016\133 (etc.)
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    kas -

    tokens -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf191.htm b/doc/html/AdminReference/auarf191.htm deleted file mode 100644 index 680f223c4..000000000 --- a/doc/html/AdminReference/auarf191.htm +++ /dev/null @@ -1,71 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas noauthentication

    - - - - - -

    Purpose -

    Discards an authenticated identity in interactive mode -

    Synopsis -

    noauthentication  [-help]
    -   
    -n  [-h]
    -
    -

    Description -

    The kas noauthentication command closes the (presumably -authenticated) connection that the issuer established with one or more -Authentication Server processes when entering interactive mode. It -opens a new unauthenticated connection to each server, assigning the issuer -the unprivileged identity anonymous. It does not actually -discard the user's tokens from the Cache Manager's memory (as the -unlog or kas forgetticket command does). Unless -authorization checking is disabled on each Authentication Server machine, it -becomes impossible to perform any privileged operations within the session -established by this command. -

    This command is operative only during interactive mode, so omit the -kas command suite name from the command line. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example command discards the authentication information with -which the user entered interactive mode. -

       ka> noauthentication
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    kas -

    kas forgetticket -

    kas interactive -

    unlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf192.htm b/doc/html/AdminReference/auarf192.htm deleted file mode 100644 index cec462617..000000000 --- a/doc/html/AdminReference/auarf192.htm +++ /dev/null @@ -1,63 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas quit

    - - - - - -

    Purpose -

    Leaves interactive mode -

    Synopsis -

    quit  [-help]
    -   
    -q  [-h]
    -
    -

    Description -

    The kas quit command ends interactive mode, severing the -authenticated connection to one or more Authentication Server processes and -returning the issuer to the normal shell prompt. -

    This command is operative only during interactive mode, so omit the -kas command suite name from the command line. -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example demonstrates how the normal command shell prompt -returns when the issuer leaves interactive mode. -

       ka> quit
    -   %
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    kas -

    kas interactive -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf193.htm b/doc/html/AdminReference/auarf193.htm deleted file mode 100644 index 6a2f4cb36..000000000 --- a/doc/html/AdminReference/auarf193.htm +++ /dev/null @@ -1,351 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas setfields

    - - - - - - - - - - - - - -

    Purpose -

    Sets optional characteristics in an Authentication Database entry -

    Synopsis -

    kas setfields -name <name of user>
    -              [-flags <hex flag value or flag name expression>] 
    -              [-expiration <date of account expiration>] 
    -              [-lifetime <maximum ticket lifetime>] 
    -              [-pwexpires <number days password is valid ([0..254])>]
    -              [-reuse <permit password reuse (yes/no)>]
    -              [-attempts <maximum successive failed login tries ([0..254])>]
    -              [-locktime <failure penalty [hh:mm or minutes]>]
    -              [-admin_username <admin principal to use for authentication>] 
    -              [-password_for_admin <admin password>]  [-cell <cell name>] 
    -              [-servers <explicit list of authentication servers>+]
    -              [-noauth]  [-help]
    -   
    -kas setf -na <name of user>  [-f <hex flag value or flag name expression>]
    -         [-e <date of account expiration>]  [-li <maximum ticket lifetime>]
    -         [-pw <number days password is valid ([0..254])>]
    -         [-r <permit password reuse (yes/no)>]
    -         [-at <maximum successive failed login tries ([0..254])>]
    -         [-lo <failure penalty [hh:mm or minutes]>]
    -         [-ad <admin principal to use for authentication>] 
    -         [-pa <admin password>]  [-c <cell name>]
    -         [-s <explicit list of authentication servers>+]  [-no]  [-h] 
    -   
    -kas sf -na <name of user>  [-f <hex flag value or flag name expression>]
    -       [-e <date of account expiration>]  [-li <maximum ticket lifetime>]
    -       [-pw <number days password is valid ([0..254])>]
    -       [-r <permit password reuse (yes/no)>]
    -       [-at <maximum successive failed login tries ([0..254])>]
    -       [-lo <failure penalty [hh:mm or minutes]>]
    -       [-ad <admin principal to use for authentication>] 
    -       [-pa <admin password>]  [-c <cell name>]
    -       [-s <explicit list of authentication servers>+]  [-no]  [-h]
    -
    -

    Description -

    The kas setfields command changes the Authentication Database -entry for the user named by the -name argument in the manner -specified by the various optional arguments, which can occur singly or in -combination: -

      -

    • To set the flags that determine whether the user has administrative -privileges to the Authentication Server, can obtain a ticket, can change his -or her password, and so on, include the -flags argument. -

    • To set when the Authentication Database entry expires, include the --expiration argument. -

    • To set the maximum ticket lifetime associated with the entry, include the --lifetime argument. The reference page for the -klog command explains how this value interacts with others to -determine the actual lifetime of a token. -

    • To set when the user's password expires, include the --pwexpires argument. -

    • To set whether the user can reuse any of the previous twenty passwords -when creating a new one, include the -reuse argument. -

    • To set the maximum number of times the user can provide an incorrect -password before the Authentication Server refuses to accept any more attempts -(locks the issuer out), include the -attempts argument. -After the sixth failed authentication attempt, the Authentication Server logs -a message in the UNIX system log file (the syslog file or -equivalent, for which the standard location varies depending on the operating -system). -

    • To set how long the Authentication Server refuses to process -authentication attempts for a locked-out user, set the -locktime -argument. -
    -

    The kas examine command displays the settings made with this -command. -

    Cautions -

    The password lifetime set with the -pwexpires argument begins at -the time the user's password was last changed, rather than when this -command is issued. It can therefore be retroactive. If, for -example, a user changed her password 100 days ago and the password lifetime is -set to 100 days or less, the password effectively expires immediately. -To avoid retroactive expiration, instruct the user to change the password just -before setting a password lifetime. -

    Administrators whose authentication accounts have the ADMIN flag -enjoy complete access to the sensitive information in the Authentication -Database. To prevent access by unauthorized users, use the --attempts argument to impose a fairly strict limit on the number of -times that a user obtaining administrative tokens can provide an incorrect -password. Note, however, that there must be more than one account in -the cell with the ADMIN flag. The kas unlock -command requires the ADMIN privilege, so it is important that the -locked-out administrator (or a colleague) can access another -ADMIN-privileged account to unlock the current account. -

    In certain circumstances, the mechanism used to enforce the number of -failed authentication attempts can cause a lockout even though the number of -failed attempts is less than the limit set by the -attempts -argument. Client-side authentication programs such as klog -and an AFS-modified login utility normally choose an Authentication Server at -random for each authentication attempt, and in case of a failure are likely to -choose a different Authentication Server for the next attempt. The -Authentication Servers running on the various database server machines do not -communicate with each other about how many times a user has failed to provide -the correct password to them. Instead, each Authentication Server -maintains its own separate copy of the auxiliary database file -kaserverauxdb (located in the /usr/afs/local directory -by default), which records the number of consecutive authentication failures -for each user account and the time of the most recent failure. This -implementation means that on average each Authentication Server knows about -only a fraction of the total number of failed attempts. The only way to -avoid allowing more than the number of attempts set by the --attempts argument is to have each Authentication Server allow only -some fraction of the total. More specifically, if the limit on failed -attempts is f, and the number of Authentication Servers is -S, then each Authentication Server can only permit a number of -attempts equal to f divided by S (the Ubik -synchronization site for the Authentication Server tracks any remainder, -fmodS). -

    Normally, this implementation does not reduce the number of allowed -attempts to less than the configured limit (f). If one -Authentication Server refuses an attempt, the client contacts another instance -of the server, continuing until either it successfully authenticates or has -contacted all of the servers. However, if one or more of the -Authentication Server processes is unavailable, the limit is effectively -reduced by a percentage equal to the quantity U divided by -S, where U is the number of unavailable servers and -S is the number normally available. -

    To avoid the undesirable consequences of setting a limit on failed -authentication attempts, note the following recommendations: -

      -

    • Do not set the -attempts argument (the limit on failed -authentication attempts) too low. A limit of nine failed attempts is -recommended for regular user accounts, to allow three failed attempts per -Authentication Server in a cell with three database server machines. -

    • Set fairly short lockout times when including the -locktime -argument. Although guessing passwords is a common method of attack, it -is not a very sophisticated one. Setting a lockout time can help -discourage attackers, but excessively long times are likely to be more of a -burden to authorized users than to potential attackers. A lockout time -of 25 minutes is recommended for regular user accounts. -

    • Do not assign an infinite lockout time on an account (by setting the --locktime argument to 0 [zero]) unless there is a highly -compelling reason. Such accounts almost inevitably become locked at -some point, because each Authentication Server never resets the account's -failure counter in its copy of the kaauxdb file (in contrast, when -the lockout time is not infinite, the counter resets after the specified -amount of time has passed since the last failed attempt to that Authentication -Server). Furthermore, the only way to unlock an account with an -infinite lockout time is for an administrator to issue the kas -unlock command. It is especially dangerous to set an infinite -lockout time on an administrative account; if all administrative accounts -become locked, the only way to unlock them is to shut down all instances of -the Authentication Server and remove the kaauxdb file on -each. -
    -

    Options -

    -

    -name -
    Names the Authentication Database account for which to change -settings. -

    -flags -
    Sets one or more of four toggling flags, adding them to any flags -currently set. Either specify one or more of the following strings, or -specify a hexidecimal number that combines the indicated values. To -return all four flags to their defaults, provide a value of 0 -(zero). To set more than one flag at once using the strings, connect -them with plus signs (example: NOTGS+ADMIN+CPW). To -remove all the current flag settings before setting new ones, precede the list -with an equal sign (example: =NOTGS+ADMIN+CPW). -
    -

    ADMIN -
    The user is allowed to issue privileged kas commands -(hexadecimal equivalent is 0x004, default is -NOADMIN). - -

    NOTGS -
    The Authentication Server's Ticket Granting Service (TGS) refuses to -issue tickets to the user (hexadecimal equivalent is 0x008, default -is TGS). - -

    NOSEAL -
    The Ticket Granting Service cannot use the contents of this entry's -key field as an encryption key (hexadecimal equivalent is 0x020, -default is SEAL). - -

    NOCPW -
    The user cannot change his or her own password or key (hexadecimal -equivalent is 0x040, default is CPW). - -
    -

    -expiration -
    Determines when the entry itself expires. When a user entry -expires, the user becomes unable to log in; when a server entry such as -afs expires, all server processes that use the associated key -become inaccessible. Provide one of the three acceptable values: -
    -

    never -
    The account never expires (the default). -

    mm/dd/yyyy -
    Sets the expiration date to 12:00 a.m. on the -indicated date (month/day/year). Examples: 01/23/1999, -10/07/2000. -

    "mm/dd/yyyy hh:MM" -
    Sets the expiration date to the indicated time (hours:minutes) on -the indicated date (month/day/year). Specify the time in 24-hour format -(for example, 20:30 is 8:30 p.m.) Date -format is the same as for a date alone. Surround the entire instance -with quotes because it contains a space. Examples: -"01/23/1999 22:30", "10/07/2000 -3:45". -
    -

    -

    Acceptable values for the year range from 1970 (1 January 1970 -is time 0 in the standard UNIX date representation) through 2037 -(2037 is the maximum because the UNIX representation cannot accommodate dates -later than a value in February 2038). -

    -lifetime -
    Specifies the maximum lifetime that the Authentication Server's -Ticket Granting Service (TGS) can assign to a ticket. If the account -belongs to a user, this value is the maximum lifetime of a token issued to the -user. If the account corresponds to a server such as afs, -this value is the maximum lifetime of a ticket that the TGS issues to clients -for presentation to the server during mutual authentication. -

    Specify an integer that represents a number of seconds (3600 -equals one hour), or include a colon in the number to indicate a number of -hours and minutes (10:00 equals 10 hours). If this -argument is omitted, the default setting is 100:00 hours (360000 -seconds). -

    -pwexpires -
    Sets the number of days after the user's password was last changed -that it remains valid. Provide an integer from the range 1 -through 254 to specify the number of days until expiration, or the -value 0 to indicate that the password never expires (the -default). -

    When the password expires, the user is unable to authenticate, but has 30 -days after the expiration date in which to use the kpasswd command -to change the password (after that, only an administrator can change it by -using the kas setpassword command). Note that the clock -starts at the time the password was last changed, not when the kas -setfields command is issued. To avoid retroactive expiration, -have the user change the password just before issuing a command that includes -this argument. -

    -reuse -
    Specifies whether or not the user can reuse any of his or her last 20 -passwords. The acceptable values are yes to allow reuse of -old passwords (the default) and no to prohibit reuse of a password -that is similar to one of the previous 20 passwords. -

    -attempts -
    Sets the number of consecutive times the user can provide an incorrect -password during authentication (using the klog command or a login -utility that grants AFS tokens). When the user exceeds the limit, the -Authentication Server rejects further attempts (locks the user out) for the -amount of time specified by the -locktime argument. Provide -an integer from the range 1 through 254 to specify the -number of failures allowed, or 0 to indicate that there is no limit -on authentication attempts (the default value). -

    -locktime -
    Specifies how long the Authentication Server refuses authentication -attempts from a user who has exceeded the failure limit set by the --attempts argument. -

    Specify a number of hours and minutes (hh:mm) or -minutes only (mm), from the range 01 (one minute) through -36:00 (36 hours). The kas command -interpreter automatically reduces any larger value to 36:00 -and also rounds up any non-zero value to the next higher multiple of -8.5 minutes. A value of 0 (zero) sets an infinite -lockout time; an administrator must issue the kas unlock -command to unlock the account. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    In the following example, an administrator using the admin -account grants administrative privilege to the user smith, and sets -the Authentication Database entry to expire at midnight on 31 December -2000. -

       % kas setfields -name smith -flags ADMIN -expiration 12/31/2000
    -   Password for admin:
    -   
    -
    -

    In the following example, an administrator using the admin -account sets the user pat's password to expire in 60 days from -when it last changed, and prohibits reuse of passwords. -

       % kas setfields -name pat -pwexpires 60 -reuse no
    -   Password for admin:
    -   
    -
    -

    Privilege Required -

    The issuer must have the ADMIN flag set on his or her -Authentication Database entry. -

    Related Information -

    kaserverauxdb -

    kas -

    kas examine -

    kas setpassword -

    kas unlock -

    klog -

    kpasswd -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf194.htm b/doc/html/AdminReference/auarf194.htm deleted file mode 100644 index 2265abae6..000000000 --- a/doc/html/AdminReference/auarf194.htm +++ /dev/null @@ -1,158 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas setpassword

    - - - - - - - - -

    Purpose -

    Changes the key field in an Authentication Database entry -

    Synopsis -

    kas setpassword -name <name of user>  [-new_password <new password>] 
    -                [-kvno <key version number>] 
    -                [-admin_username <admin principal to use for authentication>] 
    -                [-password_for_admin <admin password>]  [-cell <cell name>] 
    -                [-servers <explicit list of authentication servers>+]
    -                [-noauth]  [-help]
    -   
    -kas setpasswd -na <name of user>  [-ne <new password>]  
    -              [-k <key version number>]
    -              [-a <admin principal to use for authentication>]  
    -              [-p <admin password>]  [-c <cell name>]  
    -              [-s <explicit list of authentication servers>+]  [-no]  [-h]
    -   
    -kas setp -na <name of user>  [-ne <new password>]  [-k <key version number>]
    -         [-a <admin principal to use for authentication>]  
    -         [-p <admin password>]  [-c <cell name>]  
    -         [-s <explicit list of authentication servers>+]  [-no]  [-h]
    -   
    -kas sp -na <name of user>  [-ne <new password>]  [-k <key version number>]
    -       [-a <admin principal to use for authentication >]  
    -       [-p <admin password>]  [-c <cell name>]  
    -       [-s <explicit list of authentication servers>+]  [-no]  [-h]
    -
    -

    Description -

    The kas setpassword command accepts a character string of -unlimited length, scrambles it into a form suitable for use as an encryption -key, places it in the key field of the Authentication Database entry named by -the -name argument, and assigns it the key version number specified -by the -kvno argument. -

    To avoid making the password string visible at the shell prompt, omit the --new_password argument. Prompts then appear at the shell -which do not echo the password visibly. -

    When changing the afs server key, also issue bos -addkey command to add the key (with the same key version number) to the -/usr/afs/etc/KeyFile file. See the IBM AFS -Administration Guide for instructions. -

    The command interpreter checks the password string subject to the following -conditions: -

      -

    • If there is a program called kpwvalid in the same directory as -the kas binary, the command interpreter invokes it to process the -password. For details, see the kpwvalid reference -page. -

    • If the -reuse argument to the kas setfields command -has been used to prohibit reuse of previous passwords, the command interpreter -verifies that the password is not too similar too any of the user's -previous 20 passwords. It generates the following error message at the -shell: -
         Password was not changed because it seems like a reused password
      -   
      -
      -

      To prevent a user from subverting this restriction by changing the password -twenty times in quick succession (manually or by running a script), use the --minhours argument on the kaserver initialization -command. The following error message appears if a user attempts to -change a password before the minimum time has passed: -

         Password was not changed because you changed it too 
      -   recently; see your systems administrator
      -   
      -
      -
    -

    Options -

    -

    -name -
    Names the entry in which to record the new key. -

    -new_password -
    Specifies the character string the user types when authenticating to -AFS. Omit this argument and type the string at the resulting prompts so -that the password does not echo visibly. Note that some non-AFS -programs cannot handle passwords longer than eight characters. -

    -kvno -
    Specifies the key version number associated with the new key. -Provide an integer in the range from 0 through -255. If omitted, the default is 0 (zero), which is probably -not desirable for server keys. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    In the following example, an administrator using the admin -account changes the password for pat (presumably because -pat forgot the former password or got locked out of his account in -some other way). -

       % kas setpassword pat
    -   Password for admin:
    -   new_password:
    -   Verifying, please re-enter new_password:
    -   
    -
    -

    Privilege Required -

    Individual users can change their own passwords. To change another -user's password or the password (server encryption key) for server -entries such as afs, the issuer must have the ADMIN flag -set in his or her Authentication Database entry. -

    Related Information -

    bos addkey -

    kas -

    kaserver -

    kpwvalid -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf195.htm b/doc/html/AdminReference/auarf195.htm deleted file mode 100644 index b82afe207..000000000 --- a/doc/html/AdminReference/auarf195.htm +++ /dev/null @@ -1,123 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas statistics

    - - - - - - -

    Purpose -

    Displays statistics from an Authentication Server process -

    Synopsis -

    kas statistics [-admin_username <admin principal to use for authentication>]
    -               [-password_for_admin <admin password>]  [-cell <cell name>] 
    -               [-servers <explicit list of authentication servers>+]
    -               [-noauth]  [-help]
    -   
    -kas sta [-a <admin principal to use for authentication>]  
    -        [-p <admin password>]  [-c <cell name>]  
    -        [-s <explicit list of authentication servers>+]  [-n]  [-h]  
    -
    -

    Description -

    The kas statistics command displays statistics from the -Authentication Server running on one of the cell's database server -machines. Use the -servers argument to name a specific -machine, or the command interpreter chooses one at random from all the -database server machines with which it has established connections. -

    Cautions -

    The -servers argument is not available in interactive mode, -making it impossible to specify a certain machine. -

    Options -

    -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The information in the output includes: -

      -

    • The number of allocation and freeing operations the Authentication Server -has performed, and how many password change requests it has processed. -

    • An indication of its hash table use. -

    • The server machine's IP address in hexadecimal and the date when the -current instance of the Authentication Server started. -

    • The number of requests and aborted requests for various services: -authentication, ticket granting, password setting, entry listing, and so -on. -

    • The amount of CPU time that the Authentication Server has used to process -requests since it started. The amount is not accurate on all system -types, however. -

    • The number of entries in the Authentication Database that are marked with -the ADMIN flag. -
    -

    Examples -

    In the following example, an administrator using the admin -account gathers statistics from the Authentication Server running on the -machine fs1.abc.com. -

       % kas statistics -servers fs1.abc.com
    -   56 allocs, 46 frees, 0 password changes
    -   Hash table utilization = 0.100000%
    -   From host bfff21a7 started at Tue Mar 23 12:42:02 1999:
    -     of 88 requests for Authenticate, 18 were aborted.
    -     of 14 requests for GetTicket, 0 were aborted.
    -     of 4 requests for CreateUser, 1 were aborted.
    -     of 12 requests for SetFields, 4 were aborted.
    -     of 3 requests for DeleteUser, 0 were aborted.
    -     of 23 requests for GetEntry, 4 were aborted.
    -     of 18 requests for ListEntry, 0 were aborted.
    -     of 2 requests for GetStats, 1 were aborted.
    -     of 2 requests for GetRandomKey, 0 were aborted.
    -   Used 6.015 seconds of CPU time.
    -   3 admin accounts
    -   
    -
    -

    Privilege Required -

    The issuer must have the ADMIN flag set on his or her -Authentication Database entry. -

    Related Information -

    kas -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf196.htm b/doc/html/AdminReference/auarf196.htm deleted file mode 100644 index 80937fb11..000000000 --- a/doc/html/AdminReference/auarf196.htm +++ /dev/null @@ -1,89 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas stringtokey

    - - - - - - -

    Purpose -

    Converts a character string into an octal key -

    Synopsis -

    kas stringtokey -string <password string>  [-cell <cell name>]  [-help]
    -      
    -kas str -s <password string>  [-c <cell name>]  [-h]
    -
    -

    Description -

    The kas stringtokey command converts the character string -specified with the -string argument into an octal string suitable -for use as an encryption key. -

    The kas command interpreter generates the octal key by using an -encryption algorithm on the combination of the specified string and the name -of the local cell (as recorded in the local /usr/vice/etc/ThisCell -file). Use the -cell argument to convert a string into a key -appropriate for a cell other than the local one. -

    Cautions -

    This command writes the key to the standard output stream, on which it can -possibly be intercepted by third parties. It is not very secure to use -the key in an actual Authentication Database entry. -

    Options -

    -

    -string -
    Specifies the character string to convert into an octal key. -

    -cell -
    Specifies the complete Internet domain name of the cell to combine with -the password string while generating the key. If this argument is -omitted, the kas command interpreter determines the name of the -local cell by consulting: -
      -

    • First, the value of the environment variable AFSCELL. -

    • Second, the cellname in the /usr/vice/etc/ThisCell file on the -local machine. -
    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output is of the following form: -

       Converting password string in realm 'cell_name' yields key='key'.
    -   
    -
    -

    Examples -

    The following example shows the octal key equivalent of the string -new_pswd in the ABC Corporation cell. -

       % kas stringtokey new_pswd
    -   Converting new_pswd in realm 'ABC.COM' yields
    -       key='\346\307\364\320\263\233\342\354'.
    -   
    -
    -

    Privilege Required -

    None, and no password is required. -

    Related Information -

    ThisCell (client version) -

    kas -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf197.htm b/doc/html/AdminReference/auarf197.htm deleted file mode 100644 index 227c9bf8c..000000000 --- a/doc/html/AdminReference/auarf197.htm +++ /dev/null @@ -1,99 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kas unlock

    - - - -

    Purpose -

    Unlocks a locked user account -

    Synopsis -

    kas unlock -name <authentication ID>  
    -           [-admin_username <admin principal to use for authentication>] 
    -           [-password_for_admin <admin password>]  [-cell <cell name>] 
    -           [-servers <explicit list of authentication servers>+]
    -           [-noauth]  [-help]
    -         
    -kas u -na <authentication ID>  
    -      [-a <admin principal to use for authentication>] 
    -      [-p <admin password>]  [-c <cell name>] 
    -      [-s <explicit list of authentication servers>+]  [-no]  [-h]
    -
    -

    Description -

    The kas unlock command unlocks the Authentication Database entry -named by the -name argument. An entry becomes locked when -the user exceeds the limit on failed authentication attempts, generally by -providing the wrong password to either an AFS-modified login utility or the -klog command. Use the kas setfields command to -set the limit and the lockout time, and the kas examine command to -examine the settings. -

    To unlock all locked user accounts at once, shutdown the -kaserver process on every database server machine, and remove the -/usr/afs/local/kaauxdb file from each one. The -kaserver process recreates the file as it restarts. -

    Options -

    -

    -name -
    Names the Authentication Database entry to unlock. -

    -admin_username -
    Specifies the user identity under which to authenticate with the -Authentication Server for execution of the command. For more details, -see the introductory kas reference page. -

    -password_for_admin -
    Specifies the password of the command's issuer. If it is -omitted (as recommended), the kas command interpreter prompts for -it and does not echo it visibly. For more details, see the introductory -kas reference page. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory kas reference page. -

    -servers -
    Names each machine running an Authentication Server with which to -establish a connection. For more details, see the introductory -kas reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory kas reference -page. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    In the following example, an administrator using the admin -account unlocks the entry for jones: -

       % kas unlock -name jones -admin_username admin
    -   Administrator's (admin) Password:
    -   
    -
    -

    Privilege Required -

    The issuer must have the ADMIN flag set on his or her -Authentication Database entry. -

    Related Information -

    kas -

    kas examine -

    kas setfields -

    klog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf198.htm b/doc/html/AdminReference/auarf198.htm deleted file mode 100644 index 09d071a29..000000000 --- a/doc/html/AdminReference/auarf198.htm +++ /dev/null @@ -1,150 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kaserver

    - - - -

    Purpose -

    Initializes the Authentication Server -

    Description -

    kaserver [-noAuth]  [-fastKeys]  [-database <dbpath>] 
    -         [-localfiles <lclpath>]  [-minhours <n>] 
    -         [-servers <serverlist>]  [-enable_peer_stats]  
    -         [-enable_process_stats]  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The kaserver command initializes the Authentication Server, -which runs on every database server machine. In the conventional -configuration, its binary file is located in the /usr/afs/bin -directory on a file server machine. -

    The kaserver command is not normally issued at the command shell -prompt but rather placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a database server machine as the local superuser -root. -

    As it initializes, the Authentication Server process creates the two files -that constitute the Authentication Database, kaserver.DB0 -and kaserver.DBSYS1, in the /usr/afs/db directory -if they do not already exist. Use the commands in the kas -suite to administer the database. -

    The Authentication Server is responsible for several aspects of AFS -security, including: -

      -

    • Maintenance of all AFS server encryption keys and user passwords in the -Authentication Database. -

    • Creation of the tickets and tokens that users and servers use to establish -secure connections. Its Ticket Granting Service (TGS) component -performs this function. -
    -

    The Authentication Server records a trace of its activity in the -/usr/afs/logs/AuthLog file. Use the bos getlog -command to display the contents of the file. Use the kdb -command to read the protected files associated with the AuthLog -file, AuthLog.dir and AuthLog.pag. -

    Options -

    -

    -noAuth -
    Assigns the unprivileged identity anonymous to the -issuer. Thus, it establishes an unauthenticated connection between the -issuer and the Authentication Server. It is useful only when -authorization checking is disabled on the database server machine. In -normal circumstances, the Authentication Server allows only authorized -(privileged) users to issue commands that affect or contact the Authentication -Database and will refuse to perform such an action even if the --noAuth flag is used. -

    -fastKeys -
    Is a test flag for use by the AFS Development staff; it serves no -functional purpose. -

    -database -
    Specifies the pathname of an alternate directory in which the -Authentication Database files reside. Provide the complete pathname, -ending in the base filename to which the .DB0 and -.DBSYS1 extensions are appended. For example, the -appropriate value for the default database files is -/usr/afs/db/kaserver. -

    Provide the -localfiles argument along with this one; -otherwise, the -localfiles argument is also set to the value of -this argument, which is probably inappropriate. -

    -localfiles -
    Specifies the pathname of an alternate directory in which the auxiliary -Authentication Database file resides. Provide the complete pathname, -ending in the base filename to which the auxdb suffix is -appended. For example, the appropriate value for the default auxiliary -database file is /usr/afs/local/kaserver. -

    -minhours -
    Specifies the minimum number of hours that must pass between password -changes made by any regular user. System administrators (with the -ADMIN flag in their Authentication Database entry) can change -passwords as often as desired. Setting a minimum time between password -changes is not recommended. -

    -servers -
    Names each database server machine running an Authentication Server with -which the local Authentication Server is to synchronize its copy of the -Authentication Database , rather than with the machines listed in the local -/usr/afs/etc/CellServDB file. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following bos create command creates a kaserver -process on fs3.abc.com (the command appears on two -lines here only for legibility): -

       % bos create -server fs3.abc.com -instance kaserver \
    -                -type simple -cmd /usr/afs/bin/kaserver
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    AuthLog -

    BosConfig -

    CellServDB (server version) -

    kaserver.DB0 and kaserver.DBSYS1 -

    kaserverauxdb -

    bos -

    bos create -

    bos getlog -

    kas -

    kdb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf199.htm b/doc/html/AdminReference/auarf199.htm deleted file mode 100644 index cda0c61c5..000000000 --- a/doc/html/AdminReference/auarf199.htm +++ /dev/null @@ -1,116 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kdb

    - - - -

    Purpose -

    Displays log or privileged actions performed by the Authentication Server -

    Synopsis -

    kdb [-dbmfile <dbmfile to use (default /usr/afs/logs/AuthLog)>]  
    -    [-key <extract entries that match specified key>]  [-help]
    -  
    -
    -

    Description -

    The kdb command displays the contents of the -AuthLog.dir and AuthLog.pag files -associated with the AuthLog file that resides on the local disk, by -default in the /usr/afs/logs directory. The files must exist -in that directory, which normally implies that the Authentication Server is -running on the machine. The files contain information on privileged -actions performed by the Authentication Server. -

    Cautions -

    It is possible that on some operating systems that AFS otherwise supports, -the Authentication Server cannot create the -/usr/afs/logs/AuthLog.dir and -/usr/afs/logs/AuthLog.pag files, making this command -inoperative. See the IBM AFS Release Notes for -details. -

    Options -

    -

    -dbmfile -
    Specifies the pathname of the file to display. Provide either a -complete pathname, a pathname relative to the /usr/afs/logs -directory, or a filename only, in which case the file must reside in the -/usr/afs/logs directory. Omit this argument to display -information from the AuthLog.dir and -AuthLog.pag files in the /usr/afs/logs -directory. -

    -key -
    Specifies each entry to be displayed from the indicated file. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of output indicates the location of the files from which the -subsequent information is derived: -

       Printing all entries found in file_location
    -
    -

    Each entry then includes the following two fields, separated by a -colon: -

    -

    user/server -
    Identifies the user requesting the corresponding service and the server -that performed that service. In cases where no user is directly -involved, only the server appears; in cases where no server is directly -involved, only the user appears. -

    service -
    Identifies one of the following actions or services performed by the user -or server process. -
      -

    • auth: Obtained a ticket-granting ticket -

    • chp: Changed a user password -

    • cruser: Created a user entry in the Authentication -Database -

    • delu: Deleted a user entry from the Authentication -Database -

    • gtck: Obtained a ticket other than a ticket-granting -ticket -

    • setf: Set fields in an Authentication Database entry -

    • unlok: Unlocked an Authentication Database entry -
    -
    -

    The final line of output sums the number of entries. -

    Examples -

    The following example shows the output of the kdb command in the -ABC Corporation cell (abc.com): -

       % kdb
    -   Printing all entries found in /usr/afs/logs/AuthLog
    -   admin,krbtgt.ABC.COM:auth
    -   admin,afs:gtck
    -   admin:cruser
    -   admin:delu
    -   4 entries were found
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    AuthLog.dir, AuthLog.pag -

    bos getlog -

    kaserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf200.htm b/doc/html/AdminReference/auarf200.htm deleted file mode 100644 index 55d0a0773..000000000 --- a/doc/html/AdminReference/auarf200.htm +++ /dev/null @@ -1,307 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    klog

    - - - - - - - -

    Purpose -

    Authenticates with the Authentication Server -

    Synopsis -

    klog  [-x]  [-principal <user name>]  [-password <user's password>]  
    -      [-cell <cell name>]  [-servers <explicit list of servers>+]  
    -      [-pipe]  [-silent]  [-lifetime <ticket lifetime in hh[:mm[:ss]]>]  
    -      [-setpag]  [-tmp]  [-help]
    -    
    -klog  [-x]  [-pr <user name>]  [-pa <user's password>]  [-c <cell name>]  
    -      [-s <explicit list of servers>+]  [-pi]  [-si]  
    -      [-l <ticket lifetime in hh[:mm[:ss]]>]  [-se]  [-t]  [-h]
    -
    -

    Description -

    The klog command obtains an AFS token from the Authentication -Server. The Cache Manager on the local machine stores the token in a -credential structure in kernel memory and uses it when obtaining authenticated -access to the AFS filespace. This command does not affect the -issuer's identity (UNIX UID) in the local file system. -

    By default, the command interpreter obtains a token for the AFS user name -that matches the issuer's identity in the local file system. To -specify an alternate user, include the -principal argument. -The user named by the -principal argument does not have to appear -in the local password file (the /etc/passwd file or -equivalent). -

    By default, the command interpreter obtains a token for the local cell, as -defined by the AFSCELL environment variable set in the command shell or by the -/usr/vice/etc/ThisCell file on the local machine. To specify -an alternate cell, include the -cell argument. The command -interpreter contacts an Authentication Server chosen at random from the -cell's entry in the local /usr/afs/etc/CellServDB file, unless -the -servers argument is used to name one or more database server -machines. -

    A user can have tokens in multiple cells simultaneously, but only one token -per cell per connection to the client machine. If the user's -credential structure already contains a token for the requested cell, the -token resulting from this command replaces it. -

    Sites that employ standard Kerberos authentication instead of the AFS -Authentication Server must use the Kerberos version of this command, -klog.krb, on all client machines. It automatically -places the issuer's Kerberos tickets in the file named by the KRBTKFILE -environment variable, which the pagsh.krb command defines -automatically as /tmp/tktpX where X is the -number of the user's PAG. -

    The lifetime of the token resulting from this command is the smallest of -the following. -

      -

    • The lifetime specified by the issuer with the -lifetime -argument. If the issuer does not include this argument, the value -defaults to 720 hours (30 days). -

    • The maximum ticket lifetime recorded for the afs entry in the -Authentication Database. The default is 100 hours. -

    • The maximum ticket lifetime recorded in the specified user's -Authentication Database entry. The default is 25 hours for user entries -created by an Authentication Server running AFS 3.1 or later. -

    • The maximum ticket lifetime recorded in the -krbtgt.CELLNAME entry in the Authentication -Database; this entry corresponds to the ticket-granting ticket used -internally in generating the token. The default is 720 hours (30 -days). -
    -

    The output from the kas examine command displays an -Authentication Database entry's maximum ticket lifetime as Max -ticket lifetime. Administrators can display any entry, and users -can display their own entries. -

    If none of the defaults have been changed, the token lifetime is 25 hours -for user accounts created by an Authentication Server running AFS 3.1 -or higher. The maximum lifetime for any token is 720 hours (30 days), -and the minimum is 5 minutes. -

    Between the minimum and maximum values, the Authentication Server uses a -defined set of values, according to the following rules. Requested -lifetimes between 5 minutes and 10 hours 40 minutes are granted at 5 minute -intervals, rounding up. For example, if the issuer requests a lifetime -of 12 minutes, the token's actual lifetime is 15 minutes. -

    For token lifetimes greater than 10 hours 40 minutes, consult the following -table, which presents all the possible times in units of -hours:minutes:seconds. -The number in parentheses is an approximation of the corresponding time in -days and hours (as indicated by the d and h -letters). For example, 282:22:17 means 282 -hours, 22 minutes, and 17 seconds, which translates to approximately 11 days -and 18 hours (11d 18h). The Authentication Server rounds up -a requested lifetime to the next highest possible lifetime. -

       11:24:15 (0d 11h)    46:26:01 (1d 22h)  189:03:38 (7d 21h)            
    -   12:11:34 (0d 12h)    49:38:40 (2d 01h)  202:08:00 (8d 10h)            
    -   13:02:09 (0d 13h)    53:04:37 (2d 05h)  216:06:35 (9d 00h)          
    -   13:56:14 (0d 13h)    56:44:49 (2d 08h)  231:03:09 (9d 15h)         
    -   14:54:03 (0d 14h)    60:40:15 (2d 12h)  247:01:43 (10d 07h)         
    -   15:55:52 (0d 15h)    64:51:57 (2d 16h)  264:06:34 (11d 00h)           
    -   17:01:58 (0d 17h)    69:21:04 (2d 21h)  282:22:17 (11d 18h)          
    -   18:12:38 (0d 18h)    74:08:46 (3d 02h)  301:53:45 (12d 13h)           
    -   19:28:11 (0d 19h)    79:16:23 (3d 07h)  322:46:13 (13d 10h)          
    -   20:48:57 (0d 20h)    84:45:16 (3d 12h)  345:05:18 (14d 09h)           
    -   22:15:19 (0d 22h)    90:36:53 (3d 18h)  368:56:58 (15d 08h)          
    -   23:47:38 (0d 23h)    96:52:49 (4d 00h)  394:27:37 (16d 10h)         
    -   25:26:21 (1d 01h)   103:34:45 (4d 07h)  421:44:07 (17d 13h)           
    -   27:11:54 (1d 03h)   110:44:28 (4d 14h)  450:53:46 (18d 18h)           
    -   29:04:44 (1d 05h)   118:23:54 (4d 22h)  482:04:24 (20d 02h)          
    -   31:05:22 (1d 07h)   126:35:05 (5d 06h)  515:24:22 (21d 11h)          
    -   33:14:21 (1d 09h)   135:20:15 (5d 15h)  551:02:38 (22d 23h) 
    -   35:32:15 (1d 11h)   144:41:44 (6d 00h)  589:08:45 (24d 13h) 
    -   37:59:41 (1d 13h)   154:42:01 (6d 10h)  629:52:56 (26d 05h) 
    -   40:37:19 (1d 16h)   165:23:50 (6d 21h)  673:26:07 (28d 01h)
    -   43:25:50 (1d 19h)   176:50:01 (7d 08h)
    -   
    -
    -

    Cautions -

    By default, this command does not create a new process authentication group -(PAG); see the description of the pagsh command to learn about -PAGs. If a cell does not use an AFS-modified login utility, users must -include -setpag option to this command, or issue the -pagsh command before this one, to have their tokens stored in a -credential structure that is identified by PAG rather than by local -UID. -

    When a credential structure is identified by local UID, the potential -security exposure is that the local superuser root can use the UNIX -su command to assume any other identity and automatically inherit -the tokens associated with that UID. Identifying the credential -structure by PAG eliminates this exposure. -

    If the -password argument is used, the specified password cannot -begin with a hyphen, because it is interpreted as another option name. -Use of the -password argument is not recommended in any -case. -

    By default, it is possible to issue this command on a properly configured -NFS client machine that is accessing AFS via the NFS/AFS Translator, assuming -that the NFS client machine is a supported system type. However, if the -translator machine's administrator has enabled UID checking by including -the -uidcheck on argument to the fs exportafs command, -the command fails with an error message similar to the following: -

       
    -   Warning: Remote pioctl to translator_machine  has failed (err=8). . . 
    -   Unable to authenticate to AFS because a pioctl failed.
    -
    -

    Enabling UID checking means that the credential structure in which tokens -are stored on the translator machine must be identified by a UID that matches -the local UID of the process that is placing the tokens in the credential -structure. After the klog command interpreter obtains the -token on the NFS client, it passes it to the remote executor daemon on the -translator machine, which makes the system call that stores the token in a -credential structure on the translator machine. The remote executor -generally runs as the local superuser root, so in most cases its -local UID (normally zero) does not match the local UID of the user who issued -the klog command on the NFS client machine. -

    Issuing the klog command on an NFS client machine creates a -security exposure: the command interpreter passes the token across the -network to the remote executor daemon in clear text mode. -

    Options -

    -

    -x -
    Appears only for backwards compatibility. Its former function is -now the default behavior of this command. -

    -principal -
    Specifies the user name to authenticate. If this argument is -omitted, the Authentication Server attempts to authenticate the user logged -into the local file system. -

    -password -
    Specifies the issuer's password (or that of the alternate user -identified by the -principal argument). Omit this argument -to have the command interpreter prompt for the password, in which case it does -not echo visibly in the command shell. -

    -cell -
    Specifies the cell for which to obtain a token. The command is -directed to that cell's Authentication Servers. During a single -login session on a given machine, a user can be authenticated in multiple -cells simultaneously, but can have only one token at a time for each of them -(that is, can only authenticate under one identity per cell per session on a -machine). It is acceptable to abbreviate the cell name to the shortest -form that distinguishes it from the other cells listed in the -/usr/vice/etc/CellServDB file on the client machine on which the -command is issued. -

    If this argument is omitted, the command is executed in the local cell, as -defined -

      -

    • First, by the value of the environment variable AFSCELL -

    • Second, in the /usr/vice/etc/ThisCell file on the client -machine on which the command is issued -
    -

    -servers -
    Establishes a connection with the Authentication Server running on each -specified database server machine. The command interpreter then chooses -one of these at random to execute the command. It is best to provide -fully-qualified hostnames, but abbreviated forms are possibly acceptable -depending on the state of the cell's name server at the time the command -is issued. This option is useful for testing specific servers if -problems are encountered. -

    If this argument is omitted, the command interpreter establishes a -connection with each machine listed for the indicated cell in the local copy -of the /usr/vice/etc/CellServDB file, and then chooses one of them -at random for command execution. -

    -pipe -
    Suppresses all output to the standard output stream, including prompts and -error messages. The klog command interpreter expects to -receive the password from the standard input stream. Do not use this -argument; it is designed for use by application programs rather than -human users. -

    -silent -
    Suppresses some of the trace messages that the klog command -produces on the standard output stream by default. It still reports on -major problems encountered. -

    -lifetime -
    Requests a specific lifetime for the token. Provide a number of -hours and optionally minutes and seconds in the format -hh[:mm[:ss]]. -The value is used in calculating the token lifetime as described in the -Description section. -

    -setpag -
    Creates a process authentication group (PAG) prior to requesting -authentication. The token is associated with the newly created -PAG. -

    -tmp -
    Creates a Kerberos-style ticket file in the /tmp directory of -the local machine. The file is called -tkt.AFS_UID where AFS_UID is the AFS UID -of the issuer. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Cautions -

    Output -

    The following message indicates that the limit on consecutive -authentication failures has been exceeded. An administrator can use the -kas unlock command to unlock the account, or the issuer can wait -until the lockout time for the account has passed. (The time is set -with the -locktime argument to the kas setfields command -and displayed in the output from the kas examine command). -

       
    -   Unable to authenticate to AFS because ID is locked - see your system admin
    -   
    -
    -

    If the -tmp flag is included, the following message confirms -that a Kerberos-style ticket file was created: -

       
    -   Wrote ticket file to /tmp
    -   
    -
    -

    Examples -

    Most often, this command is issued without arguments. The -appropriate password is for the person currently logged into the local file -system. The ticket's lifetime is calculated as described in the -Description section (if no defaults have been changed, it is 25 -hours for a user whose Authentication Database entry was created in AFS -3.1 or later). -

       
    -   % klog
    -   Password: 
    -   
    -
    -

    The following example authenticates the user as admin in the ABC -Corporation's test cell: -

       
    -   % klog -principal admin -cell test.abc.com
    -   Password: 
    -   
    -
    -

    In the following, the issuer requests a ticket lifetime of 104 hours 30 -minutes (4 days 8 hours 30 minutes). Presuming that this lifetime is -allowed by the maximum ticket lifetimes and other factors described in the -Description section, the token's lifetime is -110:44:28, which is the next largest possible value. -

          % klog -lifetime 104:30
    -   Password: 
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs exportafs -

    kas examine -

    kas setfields -

    kas unlock -

    kaserver -

    pagsh -

    tokens -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf201.htm b/doc/html/AdminReference/auarf201.htm deleted file mode 100644 index a9b66bb9e..000000000 --- a/doc/html/AdminReference/auarf201.htm +++ /dev/null @@ -1,178 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    knfs

    - - - - -

    Purpose -

    Establishes basis for authenticated access to AFS from a non-supported NFS -client using the NFS/AFS Translator -

    Synopsis -

    knfs -host <host name>  [-id <user ID (decimal)>]
    -     [-sysname <host's '@sys' value>]  [-unlog]  [-tokens]  [-help]
    -    
    -knfs -ho <host name>  [-i <user ID (decimal)>]  
    -     [-s <host's '@sys' value>]  [-u]  [-t]  [-he]
    -
    -

    Description -

    The knfs command creates an AFS credential structure on the -local machine, identifying it by a process authentication group (PAG) number -associated with the NFS client machine named by the -hostname -argument and by default with a local UID on the NFS client machine that -matches the issuer's local UID on the local machine. It places in -the credential structure the AFS tokens that the issuer has previously -obtained (by logging onto the local machine if an AFS-modified login utility -is installed, by issuing the klog command, or both). To -associate the credential structure with an NFS UID that does not match the -issuer's local UID, use the -id argument. -

    Issue this command only on the NFS(R)/AFS translator machine that is -serving the NFS client machine, after obtaining AFS tokens on the translator -machine for every cell to which authenticated access is required. The -Cache Manager on the translator machine uses the tokens to obtain -authenticated AFS access for the designated user working on the NFS client -machine. This command is not effective if issued on an NFS client -machine. -

    To enable the user on the NFS client machine to issue AFS commands, use the --sysname argument to specify the NFS client machine's system -type, which can differ from the translator machine's. The NFS -client machine must be a system type for which AFS is supported. -

    The -unlog flag discards the tokens in the credential structure, -but does not destroy the credential structure itself. The Cache Manager -on the translator machine retains the credential structure until the next -reboot, and uses it each time the issuer accesses AFS through the translator -machine. The credential structure only has tokens in it if the user -reissues the knfs command on the translator machine each time the -user logs into the NFS client machine. -

    To display the tokens associated with the designated user on the NFS client -machine, include the -tokens flag. -

    Users working on NFS client machines of system types for which AFS binaries -are available (and for which the cell has purchased a license) can use the -klog command rather than the knfs command. -

    Cautions -

    If the translator machine's administrator has enabled UID checking by -issuing the fs exportafs command with the -uidcheck on -argument, it is not possible to use the -id argument to assign the -tokens to an NFS UID that differs from the issuer's local UID. In -this case, there is no point in including the -id argument, because -the only acceptable value (the issuer's local UID) is the value used when -the -id argument is omitted. Requiring matching UIDs is -effective only when users have the same local UID on the translator machine as -on NFS client machines. In that case, it guarantees that users assign -their tokens only to their own NFS sessions. -

    This command does not make it possible for users working on non-supported -system types to issue AFS commands. This is possible only on NFS -clients of a system type for which AFS is available. -

    Options -

    -

    -host -
    Names the NFS client machine on which the issuer is to work. -Providing a fully-qualified hostname is best, but abbreviated forms are -possibly acceptable depending on the state of the cell's name server at -the time the command is issued. -

    -id -
    Specifies the local UID on the NFS client to which to assign the -tokens. The NFS client identifies file requests by the NFS UID, so -creating the association enables the Cache Manager on the translator machine -to use the appropriate tokens when filling the requests. If this -argument is omitted, the command interpreter uses an NFS UID that matches the -issuer's local UID on the translator machine (as returned by the -getuid function). -

    -sysname -
    Specifies the value that the local (translator) machine's remote -executor daemon substitutes for the @sys variable in pathnames when -executing AFS commands issued on the NFS client machine (which must be a -supported system type). If the NFS user's PATH environment -variable uses the @sys variable in the pathnames for directories -that house AFS binaries (as recommended), then setting this argument enables -NFS users to issue AFS commands by leading the remote executor daemon to -access the AFS binaries appropriate to the NFS client machine even if its -system type differs from the translator machine's. -

    -unlog -
    Discards the tokens stored in the credential structure identified by the -PAG associated with the -host argument and, optionally, the --id argument. -

    -tokens -
    Displays the AFS tokens assigned to the designated user on the indicated -NFS client machine. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The following error message indicates that UID checking is enabled on the -translator machine and that the value provided for the -id argument -differs from the issuer's local UID. -

       
    -   knfs: Translator in 'passwd sync' mode; remote uid must be the same as local uid
    -
    -

    Examples -

    The following example illustrates a typical use of this command. The -issuer smith is working on the machine -nfscli1.abc.com and has user ID 1020 on -that machine. The translator machine -tx4.abc.com uses an AFS-modified login utility, so -smith obtains tokens for the ABC Corporation cell automatically -upon login via the telnet program. She then issues the -klog command to obtain tokens as admin in the ABC -Corporation's test cell, test.abc.com, and the -knfs command to associate both tokens with the credential structure -identified by machine name nfs-cli1 and user ID -1020. She breaks the connection to tx4 and works -on nfscli1. -

       % telnet tx4.abc.com
    -   . . .
    -   login: smith
    -   Password:
    -   AFS(R) login
    -   
    -   % klog admin -cell test.abc.com
    -   Password:
    -   
    -   % knfs nfscli1.abc.com 1020
    -   
    -   % exit
    -   
    -
    -

    The following example shows user smith again connecting to the -machine tx4 via the telnet program and discarding the -tokens. -

       % telnet translator4.abc.com
    -   . . .
    -   login: smith
    -   Password:
    -   AFS(R) login
    -   
    -   % knfs nfscli1.abc.com 1020 -unlog
    - 
    -   % exit
    -
    -

    Privilege Required -

    None -

    Related Information -

    klog -

    pagsh -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf202.htm b/doc/html/AdminReference/auarf202.htm deleted file mode 100644 index d75c48d63..000000000 --- a/doc/html/AdminReference/auarf202.htm +++ /dev/null @@ -1,164 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kpasswd

    - - - - - - - -

    Purpose -

    Changes the issuer's password in the Authentication Database -

    Synopsis -

    kpasswd [-x]  [-principal <user name>]  [-password <user's password>]
    -        [-newpassword <user's new password>]  [-cell <cell name>]
    -        [-servers <explicit list of servers>+]  [-pipe]  [-help]
    -   
    -kpasswd [-x]  [-pr <user name>]  [-pa <user's password>]  
    -        [-n <user's new password>]  [-c <cell name>]  
    -        [-s <explicit list of servers>+]  [-pi]  [-h] 
    -
    -

    Description -

    The kpasswd command changes the password recorded in an -Authentication Database entry. By default, the command interpreter -changes the password for the AFS user name that matches the issuer's -local identity (UNIX UID). To specify an alternate user, include the --principal argument. The user named by the --principal argument does not have to appear in the local password -file (the /etc/passwd file or equivalent). -

    By default, the command interpreter sends the password change request to -the Authentication Server running on one of the database server machines -listed for the local cell in the /usr/afs/etc/CellServDB file on -the local disk; it chooses the machine at random. It consults the -/usr/vice/etc/ThisCell file on the local disk to learn the local -cell name. To specify an alternate cell, include the -cell -argument. -

    Unlike the UNIX passwd command, the kpasswd command -does not restrict passwords to eight characters or less; it accepts -passwords of virtually any length. All AFS commands that require -passwords (including the klog, kpasswd, and AFS-modified -login utilities, and the commands in the kas suite) accept -passwords longer than eight characters, but some other applications and -operating system utilities do not. Selecting an AFS password of eight -characters or less enables the user to maintain matching AFS and UNIX -passwords. -

    The command interpreter makes the following checks: -

      -

    • If the program kpwvalid exists in the same directory as the -kpasswd command, the command interpreter pass the new password to -it for verification. For details, see the kpwvalid reference -page. -

    • If the -reuse argument to the kas setfields command -has been used to prohibit reuse of previous passwords, the command interpreter -verifies that the password is not too similar too any of the user's -previous 20 passwords. It generates the following error message at the -shell: -
         Password was not changed because it seems like a reused password
      -   
      -
      -

      To prevent a user from subverting this restriction by changing the password -twenty times in quick succession (manually or by running a script), use the --minhours argument on the kaserver initialization -command. The following error message appears if a user attempts to -change a password before the minimum time has passed: -

         Password was not changed because you changed it too 
      -   recently; see your systems administrator
      -
      -
    -

    Options -

    -

    -x -
    Appears only for backwards compatibility. -

    -principal -
    Names the Authentication Database entry for which to change the -password. If this argument is omitted, the database entry with the same -name as the issuer's local identity (UNIX UID) is changed. -

    -password -
    Specifies the current password. Omit this argument to have the -command interpreter prompt for the password, which does not echo -visibly: -
       Old password: current_password
    -   
    -
    -

    -newpassword -
    Specifies the new password, which the kpasswd command -interpreter converts into an encryption key (string of octal numbers) before -sending it to the Authentication Server for storage in the user's -Authentication Database entry. -

    Omit this argument to have the command interpreter prompt for the password, -which does not echo visibly: -

       New password (RETURN to abort): new_password 
    -   Retype new password: new_password
    -   
    -
    -

    -cell -
    Specifies the cell in which to change the password, by directing the -command to that cell's Authentication Servers. The issuer can -abbreviate the cell name to the shortest form that distinguishes it from the -other cells listed in the local /usr/vice/etc/CellServDB -file. -

    By default, the command is executed in the local cell, as defined -

      -

    • First, by the value of the environment variable AFSCELL -

    • Second, in the /usr/vice/etc/ThisCell file on the client -machine on which the command is issued -
    -

    -servers -
    Establishes a connection with the Authentication Server running on each -specified machine, rather than with all of the database server machines listed -for the relevant cell in the local copy of the -/usr/vice/etc/CellServDB file. The kpasswd -command interpreter then sends the password-changing request to one machine -chosen at random from the set. -

    -pipe -
    Suppresses all output to the standard output stream or standard error -stream. The kpasswd command interpreter expects to receive -all necessary arguments, each on a separate line, from the standard input -stream. Do not use this argument, which is provided for use by -application programs rather than human users. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example shows user pat changing her password in -the ABC Corporation cell. -

       % kpasswd
    -   Changing password for 'pat' in cell 'abc.com'.
    -   Old password:
    -   New password (RETURN to abort):
    -   Verifying, please re-enter new_password:
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    kas setfields -

    kas setpassword -

    klog -

    kpwvalid -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf203.htm b/doc/html/AdminReference/auarf203.htm deleted file mode 100644 index 51ba7eac9..000000000 --- a/doc/html/AdminReference/auarf203.htm +++ /dev/null @@ -1,88 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    kpwvalid

    - - - -

    Purpose -

    Checks quality of new password -

    Description -

    The kpwvalid command checks the quality of a new password passed -to it from the kpasswd or kas setpassword -command. It is optional. If it exists, it must reside in the -same AFS directory as the binaries for the kpasswd and -kas command suites (create a symbolic link from the client -machine's local disk to this directory). The directory's ACL -must extend the a (administer) and w -(write) permissions to the system:administrators -group only. These requirements prevent unauthorized users from -substituting a spurious kpwvalid binary. -

    The AFS distribution includes an example kpwvalid program that -checks that the password is at least eight characters long; the code for -it appears in the following Examples section. -

    The script or program must accept a sequence of password strings, one per -line, on the standard input stream. The first is the current password -and is ignored. Each subsequent string is a candidate password to be -checked. The program must write the following to the standard output -stream for each one: -

      -

    • 0 (zero) and a newline character to indicate that the password -is acceptable -

    • A non-zero decimal number and a newline character to indicate that the -password is not acceptable -
    -

    Further, it must write any error messages only to the standard error -stream, not to the standard output stream. -

    Examples -

    The following example program, included in the AFS distribution, verifies -that the requested password includes eight or more characters. -

       #include <stdio.h>
    -   /* prints 0 if the password is long enough, otherwise non-zero */
    -   main()
    -   {
    -   char oldpassword[512];
    -   char password[512];
    -   
    -   if (fgets(oldpassword, 512, stdin))
    -      while (fgets(password, 512, stdin)) {
    -         if (strlen(password) > 8) { /* password includes a newline */
    -            fputs("0\n",stdout);
    -            fflush(stdout);
    -         }
    -         else {
    -            fputs("Passwords must contain at least 8 characters.\n",
    -                  stderr);
    -            fputs("1\n",stdout);
    -            fflush(stdout);
    -         }
    -   return 0;
    -   }
    -   
    -
    -

    Related Information -

    kas setpassword -

    kpasswd -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf204.htm b/doc/html/AdminReference/auarf204.htm deleted file mode 100644 index c6e14b217..000000000 --- a/doc/html/AdminReference/auarf204.htm +++ /dev/null @@ -1,155 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    package

    - - - - - - - -

    Purpose -

    Configures files and directories on the local disk -

    Synopsis -

    package [initcmd]  [-config <base name of configuration file>]
    -   [-fullconfig <full name of configuration file, or stdin for standard input>]
    -   [-overwrite]  [-noaction]  [-verbose]  [-silent]  [-rebootfiles]  
    -   [-debug]  [-help]
    -    
    -package [i]  [-c <base name of configuration file>]
    -        [-f <full name of configuration file, or stdin for standard input>]
    -        [-o]  [-n]  [-v]  [-s]  [-r]  [-d]  [-h]
    -
    -

    Description -

    The package command configures the machine's local disk to -comply with the instructions in the configuration file named by the --config or -fullconfig argument. -

    By default, the package command alters any existing local disk -element whose contents or configuration does not match the element defined in -the configuration file. For example, if a configuration file -D instruction defines a directory that has the same name as a -symbolic link on the local disk, the package command replaces the -symbolic link with the directory. The F and L -instructions include an optional update_code field that alters this -behavior. -

    Also by default, the package command takes no action on elements -on the local disk that are not mentioned in the configuration file. Use -the D instruction's R update code to remove files -from the disk directory that are not mentioned in the configuration -file. -

    Before running the package command, the administrator must -create the template file and other files on the local disk. For -instructions, see the IBM AFS Administration Guide. -

    It is not possible to configure a remote client machine's disk using -this command. -

    Cautions -

    The package command interpreter exits without executing any -instruction if there are any syntax errors or incorrect values in the -configuration file. -

    Options -

    -

    initcmd -
    Accommodates the command's use of the AFS command parser, and is -optional. -

    -config -
    Specifies the pathname of the configuration file to use, ending in the -file's base name, which omits the suffix that indicates the machine -type. The package command determines the machine's -system type name and automatically appends it to the base name. An -example of the proper value for this argument is staff rather than -staff.rs_aix42. Partial pathnames are interpreted -relative to the current working directory. -

    Provide this argument or the -fullconfig argument. -

    -fullconfig -
    Specifies the configuration file to use. Two types of values are -acceptable: -
      -

    • The full pathname of the configuration file to use, complete with an -extension indicating the machine type (examples: -staff.rs_aix42, admin.sun4x_56). -

    • The string stdin to indicate that the issuer is providing -configuration information via the standard input stream, either by piping in -the contents of a file, or by typing configuration lines at the shell. -In the latter case, type <Ctrl-d> to conclude the input. -
    -

    Provide this argument or the -config argument. -

    -overwrite -
    Overwrites elements on the local disk with the source version indicated in -the configuration file, even if the owner write (w) mode -bit is turned on the disk element. Files protected by the I -update code on an F line in the configuration file are not -overwritten. -

    -noaction -
    Checks the sequence of operations to be performed when the command -actually runs and reports any problems that the package command -interpreter expects to encounter. No elements on the local disk or in -AFS are changed. If the -verbose flag is also provided, the -trace includes all actions to be performed as well as anticipated -errors. -

    -silent -
    Suppresses some of the trace messages sent to the standard output stream -by default. The output still reports major problems. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -rebootfiles -
    Prevents overwriting of any file marked with the Q update code -on an F line in the configuration file. This effectively -prevents the machine from rebooting automatically again when the -package command is invoked in the machine's AFS initialization -file. -

    -debug -
    Enables debugging output, which is directed to the standard output stream -by default. By default, no debugging output is produced. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    This command is usually invoked in a client machine's AFS -initialization file (/etc/rc or equivalent), rather than issued at -the command shell prompt. -

    The following command invokes the version of the staff -configuration file appropriate for this machine's system type, and -produces verbose output. -

       # /etc/package -c staff -v
    -   
    -
    -

    The following example uses the configuration file whose basename is defined -in the /.package file on the local machine. This -method enables the administrator to use the same package command in -every machine's AFS initialization file but still customize configuration -by putting the appropriate basename in the /.package -file. -

       # /etc/package -c `cat /.package` -v
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    package Configuration File -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf205.htm b/doc/html/AdminReference/auarf205.htm deleted file mode 100644 index f9a4c4c03..000000000 --- a/doc/html/AdminReference/auarf205.htm +++ /dev/null @@ -1,72 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    package apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    package apropos [-topic <help string>]  [-help]
    -   
    -package a [-t <help string>]  [-h]
    -
    -

    Description -

    The package apropos command displays the first line of the -online help entry for any package command that has in its name or -short description the string specified by the -topic -argument. -

    To display the syntax for a command, use the package help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -package command where the string specified with the --topic argument is part of the command name or first line. -

    Examples -

    The following command lists all package commands that include -the word help in their names or short descriptions: -

       % package apropos help
    -   apropos: search by help text
    -   help: get help on commands
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    package -

    package help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf206.htm b/doc/html/AdminReference/auarf206.htm deleted file mode 100644 index 2b0fb27e1..000000000 --- a/doc/html/AdminReference/auarf206.htm +++ /dev/null @@ -1,88 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    package help

    - - - -

    Purpose -

    Displays the syntax of specified package commands or lists -functional descriptions of all package commands -

    Synopsis -

    package help [-topic <help string>+]  [-help]
    -   
    -package h [-t <help string>+]  [-h]
    -
    -

    Description -

    The package help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every package -command. -

    To list every package command whose name or short description -includes a specified keyword, use the package apropos -command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the package part of the command name, providing -only the operation code (for example, specify initcmd, not -package initcmd). If this argument is omitted, the output -briefly describes every package command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each package command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the package -initcmd command: -

       % package help initcmd
    -   package initcmd: initialize the program
    -   Usage: package [initcmd] [-config <base name of configuration file>]  
    -   [-fullconfig <full name of configuration file, or stdin for standard input>] 
    -   [-overwrite] [-noaction] [-verbose] [-silent] [-rebootfiles] 
    -   [-debug] [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    package -

    package apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf207.htm b/doc/html/AdminReference/auarf207.htm deleted file mode 100644 index 1de5b337a..000000000 --- a/doc/html/AdminReference/auarf207.htm +++ /dev/null @@ -1,58 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    package_test

    - - - -

    Purpose -

    Tests the validity of a package configuration file -

    Synopsis -

    package_test <config file>
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name in full. -

    Description -

    The package_test command tests the validity of a -package configuration file created when a prototype file is -compiled. The command interpreter prints error messages on the standard -output stream. -

    Options -

    -

    config file -
    Specifies the package configuration file to validate. -
    -

    Examples -

    The following example tests the validity of the package -configuration file staff.sun4x_56. -

       % package_test staff.sun4x_56
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    package Configuration File -

    package -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf208.htm b/doc/html/AdminReference/auarf208.htm deleted file mode 100644 index 5ee36e7f0..000000000 --- a/doc/html/AdminReference/auarf208.htm +++ /dev/null @@ -1,121 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pagsh

    - - - - -

    Purpose -

    Creates a new PAG -

    Synopsis -

    pagsh
    -
    -

    Description -

    The pagsh command creates a new command shell (owned by the -issuer of the command) and associates a new process authentication -group (PAG) with the shell and the user. A PAG is a number -guaranteed to identify the issuer of commands in the new shell uniquely to the -local Cache Manager. The PAG is used, instead of the issuer's UNIX -UID, to identify the issuer in the credential structure that the Cache Manager -creates to track each user. -

    Any tokens acquired subsequently (presumably for other cells) become -associated with the PAG, rather than with the user's UNIX UID. -This method for distinguishing users has two advantages. -

      -

    • It means that processes spawned by the user inherit the PAG and so share -the token; thus they gain access to AFS as the authenticated user. -In many environments, for example, printer and other daemons run under -identities (such as the local superuser root) that the AFS server -processes recognize only as anonymous. Unless PAGs are used, -such daemons cannot access files in directories whose access control lists -(ACLs) do not extend permissions to the system:anyuser -group. -

    • It closes a potential security loophole: UNIX allows anyone already -logged in as the local superuser root on a machine to assume any -other identity by issuing the UNIX su command. If the -credential structure is identified by a UNIX UID rather than a PAG, then the -local superuser root can assume a UNIX UID and use any tokens -associated with that UID. Use of a PAG as an identifier eliminates that -possibility. -
    -
    Note:The pagsh.krb version of this command is intended for use -by sites that employ standard Kerberos authentication for their -clients. The pagsh.krb command provides all the -functionality of the pagsh command. In addition, it defines -the environment variable KRBTKFILE (which specifies the storage location of -Kerberos tickets) to be the /tmp/tktpX file (where -X is the number of the user's PAG). The functionality of -this command supports the placement of Kerberos tickets by the -klog.krb command and Kerberized AFS-modified login utilities -in the file specified by the environment variable KRBTKFILE. -
    -

    Cautions -

    Each PAG created uses two of the memory slots that the kernel uses to -record the UNIX groups associated with a user. If none of these slots -are available, the pagsh command fails. This is not a -problem with most operating systems, which make at least 16 slots available -per user. -

    In cells that do not use an AFS-modified login utility, use this command to -obtain a PAG before issuing the klog command (or include the --setpag argument to the klog command). If a PAG -is not acquired, the Cache Manager stores the token in a credential structure -identified by local UID rather than PAG. This creates the potential -security exposure described in the Description section. -

    If users of NFS client machines for which AFS is supported are to issue -this command as part of authenticating with AFS, do not use the fs -exportafs command's -uidcheck on argument to enable UID -checking on NFS/AFS Translator machines. Enabling UID checking prevents -this command from succeeding. See the reference page for the -klog command. -

    If UID checking is not enabled on Translator machines, then by default it -is possible to issue this command on a properly configured NFS client machine -that is accessing AFS via the NFS/AFS Translator, assuming that the NFS client -machine is a supported system type. The pagsh binary -accessed by the NFS client must be owned by, and grant setuid privilege to, -the local superuser root. The complete set of mode bits must -be -rwsr-xr-x. This is not a requirement when the command is -issued on AFS client machines. -

    However, if the translator machine's administrator has enabled UID -checking by including the -uidcheck on argument to the fs -exportafs command, the command fails with an error message similar to -the following: -

       
    -   Warning: Remote setpag to translator_machine  has failed (err=8). . . 
    -   setpag: Exec format error
    -
    -

    Examples -

    In the following example, the issuer invokes the C shell instead of the -default Bourne shell: -

       # pagsh -c /bin/csh
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs exportafs -

    klog -

    tokens -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf209.htm b/doc/html/AdminReference/auarf209.htm deleted file mode 100644 index 09453b2f4..000000000 --- a/doc/html/AdminReference/auarf209.htm +++ /dev/null @@ -1,89 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    prdb_check

    - - - -

    Purpose -

    Checks the integrity of the Protection Database -

    Synopsis -

    prdb_check -database <ptdb_file>  [-uheader]  [-pheader]  [-entries]  
    -           [-verbose]  [-help]
    -   
    -prdb_check -d <ptdb_file>  [-u]  [-p]  [-e]  [-v]  [-h]
    -
    -

    Description -

    The prdb_check command checks the integrity of the Protection -Database, reporting any errors or corruption it finds. If there are -problems, do not issue any pts commands until the database is -repaired. -

    Cautions -

    The results can be unpredictable if the Protection Server makes changes to -the Protection Database while this command is running. Use the bos -shutdown command to shutdown the local ptserver process -before running this command, or before creating a second copy of the -prdb.DB0 file (with a different name) on which to run the -command. -

    Options -

    -

    -database -
    Names the Protection Database (copy of the prdb.DB0 -file) to check. If the current working directory is not the location of -the file, provide a pathname, either full or relative to the current working -directory. -

    -uheader -
    Displays information which Ubik maintains in the database's -header. -

    -pheader -
    Displays information which the Protection Server maintains in the -database's header. -

    -entries -
    Outputs every entry in the database. Some of the information is -similar to that returned by the pts examine command. -

    -verbose -
    Reports additional information about the database, including the number of -entries in the database and a trace of the internal database structures the -command is verifying. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If there are errors in the database, the output always reports them on the -standard error stream. If any options other than -database -or -help are provided, the output written to the standard output -stream includes additional information as described for each option in the -preceding Options section of this reference page. The output -is intended for debugging purposes and is meaningful to someone familiar with -the internal structure of the Protection Database. -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    prdb.DB0 and prdb.DBSYS1 -

    bos shutdown -

    pts examine -

    ptserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf210.htm b/doc/html/AdminReference/auarf210.htm deleted file mode 100644 index e3bd8374c..000000000 --- a/doc/html/AdminReference/auarf210.htm +++ /dev/null @@ -1,149 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts

    - - - - - - - - - - - -

    Purpose -

    Introduction to the pts command suite -

    Description -

    The commands in the pts command suite are the administrative -interface to the Protection Server, which runs on each database server machine -in a cell and maintains the Protection Database. The database stores -the information that AFS uses to augment and refine the standard UNIX scheme -for controlling access to files and directories. -

    Instead of relying only on the mode bits that define access rights for -individual files, AFS associates an access control list (ACL) with each -directory. The ACL lists users and groups and specifies which of seven -possible access permissions they have for the directory and the files it -contains. (It is still possible to set a directory or file's mode -bits, but AFS interprets them in its own way; see the chapter on -protection in the IBM AFS Administration Guide for details.) -

    AFS enables users to define groups in the Protection Database and place -them on ACLs to extend a set of rights to multiple users -simultaneously. Groups simplify administration by making it possible to -add someone to many ACLs by adding them to a group that already exists on -those ACLs. Machines can also be members of a group, so that users -logged into the machine automatically inherit the permissions granted to the -group. -

    There are several categories of commands in the pts command -suite: -

      -

    • Commands to create and remove Protection Database entries: pts -creategroup, pts createuser, and pts delete -

    • Commands to administer and display group membership: pts -adduser, -

      pts listowned, pts membership, and pts -removeuser -

    • Commands to administer and display properties of user and group entries -other than membership: pts chown, pts examine, -pts listentries, pts rename, and pts -setfields -

    • Commands to set and examine the counters used when assigning IDs to users -and groups: pts listmax and pts setmax -

    • Commands to obtain help: pts apropos and pts -help -
    -

    Options -

    The following arguments and flags are available on many commands in the -pts suite. The reference page for each command also lists -them, but they are described here in greater detail. -

    - -

    -cell <cell name> -
    Names the cell in which to run the command. It is acceptable to -abbreviate the cell name to the shortest form that distinguishes it from the -other entries in the /usr/vice/etc/CellServDB file on the local -machine. If the -cell argument is omitted, the command -interpreter determines the name of the local cell by reading the following in -order: -
      -

    1. The value of the AFSCELL environment variable -

    2. The local /usr/vice/etc/ThisCell file -
    -

    -force -
    - -Enables the command to continue executing as far as possible when errors or -other problems occur, rather than halting execution immediately. -Without it, the command halts as soon as the first error is -encountered. In either case, the pts command interpreter -reports errors at the command shell. This flag is especially useful if -the issuer provides many values for a command line argument; if one of -them is invalid, the command interpreter continues on to process the remaining -arguments. - -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -

    -noauth -
    - -Establishes an unauthenticated connection to the Protection Server, in which -the server treats the issuer as the unprivileged user -anonymous. It is useful only when authorization checking is -disabled on the server machine (during the installation of a file server -machine or when the bos setauth command has been used during other -unusual circumstances). In normal circumstances, the Protection Server -allows only privileged users to issue commands that change the Protection -Database, and refuses to perform such an action even if the -noauth -flag is provided. -
    -

    Privilege Required -

    Members of the system:administrators group can issue all -pts commands on any entry in the Protection Database. -

    Users who do not belong to the system:administrators group -can list information about their own entry and any group entries they -own. The privacy flags set with the pts setfields command -control access to entries owned by other users. -

    Related Information -

    pts adduser -

    pts apropos -

    pts chown -

    pts creategroup -

    pts createuser -

    pts delete -

    pts examine -

    pts help -

    pts listentries -

    pts listmax -

    pts listowned -

    pts membership -

    pts removeuser -

    pts rename -

    pts setfields -

    pts setmax -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf211.htm b/doc/html/AdminReference/auarf211.htm deleted file mode 100644 index 129f88d14..000000000 --- a/doc/html/AdminReference/auarf211.htm +++ /dev/null @@ -1,121 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts adduser

    - - - - - - - - - -

    Purpose -

    Adds a user or machine to a Protection Database group -

    Synopsis -

    pts adduser -user <user name>+  -group <group name>+ 
    -            [-cell <cell name>]  [-noauth]  [-force]  [-help]
    -   
    -pts ad -u <user name>+  -g <group name>+  [-c <cell name>]  [-n]  [-f]  [-h]
    -
    -

    Description -

    The pts adduser command adds each user or machine entry named by -the -user argument as a member of each group named by the --group argument. -

    To remove members of a group, use the pts removeuser -command. To list the groups to which a user or machine belongs, or the -members of a specified group, use the pts membership -command. -

    Cautions -

    After being added as a group member, a currently authenticated user must -reauthenticate (for example, by issuing the klog command) to obtain -permissions granted to the group on an access control list (ACL). -

    Options -

    -

    -user -
    Specifies the name of each user or machine entry to add to each group -named by the -group argument. The name of a machine entry -resembles an IP address and can use the wildcard notation described on the -pts createuser reference page. The user or machine entry -must already exist in the Protection Database. -

    -group -
    Specifies the complete name (including the owner prefix if applicable) of -each group to which to add members. The group entry must already exist -in the Protection Database. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example adds user smith to the group -system:administrators. -

       % pts adduser -user smith -group system:administrators
    -   
    -
    -

    The following example adds users jones, terry, and -pat to the smith:colleagues group. -

       % pts adduser -user jones terry pat -group smith:colleagues
    -   
    -
    -

    The following example adds the machine entries in the ABC Corporation -subnet to the group bin-prot. Because of the IP address -range of the ABC Corporation subnet, the system administrator was able to -group the machines into three machine entries (using the wildcard notation -discussed on the pts createuser reference page). -

       % pts adduser -user 138.255.0.0 192.12.105.0 192.12.106.0 -group bin-prot
    -   
    -
    -

    Privilege Required -

    The required privilege depends on the setting of the fourth privacy flag in -the Protection Database entry for each group named by the -group -argument (use the pts examine command to display the flags): -

      -

    • If it is the hyphen, only the group's owner and members of the -system:administrators group can add members. -

    • If it is lowercase a, current members of the group can add new -members. -

    • If it is uppercase A, anyone who can access the cell's -database server machines can add new members. -
    -

    Related Information -

    pts -

    pts createuser -

    pts examine -

    pts membership -

    pts removeuser -

    pts setfields -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf212.htm b/doc/html/AdminReference/auarf212.htm deleted file mode 100644 index 194bc49df..000000000 --- a/doc/html/AdminReference/auarf212.htm +++ /dev/null @@ -1,71 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    pts apropos -topic <help string>  [-help] 
    -   
    -pts ap -t <help string>  [-h]
    -
    -

    Description -

    The pts apropos command displays the first line of the online -help entry for any pts command that has in its name or short -description the string specified by the -topic argument. -

    To display the syntax for a command, use the pts help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -pts command in which the string specified by the -topic -argument is part of the command name or first line. -

    Examples -

    The following command lists all pts commands that include the -word create in their names or short descriptions: -

       % pts apropos create
    -   creategroup: create a new group
    -   createuser: create a new user
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    pts -

    pts help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf213.htm b/doc/html/AdminReference/auarf213.htm deleted file mode 100644 index da51b6929..000000000 --- a/doc/html/AdminReference/auarf213.htm +++ /dev/null @@ -1,103 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts chown

    - - - - - -

    Purpose -

    Changes the owner of a Protection Database entry -

    Synopsis -

    pts chown -name <group name>  -owner <new owner> 
    -          [-cell <cell name>]  [-noauth]  [-force]  [-help]
    -   
    -pts cho -na <group name>  -o <new owner>  [-c <cell name>]  [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts chown command designates the user or group named by the --owner argument as the owner of the group named by the --name argument, and records the new owner in the owner field of the -group's Protection Database entry. -

    In the case of regular groups, this command automatically changes the group -name's owner prefix (the part of the group name before the colon) to -match the new owner. If the new owner is itself a group, then only its -owner prefix, not its complete name, becomes the owner prefix in the new -name. The change to the owner prefix does not propagate to any groups -owned by the group, however. To make the owner prefix of such -group-owned groups reflect the new owning group, use the pts rename -command. -

    It is not possible to change a user or machine entry's owner from the -default set at creation time, the system:administrators -group. -

    Cautions -

    While designating a machine as a group's owner does not cause an -error, it is not recommended. The Protection Server does not extend the -usual privileges of group ownership to users logged onto the machine. -

    Options -

    -

    -name -
    Specifies the current name of the group to which to assign a new -owner. -

    -owner -
    Names the user or group to become the group's owner. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example changes the owner of the group -terry:friends from the user terry to the user -pat. A side effect is that the group name changes to -pat:friends. -

       % pts chown -name terry:friends -owner pat
    -   
    -
    -

    The following example changes the owner of the group -terry:friends from the user terry to the group -pat:buddies. A side effect is that the group name -changes to pat:friends. -

       % pts chown -name terry:friends -owner pat:buddies
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators group -or currently own the group. -

    Related Information -

    pts -

    pts rename -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf214.htm b/doc/html/AdminReference/auarf214.htm deleted file mode 100644 index c2f5e9052..000000000 --- a/doc/html/AdminReference/auarf214.htm +++ /dev/null @@ -1,204 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts creategroup

    - - - - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Creates an (empty) Protection Database group entry -

    Synopsis -

    pts creategroup -name <group name>+  [-owner <owner of the group>] 
    -                [-id <id (negated) for the group>+]  [-cell <cell name>]  
    -                [-noauth]  [-force]  [-help]
    -   
    -pts createg -na <group name>+  [-o <owner of the group>] 
    -            [-i <id (negated) for the group>+]  [-c <cell name>]  
    -            [-no]  [-f]  [-h]
    -      
    -pts cg -na <group name>+  [-o <owner of the group>]  
    -       [-i <id (negated) for the group>+]  
    -       [-c <cell name>]  [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts creategroup command creates an entry in the Protection -Database for each group specified by the -name argument. The -entry records the issuer of the command as the group's creator, and as -the group's owner unless the -owner argument names an -alternate user or group as the owner. -

    There are two types of groups: -

      -

    • regular, the names of which have two parts separated by a -colon. The part before the colon names the group's owner. -Any user can create such groups. -

    • prefix-less, which do not have an owner prefix. Only -members of the system:administrators group can create -prefix-less groups. -
    -

    Creating a group lowers the issuer's group-creation quota by -one. This is true even if the -owner argument is used to -assign ownership to an alternate user or group. To display a -user's group-creation quota, use the pts examine command; -to set it, use the pts setfields command. -

    AFS group ID (AFS GID) numbers are negative integers and by default the -Protection Server assigns a GID that is one less (more negative) than the -current value of the max group id counter in the Protection -Database, decrementing the counter by one for each group. Members of -the system:administrators group can use the -id -argument to assign specific AFS GID numbers. If any of the specified -GIDs is lower (more negative) than the current value of the max group -id counter, the counter is reset to that value. It is acceptable -to specify a GID greater (less negative) than the current value of the -counter, but the creation operation fails if an existing group already has -it. To display or set the value of the max group id counter, -use the pts listmax or pts setmax command, -respectively. -

    Output -

    The command generates the following string to confirm creation of each -group: -

       group name has id AFS GID
    -   
    -
    -

    Cautions -

    Although using the -owner argument to designate a machine entry -as a group's owner does not generate an error, it is not -recommended. The Protection Server does not extend the usual privileges -of group ownership to users logged onto the machine. -

    Options -

    -

    -name -
    Specifies the name of each group to create. Provide a string of up -to 63 characters, which can include lowercase (but not uppercase) letters, -numbers, and punctuation marks. A regular name includes a single colon -(:) to separate the two parts of the name; the colon -cannot appear in a prefix-less group name. -

    A regular group's name must have the following format: -

       owner_name:group_name
    -   
    -
    -

    and the owner_name field must reflect the actual owner of the -group, as follows: -

      -

    • If the optional -owner argument is not included, the field must -match the AFS username under which the issuer is currently -authenticated. -

    • If the -owner argument names an alternate AFS user, the field -must match that AFS username. -

    • If the -owner argument names another regular group, the field -must match the owning group's owner field (the part of its name before -the colon). If the -owner argument names a prefix-less -group, the field must match the owning group's complete name. -
    -

    -owner -
    Specifies a user or group as the owner for each group, rather than the -issuer of the command. Provide either an AFS username or the name of a -regular or prefix-less group. An owning group must already have at -least one member. This requirement prevents assignment of -self-ownership to a group during its creation; use the pts -chown command after issuing this command, if desired. -

    -id -
    Specifies a negative integer AFS GID number for each group, rather than -allowing the Protection Server to assign it. Precede the integer with a -hyphen (-) to indicate that it is negative. -

    If this argument is used and the -name argument names multiple -new groups, it is best to provide an equivalent number of AFS GIDs. The -first GID is assigned to the first group, the second to the second group, and -so on. If there are fewer GIDs than groups, the Protection Server -assigns GIDs to the unmatched groups based on the max group id -counter. If there are more GIDs than groups, the excess GIDs are -ignored. If any of the GIDs is lower (more negative) than the current -value of the max group id counter, the counter is reset to that -value. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    In the following example, the user pat creates groups called -pat:friends and pat:colleagues. -

       % pts creategroup -name pat:friends pat:colleagues
    -   
    -
    -

    The following example shows a member of the -system:administrators group creating the prefix-less group -staff and assigning its ownership to the -system:administrators group rather than to herself. -

       % pts creategroup -name staff -owner system:administrators
    -   
    -
    -

    In the following example, the user pat creates a group called -smith:team-members, which is allowed because the --owner argument specifies the required value -(smith). -

       % pts creategroup -name smith:team-members -owner smith
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators group -to create prefix-less groups or include the -id argument. -

    To create a regular group, the issuer must -

      -

    • Be authenticated. The command fails if the -noauth flag -is provided. -

    • Have a group-creation quota greater than zero. The pts -examine command displays this quota. -
    -

    Related Information -

    pts -

    pts examine -

    pts listmax -

    pts setfields -

    pts setmax -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf215.htm b/doc/html/AdminReference/auarf215.htm deleted file mode 100644 index 2f88c3651..000000000 --- a/doc/html/AdminReference/auarf215.htm +++ /dev/null @@ -1,183 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts createuser

    - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Creates a user or machine entry in the Protection Database -

    Synopsis -

    pts createuser -name <user name>+  [-id <user id>+]  [-cell <cell name>]  
    -               [-noauth]  [-force]  [-help]
    -   
    -pts createu -na <user name>+  [-i <user id>+]  [-c <cell name>]  
    -            [-no] [-f]  [-h]
    -   
    -pts cu -na <user name>+  [-i <user id>+]  [-c <cell name>]  [-no] [-f]  [-h]
    -
    -

    Description -

    The pts createuser command creates an entry in the Protection -Database for each user or machine specified by the -name -argument. A user entry name becomes the user's AFS username (the -one to provide when authenticating with the AFS Authentication Server). -A machine entry's name is the machine's IP address or a wildcard -notation that represents a range of consecutive IP addresses (a group of -machines on the same network). It is not possible to authenticate as a -machine, but a group to which a machine entry belongs can appear on a -directory's access control list (ACL), thereby granting the indicated -permissions to any user logged on to the machine. -

    AFS user IDs (AFS UIDs) are positive integers and by default the Protection -Server assigns an AFS UID that is one greater than the current value of the -max user id counter in the Protection Database, incrementing the -counter by one for each user. To assign a specific AFS UID, use the --id argument. If any of the specified AFS UIDs is greater -than the current value of the max user id counter, the counter is -reset to that value. It is acceptable to specify an AFS UID smaller -than the current value of the counter, but the creation operation fails if an -existing user or machine entry already has it. To display or set the -value of the max user id counter, use the pts listmax or -pts setmax command, respectively. -

    The issuer of the pts createuser command is recorded as the -entry's creator and the group system:administrators as -its owner. -

    Cautions -

    The Protection Server reserves AFS UID 0 (zero) and returns an error if the --id argument has that value. -

    Options -

    -

    -name -
    Specifies either a username for a user entry, or an IP address (complete -or wildcarded) for a machine entry: -
      -

    • A username can include up to 63 numbers and lowercase letters, but it is -best to make it shorter than eight characters, because many application -programs cannot handle longer names. Also, it is best not to include -shell metacharacters or other punctuation marks. In particular, the -colon (:) and at-sign (@) characters are not -acceptable. The period is generally used only in special administrative -names, to separate the username and an instance, as in the example -pat.admin. -

    • A machine identifier is its IP address in dotted decimal notation (for -example, 192.12.108.240), or a wildcard notation that -represents a set of IP addresses (a group of machines on the same -network). The following are acceptable wildcard formats. The -letters W, X, Y and Z each -represent an actual number from the range 1 through 255. -
        -

      • W.X.Y.Z represents a single machine, for -example 192.12.108.240. -

      • W.X.Y.0 matches all machines whose IP -addresses start with the first three numbers. For example, -192.12.108.0 matches both -192.12.108.119 and -192.12.108.120, but does not match -192.12.105.144. -

      • W.X.0.0 matches all machines whose IP -addresses start with the first two numbers. For example, the address -192.12.0.0 matches both -192.12.106.23 and -192.12.108.120, but does not match -192.5.30.95. -

      • W.0.0.0 matches all machines whose IP -addresses start with the first number in the specified address. For -example, the address 192.0.0.0 matches both -192.5.30.95 and -192.12.108.120, but does not match -138.255.63.52. -
      -

      Do not define a machine entry with the name -0.0.0.0 to match every machine. The -system:anyuser group is equivalent. -

    -

    -id -
    Specifies an AFS UID for each user or machine entry, rather than allowing -the Protection Server to assign it. Provide a positive integer. -

    If this argument is used and the -name argument names multiple -new entries, it is best to provide an equivalent number of AFS UIDs. -The first UID is assigned to the first entry, the second to the second entry, -and so on. If there are fewer UIDs than entries, the Protection Server -assigns UIDs to the unmatched entries based on the max user id -counter. If there are more UIDs than entries, the excess UIDs are -ignored. If any of the UIDs is greater than the current value of the -max user id counter, the counter is reset to that value. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The command generates the following string to confirm creation of each -user: -

       User name has id id
    -   
    -
    -

    Examples -

    The following example creates a Protection Database entry for the user -johnson. -

       % pts createuser -name johnson
    -   
    -
    -

    The following example creates three wildcarded machine entries in the ABC -Corporation cell. The three entries encompass all of the machines on -the company's networks without including machines on other -networks: -

       % pts createuser -name 138.255.0.0 192.12.105.0 192.12.106.0
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators -group. -

    Related Information -

    pts -

    pts listmax -

    pts setmax -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf216.htm b/doc/html/AdminReference/auarf216.htm deleted file mode 100644 index f57bcf35b..000000000 --- a/doc/html/AdminReference/auarf216.htm +++ /dev/null @@ -1,107 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts delete

    - - - - - - - - - - -

    Purpose -

    Deletes a Protection Database entry -

    Synopsis -

    pts delete -nameorid <user or group name or id>+  [-cell <cell name>]  
    -           [-noauth]  [-force]  [-help]
    -   
    -pts d -na <user or group name or id>+  [-c <cell name>]  [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts delete command removes each entry specified by the --nameorid argument from the Protection Database. Deleting -entries affects other parts of the system in various ways: -

      -

    • Deleted users and groups still appear on access control lists (ACLs), but -are listed by AFS UID or GID rather than by name, because there is no longer -an associated name to which to translate the ID. To remove these -obsolete entries from ACLs, use the fs cleanacl command. -

    • Deleting a user or machine's entry removes it from the membership -list of any group to which it belonged. -

    • Deleting a group entry removes it from the membership list of any user or -machine entry that belonged to the group, and also increments the -group-creation quota of the group's creator by one, even if the creator -no longer owns the group. -
    -

    To remove a user or machine from a group without actually deleting the -entry, use the pts removeuser command. -

    Options -

    -

    -nameorid -
    Specifies the name or AFS UID of each user, the name or AFS GID of each -group, or the IP address (complete or wildcard-style) or AFS UID of each -machine entry to delete. It is acceptable to mix users, machines, and -groups on the same command line, as well as names (IP addresses for machines) -and IDs. Precede the GID of each group with a hyphen to indicate that -it is negative. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example deletes the user entries pat and -terry: -

       % pts delete pat terry
    -   
    -
    -

    The following example deletes the Protection Database entry of the group -with AFS GID -215. -

       % pts delete -215
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators group -to delete user and machine entries. To delete group entries, the issuer -must either own the group or belong to the -system:administrators group. -

    Related Information -

    fs cleanacl -

    pts -

    pts removeuser -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf217.htm b/doc/html/AdminReference/auarf217.htm deleted file mode 100644 index c9d330734..000000000 --- a/doc/html/AdminReference/auarf217.htm +++ /dev/null @@ -1,256 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts examine

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Displays a Protection Database entry -

    Synopsis -

    pts examine -nameorid <user or group name or id>+  [-cell <cell name>]   
    -            [-noauth]  [-force]  [-help]
    -    
    -pts e -na <user or group name or id>+  [-c <cell name>]  [-no]  [-f]  [-h]
    -   
    -pts check -na <user or group name or id>+  [-c <cell name>]  
    -          [-no]  [-f]  [-h]
    -   
    -pts che -na <user or group name or id>+  [-c <cell name>]  
    -        [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts examine command displays information from the Protection -Database entry of each user, machine or group specified by the --nameorid argument. -

    Options -

    -

    -nameorid -
    Specifies the name or AFS UID of each user, the name or AFS GID of each -group, or the IP address (complete or wildcard-style) or AFS UID of each -machine for which to display the Protection Database entry. It is -acceptable to mix users, machines, and groups on the same command line, as -well as names (IP addresses for machines) and IDs. Precede the GID of -each group with a hyphen to indicate that it is negative. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output for each entry consists of two lines that include the following -fields: -

    -

    Name -
    The contents of this field depend on the type of entry: -
      -

    • For a user entry, it is the username that the user types when -authenticating with AFS. -

    • For a machine entry, it is either the IP address of a single machine in -dotted decimal format, or a wildcard notation that represents a group of -machines on the same network. See the pts createuser -reference page for an explanation of the wildcard notation. -

    • For a group entry, it is one of two types of group name. If the -name has a colon between the two parts, it represents a regular group and the -part before the prefix reflects the group's owner. A prefix-less -group does not have the owner field or the colon. For more details on -group names, see the pts creategroup reference page. -
    - - - -

    id -
    A unique number that the AFS server processes use to identify AFS users, -machines and groups. AFS UIDs for user and machine entries are positive -integers, and AFS GIDs for group entries are negative integers. AFS -UIDs and GIDs are similar in function to the UIDs and GIDs used in local file -systems such as UFS, but apply only to AFS operations. - - -

    owner -
    The user or group that owns the entry and thus can administer it (change -the values in most of the fields displayed in the output of this command), or -delete it entirely. The Protection Server automatically records the -system:administrators group in this field for user and -machine entries at creation time. - -

    creator -
    The user who issued the pts createuser or pts -creategroup command to create the entry. This field serves as an -audit trail, and cannot be changed. - -

    membership -
    An integer that for users and machines represents the number of groups to -which the user or machine belongs. For groups, it represents the number -of group members. -

    flags -
    A string of five characters, referred to as privacy flags, -which indicate who can display or administer certain aspects of the -entry. -
    -

    s -
    Controls who can issue the pts examine command to display the -entry. -

    o -
    Controls who can issue the pts listowned command to display the -groups that a user or group owns. -

    m -
    Controls who can issue the pts membership command to display -the groups a user or machine belongs to, or which users or machines belong to -a group. -

    a -
    Controls who can issue the pts adduser command to add a user or -machine to a group. It is meaningful only for groups, but a value must -always be set for it even on user and machine entries. -

    r -
    Controls who can issue the pts removeuser command to remove a -user or machine from a group. It is meaningful only for groups, but a -value must always be set for it even on user and machine entries. -
    -

    -

    Each flag can take three possible types of values to enable a different set -of users to issue the corresponding command: -

      -

    • A hyphen (-) designates the members of the -system:administrators group and the entry's -owner. For user entries, it designates the user in addition. -

    • The lowercase version of the letter applies meaningfully to groups only, -and designates members of the group in addition to the individuals designated -by the hyphen. -

    • The uppercase version of the letter designates everyone. -
    -

    -

    For example, the flags SOmar on a group entry indicate that -anyone can examine the group's entry and display the groups that it owns, -and that only the group's members can display, add, or remove its -members. -

    The default privacy flags for user and machine entries are -S----, meaning that anyone can display the entry. The -ability to perform any other functions is restricted to members of the -system:administrators group and the entry's owner (as -well as the user for a user entry). -

    The default privacy flags for group entries are S-M--, meaning -that all users can display the entry and the members of the group, but only -the entry owner and members of the system:administrators -group can perform other functions. -

    group quota -
    The number of additional groups the user is allowed to create. The -pts createuser command sets it to 20 for both users and machines, -but it has no meaningful interpretation for a machine, because it is not -possible to authenticate as a machine. Similarly, it has no meaning in -group entries and the pts creategroup command sets it to 0 -(zero); do not change this value. - - -
    -

    Examples -

    The following example displays the user entry for terry and the -machine entry 158.12.105.44. -

       % pts examine terry 158.12.105.44
    -   Name: terry, id: 1045, owner: system:administrators, creator: admin, 
    -     membership: 9, flags: S----, group quota: 15.
    -   Name: 158.12.105.44, id: 5151, owner: system:administrators, 
    -     creator: byu, membership: 1, flags: S----, group quota: 20.
    -   
    -
    -

    The following example displays the entries for the AFS groups with GIDs --673 and -674. -

       % pts examine -673 -674
    -   Name: terry:friends, id: -673, owner: terry, creator: terry, 
    -     membership: 5, flags: S-M--, group quota: 0.
    -   Name: smith:colleagues, id: -674, owner: smith, creator: smith, 
    -     membership: 14, flags: SOM--, group quota: 0.
    -   
    -
    -

    Privilege Required -

    The required privilege depends on the setting of the first privacy flag in -the Protection Database entry of each entry specified by the --nameorid argument: -

      -

    • If it is lowercase s, members of the -system:administrators group and the user associated with a -user entry can examine it, and only members of the -system:administrators group can examine a machine or group -entry. -

    • If it is uppercase S, anyone who can access the cell's -database server machines can examine the entry. -
    -

    Related Information -

    pts -

    pts adduser -

    pts chown -

    pts creategroup -

    pts createuser -

    pts listowned -

    pts membership -

    pts removeuser -

    pts rename -

    pts setfields -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf218.htm b/doc/html/AdminReference/auarf218.htm deleted file mode 100644 index 755674d73..000000000 --- a/doc/html/AdminReference/auarf218.htm +++ /dev/null @@ -1,85 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts help

    - - - -

    Purpose -

    Displays the syntax of specified pts commands or lists -functional descriptions for all pts commands -

    Synopsis -

    pts help [-topic <help string>+]  [-help]
    -    
    -pts h [-t <help string>+]  [-h]
    -
    -

    Description -

    The pts help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every pts command. -

    To list every pts command whose name or short description -includes a specified keyword, use the pts apropos command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the pts part of the command name, providing only -the operation code (for example, specify membership, not pts -membership). If this argument is omitted, the output briefly -describes every pts command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each pts command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the pts -membership command: -

       % pts help membership
    -   pts membership:  list membership of a user or group
    -   aliases: groups
    -   Usage: pts membership -nameorid <user or group name or id>+ 
    -   [-cell <cell name>] [-noauth] [-force] [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    pts -

    pts apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf219.htm b/doc/html/AdminReference/auarf219.htm deleted file mode 100644 index 74df1213a..000000000 --- a/doc/html/AdminReference/auarf219.htm +++ /dev/null @@ -1,112 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts listentries

    - - - - - - -

    Purpose -

    Displays all user or group entries in the Protection Database -

    Synopsis -

    pts listentries [-users]  [-groups]  [-cell <cell name>]
    -                [-noauth]  [-force]  [-help]
    -   
    -pts liste [-u]  [-g]  [-c <cell name>]  [-n]  [-f]  [-h]
    -
    -

    Description -

    The pts listentries command displays the name and AFS ID of all -Protection Database entries of the indicated type. It also displays the -AFS ID of each entry's owner and creator. -

    To display all user and machine entries, either include the --users flag or omit both it and the -groups flag. -To display all group entries, include the -groups flag. To -display all entries, provide both flags. -

    Options -

    -

    -users -
    Displays user and machine entries. -

    -groups -
    Displays group entries. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output includes a line for each entry, with information in four columns -that have the following headers: -

    -

    Name -
    The entry's name -

    ID -
    The entry's AFS ID (AFS UID for a user or machine, negative AFS GID -for a group) -

    Owner -
    The AFS ID of the user or group that owns the entry -

    Creator -
    The AFS ID of the user who created the entry (the -system:administrators group is listed as the creator of the -entry for anonymous and the system groups, but it is not otherwise -possible for a group to create groups) -
    -

    In general, the entries appear in the order in which they were -created. -

    Examples -

    The following example displays both user and group entries. -

       % pts listentries -users -groups
    -   Name                          ID  Owner Creator
    -   system:administrators       -204   -204    -204 
    -   system:anyuser              -101   -204    -204 
    -   system:authuser             -102   -204    -204 
    -   anonymous                  32766   -204    -204 
    -   admin                          1   -204   32766 
    -   pat                          100   -204       1 
    -   smith                        101   -204       1 
    -   pat:friends                 -206    100     100 
    -   staff                       -207   -204       1
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators -group. -

    Related Information -

    pts -

    pts creategroup -

    pts createuser -

    pts examine -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf220.htm b/doc/html/AdminReference/auarf220.htm deleted file mode 100644 index 6f8c351d5..000000000 --- a/doc/html/AdminReference/auarf220.htm +++ /dev/null @@ -1,90 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts listmax

    - - - - - - - - -

    Purpose -

    Displays the max user id and max group id counters -

    Synopsis -

    pts listmax [-cell <cell name>]  [-noauth]  [-force]  [-help]
    -    
    -pts listm  [-c <cell name>]  [-n]  [-f]  [-h]
    -
    -

    Description -

    The pts listmax command displays the values of the max user -id and max group id counters, which the Protection Server -uses to track the AFS user IDs (AFS UIDs) it allocates to new users or -machines, and the AFS group IDs (AFS GIDs) it allocates to new groups, -respectively. When an administrator next issues the pts -createuser command and does not include the -id argument, the -new user or machine receives an AFS UID one greater than the max user -id counter, and when a user issues the pts creategroup -command and does not include the -id argument, the new group -receives an AFS UID one less (more negative) than the max group id -counter. -

    To reset one or both counters, members of the -system:administrators group can issue the pts -setmax command. -

    Options -

    -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The command displays the counters in the following format: -

       Max user id is user_counter and max group id is group_counter.
    -   
    -
    -

    Examples -

    The following example displays the output of this command: -

       % pts listmax
    -   Max user name is 1271 and max group id is -382.
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    pts -

    pts setmax -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf221.htm b/doc/html/AdminReference/auarf221.htm deleted file mode 100644 index db060e271..000000000 --- a/doc/html/AdminReference/auarf221.htm +++ /dev/null @@ -1,127 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts listowned

    - - - - - - - -

    Purpose -

    Displays the Protection Database groups owned by a user or group -

    Synopsis -

    pts listowned -nameorid <user or group name or id>+  [-cell <cell name>]  
    -              [-noauth]  [-force]  [-help]
    -   
    -pts listo -na <user or group name or id>+  [-c <cell name>]  
    -          [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts listowned command lists the groups owned by each user or -group specified by the -nameorid argument. -

    To list any orphaned groups, whose owners have themselves been -deleted from the Protection Database, provide a value of 0 (zero) -for the -nameorid argument. To change the owner to a user or -group that still exists, use the pts chown command. -

    Options -

    -

    -nameorid -
    Specifies the name or AFS UID of each user, or the name or AFS GID of each -group, for which to display the list of owned groups. It is acceptable -to mix users and groups on the same command line, as well as names and -IDs. Precede the GID of each group with a hyphen to indicate that it is -negative. -

    A value of 0 (zero) lists group entries for groups whose owners -no longer have entries in the Protection Database. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of the output indicates the name and AFS UID or AFS GID of -each user or group for which ownership information is requested, in the -following format: -

       Groups owned by name (id: ID) are:
    -   
    -
    -

    A list of groups follows. The list does not include groups owned by -groups that the user or group owns, or to which the user or group -belongs. If the user or group does not own any groups, only the header -line appears. -

    The following error message appears if the issuer is not privileged to view -ownership information. By default, for both user and group entries the -second privacy flag is the hyphen, which denies permission to anyone other -than the user (for a user entry) and the members of the -system:administrators group. -

       pts: Permission denied so failed to get owner list for name (id: ID)
    -   
    -
    -

    Examples -

    The following example lists the groups owned by user terry and -shows that the group terry:friends does not own any -groups: -

       % pts listowned terry terry:friends
    -   Groups owned by terry (id: 1045) are:
    -     terry:friends
    -     terry:project1
    -     terry:project2
    -   Groups owned by terry:friends (id: -673) are:
    -   
    -
    -

    Privilege Required -

    The required privilege depends on the setting of the second privacy flag in -the Protection Database entry of each user or group indicated by the --nameorid argument (use the pts examine command to -display the flags): -

      -

    • If it is the hyphen and the -nameorid argument specifies a -group, only the members of the system:administrators group -and the owner of a group can list the groups it owns. -

    • If it is the hyphen and the -nameorid argument specifies a -user, only the members of the system:administrators group and -the associated user can list the groups he or she owns. -

    • If it is uppercase letter O, anyone who can access the -cell's database server machines can list the groups owned by this user or -group. -
    -

    Related Information -

    pts -

    pts chown -

    pts examine -

    pts setfields -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf222.htm b/doc/html/AdminReference/auarf222.htm deleted file mode 100644 index c09c79f27..000000000 --- a/doc/html/AdminReference/auarf222.htm +++ /dev/null @@ -1,146 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts membership

    - - - - - - - - -

    Purpose -

    Displays the membership list for a user or group -

    Synopsis -

    pts membership -nameorid <user or group name or id>+  [-cell <cell name>]  
    -               [-noauth]  [-force]  [-help]
    -   
    -pts m -na <user or group name or id>+  [-c <cell name>]  [-no]  [-f]  [-h]
    -   
    -pts groups -na <user or group name or id>+  [-c <cell name>]
    -           [-no] [-f]  [-h]
    -   
    -pts g -na <user or group name or id>+  [-c <cell name>]  [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts membership command lists the groups to which each user -or machine specified by the -nameorid argument belongs, or lists -the users and machines that belong to each group specified by the --nameorid argument. -

    It is not possible to list the members of the -system:anyuser or system:authuser groups, -and they do not appear in the list of groups to which a user belongs. -

    To add users or machine to groups, use the pts adduser -command; to remove them, use the pts removeuser -command. -

    Options -

    -

    -nameorid -
    Specifies the name or AFS UID of each user entry, the IP address (complete -or wildcard-style) or AFS UID of each machine entry, or the name or AFS GID of -each group, for which to list group membership. It is acceptable to mix -users, machines, and groups on the same command line, as well as names and -IDs. Precede the GID of each group with a hyphen to indicate that it is -negative. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    For each user and machine, the output begins with the following header -line, followed by a list of the groups to which the user or machine -belongs: -

       Groups name (id: AFS UID) is a member of:
    -   
    -
    -

    For each group, the output begins with the following header line, followed -by a list of the users and machines who belong to the group: -

       Members of group_name (id: AFS GID) are:
    -   
    -
    -

    Examples -

    The following example lists the groups to which the user pat -belongs and the members of the group smith:friends. -Note that third privacy flag for the pat entry was changed from the -default hyphen to enable a non-administrative user to obtain this -listing. -

       % pts membership pat smith:friends
    -   Groups pat (id: 1144) is a member of:
    -     smith:friends
    -     staff
    -     johnson:project-team
    -   Members of smith:friends (id: -562) are:
    -     pat
    -     terry
    -     jones
    -     richard
    -     thompson
    -   
    -
    -

    Privilege Required -

    The required privilege depends on the setting of the third privacy flag in -the Protection Database entry of each user or group indicated by the --nameorid argument (use the pts examine command to -display the flags): -

      -

    • If it is the hyphen and the -nameorid argument specifies a -user, only the associated user and members of the -system:administrators group can list the groups to which the -user belongs. -

    • If it is the hyphen and the -nameorid argument specifies a -machine, only the members of the system:administrators group -can list the groups to which the machine belongs. -

    • If it is the hyphen and the -nameorid argument specifies a -group, only the owner of the group and members of the -system:administrators group can list the members of the -group. -

    • If it is lowercase m and the -nameorid argument -specifies a user or machine entry, the meaning is equivalent to the -hyphen. -

    • If it is lowercase m and the -nameorid argument -specifies a group, members of the group can also list the other -members. -

    • If it is uppercase M, anyone who can access the cell's -database server machines can list group memberships. -
    -

    Related Information -

    pts -

    pts adduser -

    pts examine -

    pts removeuser -

    pts setfields -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf223.htm b/doc/html/AdminReference/auarf223.htm deleted file mode 100644 index 9d25b7055..000000000 --- a/doc/html/AdminReference/auarf223.htm +++ /dev/null @@ -1,111 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts removeuser

    - - - - - - - - -

    Purpose -

    Removes a user from a Protection Database group -

    Synopsis -

    pts removeuser -user <user name>+  -group <group name>+
    -               [-cell <cell name>]  [-noauth]  [-force]  [-help]
    -   
    -pts rem -u <user name>+  -g <group name>+  [-c <cell name>]  
    -        [-n]  [-f]  [-h]
    -
    -

    Description -

    The pts removeuser command removes each user or machine named by -the -user argument from each group named by the -group -argument. -

    To add users to a group, use the pts adduser command. To -list group membership, use the pts membership command. To -remove users from a group and delete the group's entry completely in a -single step, use the pts delete command. -

    Cautions -

    AFS compiles each user's group membership as he or she -authenticates. Any users who have valid tokens when they are removed -from a group retain the privileges extended to that group's members until -they discard their tokens or reauthenticate. -

    Options -

    -

    -name -
    Specifies the name of each user entry or the IP address (complete or -wildcard-style) of each machine entry to remove. -

    -group -
    Names each group from which to remove members. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example removes user smith from the groups -staff and staff:finance. Note that no -switch names are necessary because only a single instance is provided for the -first argument (the username). -

       % pts removeuser smith staff staff:finance
    -   
    -
    -

    The following example removes three machine entries, which represent all -machines in the ABC Corporation network, from the group -bin-prot: -

       % pts removeuser -user 138.255.0.0 192.12.105.0 192.12.106.0 -group bin-prot
    -   
    -
    -

    Privilege Required -

    The required privilege depends on the setting of the fifth privacy flag in -the Protection Database for the group named by the -group argument -(use the pts examine command to display the flags): -

      -

    • If it is the hyphen, only the group's owner and members of the -system:administrators group can remove members. -

    • If it is lowercase r, members of the group can also remove -other members. -
    -

    (It is not possible to set the fifth flag to uppercase -R.) -

    Related Information -

    pts -

    pts adduser -

    pts examine -

    pts membership -

    pts setfields -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf224.htm b/doc/html/AdminReference/auarf224.htm deleted file mode 100644 index 56eb0dc5e..000000000 --- a/doc/html/AdminReference/auarf224.htm +++ /dev/null @@ -1,110 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts rename

    - - - - - - -

    Purpose -

    Changes the name of a Protection Database entry -

    Synopsis -

    pts rename -oldname <old name>  -newname <new name>
    -           [-cell <cell name>]  [-noauth]  [-force]  [-help]
    -    
    -pts ren -o <old name>  -ne <new name>  [-c <cell name>]  [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts rename command changes the name of the user, machine, or -group entry specified by the -oldname argument to the name -specified by the -newname argument. It is not possible to -change a user or machine entry's name to look like a regular group -entry's name (have a colon in it). -

    Members of the system:administrators group can change a -regular group name into a prefix-less name and vice versa. When -changing a prefix-less group name into a regular group name or a regular group -name to another regular group name, the owner field of the new name (the part -before the colon) must correctly reflect the group's owner. -

    Changing a regular group's owner with the pts chown command -automatically changes the owner field (the part before the colon) of the -group's name, but does not change the owner field of any groups owned by -the group. Use this command to rename those groups to a form that -accurately reflects their ownership. -

    Cautions -

    By convention, many aspects of an AFS user account have the same name as -the user's Protection Database entry, including the Authentication -Database entry, volume, and mount point. When using this command to -change a user name, also change the names of all related entities to maintain -consistency. For instructions, see the chapter on user accounts in the -IBM AFS Administration Guide. -

    Options -

    -

    -oldname -
    Specifies the current full name of the entry. -

    -newname -
    Specifies the new full name for the entry. For regular groups, the -owner field (the part before the colon) of the new name must reflect the -actual ownership of the group. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example changes the name of the group staff, owned -by the privileged user admin, to -admin:staff: -

       % pts rename -oldname staff -newname admin:staff
    -   
    -
    -

    The following example changes the name of the group -admin:finance to the group finance. The -issuer must belong to the system:administrators group. -

       % pts rename -oldname admin:finance -newname finance
    -   
    -
    -

    Privilege Required -

    To change a regular group name to a prefix-less name or vice versa, or to -change a user or machine entry's name, the issuer must belong to the -system:administrators group. -

    To change a group name to a new name of the same type (regular or -prefix-less), the issuer must own the group or belong to the -system:administrators group. -

    Related Information -

    pts -

    pts chown -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf225.htm b/doc/html/AdminReference/auarf225.htm deleted file mode 100644 index 2e35f6f89..000000000 --- a/doc/html/AdminReference/auarf225.htm +++ /dev/null @@ -1,199 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts setfields

    - - - - - - - - - - - - - -

    Purpose -

    Sets privacy flags or the group-creation quota for a Protection Database -entry. -

    Synopsis -

    pts setfields -nameorid <user or group name or id>+
    -              [-access <set privacy flags>]
    -              [-groupquota <set limit on group creation>]
    -              [-cell <cell name>]  [-noauth]  [-force]  [-help]
    -   
    -pts setf -na <user or group name or id>+  [-a <set privacy flags>] 
    -         [-g <set limit on group creation>]  [-c <cell name>] 
    -         [-no]  [-f]  [-h]
    -
    -

    Description -

    The pts setfields command sets the group-creation quota, the -privacy flags, or both, associated with each user, machine, or group entry -specified by the -nameorid argument. -

    To examine the current quota and privacy flags, use the pts -examine command. -

    Cautions -

    Changing a machine or group's group-creation quota is allowed, but not -recommended. The concept is meaningless for machines and groups, -because it is impossible to authenticate as a group or machine. -

    Similarly, some privacy flag settings do not have a sensible -interpretation. The Arguments section specifies the -appropriate settings. -

    Options -

    -

    -nameorid -
    Specifies the name or AFS UID of each user, the IP address (complete or -wildcard-style) of each machine, or the name or AFS GID of each machine for -which to set privacy flags or group-creation quota. It is acceptable to -mix users, machines, and groups on the same command line, as well as names (IP -addresses for machines) and IDs. Precede the GID of each group with a -hyphen to indicate that it is negative. -

    -access -
    Specifies the privacy flags to apply to each entry. Provide a -string of five characters, one for each of the permissions. If this -option is omitted, the current setting remains unchanged. -

    Set each flag to achieve the desired combination of permissions. If -the following list does not mention a certain setting, it is not -acceptable. For further discussion of the privacy flags, see the -pts examine reference page. -

      -

    • The first flag determines who can use the pts examine command -to display information from a user, machine or group's Protection -Database entry. -
        -

      • Set it to lowercase s to permit the members of the -system:administrators group to display a user, machine, or -group entry, and the associated user to display a user entry. -

      • Set it to uppercase S to permit anyone who can access the -cell's database server machines to display a user, machine, or group -entry. -
      -

    • The second flag determines who can use the pts listowned -command to list the groups that a user or group owns. -
        -

      • Set it to the hyphen (-) to permit the members of the -system:administrators group and a user to list the groups he -or she owns, or to permit the members of the -system:administrators group and a group's owner to list -the groups that a group owns. -

      • Set it to uppercase letter O to permit anyone who can access -the cell's database server machines to list the groups owned by a machine -or group entry. -
      -

    • The third flag determines who can use the pts membership -command to list the groups to which a user or machine belongs, or the users -and machines that belong to a group. -
        -

      • Set it to the hyphen (-) to permit the members of the -system:administrators group and a user to list the groups he -or she belongs to, to permit the members of the -system:administrators group to list the groups a machine -belongs to, or to permit the members of the -system:administrators group and a group's owner to list -the users and machines that belong to it. -

      • Set it to lowercase m to permit members of a group to list the -other members. (For user and machine entries, this setting is -equivalent to the hyphen.) -

      • Set it to uppercase M to permit anyone who can access the -cell's database server machines to list membership information for a -user, machine or group. -
      -

    • The fourth flag determines who can use the pts adduser command -to add users and machines as members of a group. This flag has no -sensible interpretation for user and machine entries, but must be set -nonetheless, preferably to the hyphen. -
        -

      • Set it to the hyphen (-) to permit the members of the -system:administrators group and the owner of the group to add -members. -

      • Set it to lowercase a to permit members of a group to add other -members. -

      • Set it to uppercase A to permit anyone who can access the -cell's database server machines to add members to a group. -
      -

    • The fifth flag determines who can use the pts removeuser -command to remove users and machines from membership in a group. This -flag has no sensible interpretation for user and machine entries, but must be -set nonetheless, preferably to the hyphen. -
        -

      • Set it to the hyphen (-) to permit the members of the -system:administrators group and the owner of the group to -remove members. -

      • Set it to lowercase r to permit members of a group to remove -other members. -
      -
    -

    -groupquota -
    Specifies the number of additional groups a user can create (it does not -matter how many he or she has created already). Do not include this -argument for a group or machine entry. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example changes the privacy flags on the group -operators, retaining the default values of the first, second and -third flags, but setting the fourth and fifth flags to enable the group's -members to add and remove other members. -

       % pts setfields -nameorid operators -access S-Mar
    -   
    -
    -

    The following example changes the privacy flags and sets group quota on the -user entry admin. It retains the default values of the -first, fourth, and fifth flags, but sets the second and third flags, to enable -anyone to list the groups that admin owns and belongs to. -Users authenticated as admin can create an additional 50 -groups. -

       % pts setfields -nameorid admin -access SOM-- -groupquota 50
    -   
    -
    -

    Privilege Required -

    To edit group entries or set the privacy flags on any type of entry, the -issuer must own the entry or belong to the -system:administrators group. To set group-creation -quota on a user entry, the issuer must belong to the -system:administrators group. -

    Related Information -

    pts -

    pts adduser -

    pts examine -

    pts listowned -

    pts membership -

    pts removeuser -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf226.htm b/doc/html/AdminReference/auarf226.htm deleted file mode 100644 index a7ddf740b..000000000 --- a/doc/html/AdminReference/auarf226.htm +++ /dev/null @@ -1,95 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    pts setmax

    - - - - - - - - -

    Purpose -

    Sets the value of the max group id or max user id -counter -

    Synopsis -

    pts setmax [-group <group max>]  [-user <user max>]  [-cell <cell name>]   
    -           [-noauth]  [-force]  [-help] 
    -    
    -pts setm [-g group max>]  [-u <user max>]  [-c <cell name>]  [-n]  [-f]  [-h]
    -
    -

    Description -

    The pts setmax command sets the value of one or both counters -that track the IDs the Protection Server allocates to new users, machines, or -groups: the max user id counter for the AFS user IDs (AFS -UIDs) assigned to users and machines, and the max group id counter -for the AFS group IDs (AFS GIDs) assigned to groups. -

    Use the pts listmax command to display the current value of both -counters. -

    Options -

    -

    -group -
    Sets the max group id counter. Precede the value with a -hyphen to indicate that it is negative. When an administrator next uses -the pts creategroup command to create a group entry and does not -include that command's -id argument, the Protection Server -assigns the group an AFS GID one less (more negative) than this value. -

    -user -
    Sets the max user id counter. When an administrator next -uses the pts createuser command to create a user or machine entry -and does not include that command's -id argument, the -Protection Server assigns the group an AFS UID one greater than this -value. -

    -cell -
    Names the cell in which to run the command. For more details, see -the introductory pts reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. For more details, see the introductory pts reference -page. -

    -force -
    Enables the command to continue executing as far as possible when errors -or other problems occur, rather than halting execution at the first -error. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command sets the max group id counter to -500 and -the max user id counter to 1000. -

       % pts setmax -group -500 -user 1000
    -   
    -
    -

    Privilege Required -

    The issuer must belong to the system:administrators -group. -

    Related Information -

    pts -

    pts creategroup -

    pts createuser -

    pts listmax -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf227.htm b/doc/html/AdminReference/auarf227.htm deleted file mode 100644 index e9cedcfd7..000000000 --- a/doc/html/AdminReference/auarf227.htm +++ /dev/null @@ -1,114 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    ptserver

    - - - - - -

    Purpose -

    Initializes the Protection Server -

    Synopsis -

    ptserver [-database <db path>]  [-p <number of processes>] [-rebuildDB] 
    -         [-enable_peer_stats]  [-enable_process_stats]  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The ptserver command initializes the Protection Server, which -must run on every database server machine. In the conventional -configuration, its binary file is located in the /usr/afs/bin -directory on a file server machine. -

    The ptserver command is not normally issued at the command shell -prompt, but rather placed into a database server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a file server machine as the local superuser -root. -

    The Protection Server performs the following tasks: -

      -

    • Maintains the Protection Database, which contains entries for every user -and group in the cell. Use the pts commands to administer -the database. -

    • Allocates AFS IDs for new user, machine and group entries and maps each ID -to the corresponding name. -

    • Generates a current protection subgroup (CPS) at the File Server's -request. The CPS lists all groups to which a user or machine -belongs. -
    -

    Options -

    -

    -database -
    Specifies the pathname of an alternate directory in which the Protection -Database files reside. Provide the complete pathname, ending in the -base filename to which the .DB0 and -.DBSYS1 extensions are appended. For example, the -appropriate value for the default database files is -/usr/afs/db/prdb. -

    -p -
    Sets the number of server lightweight processes (LWPs) to run. -Provide a positive integer from the range 3 to -16. The default value is 3. -

    -rebuildDB -
    Rebuilds the Protection Database at the beginning of Protection Server -initialization. Use this argument only in consultation with AFS -Development or Product Support. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following bos create command creates a ptserver -process on the machine fs3.abc.com. The -command appears here on multiple lines only for legibility. -

       % bos create -server fs3.abc.com -instance ptserver  \
    -                -type simple -cmd /usr/afs/bin/ptserver
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BosConfig -

    prdb.DB0 and prdb.DBSYS1 -

    bos create -

    bos getlog -

    pts -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf228.htm b/doc/html/AdminReference/auarf228.htm deleted file mode 100644 index 99a4d519c..000000000 --- a/doc/html/AdminReference/auarf228.htm +++ /dev/null @@ -1,120 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    rcp (AFS version)

    - - - - - - -

    Purpose -

    Copies a file on a remote machine -

    Synopsis -

    rcp [-p]  <file1>  <file2>
    -   
    -rcp [-r]  [-p]  <file>+  <directory>
    -
    -

    Description -

    The AFS-modified rcp program functions like the standard UNIX -rcp program, but also passes the issuer's AFS token to the -remote machine's Cache Manager, to enable authenticated access to the AFS -filespace via that machine. -

    Token passing is most effective if both the remote machine and local -machine belong to the same cell, because the rcp command can pass -only one token even if the user has several tokens--it passes the token -listed first in the output from the tokens command. If the -remote and local machine do not belong to the same cell, the possibilities are -as follows: -

      -

    • The passed token is for the remote machine's cell. The issuer -accesses the remote cell's AFS file tree as an authenticated AFS user, -but is considered anonymous in the local cell and so can exercise -only the access rights granted to the system:anyuser group -there. For example, to copy a file into a local AFS directory from the -remote cell, the directory's ACL must grant the l -(lookup) and i (insert) permissions to the -system:anyuser group. -

    • The passed token is for the local machine's cell. The issuer -accesses the remote cell's AFS file tree as anonymous, and so -can only exercise the access rights granted to the -system:anyuser group. -
    -

    In addition to running the AFS version of the rcp binary on the -machine where the rcp command is issued, other configuration -changes are necessary for token passing to work properly. See the -Cautions section for a list. -

    The AFS version of the rcp command is compatible with the -standard inetd command, but token passing works only if both -programs are modified to handle AFS tokens. If only one of them is -modified, the issuer accesses the AFS filespace through the remote machine as -the anonymous user. -

    Cautions -

    The AFS distribution does not include an AFS-modified version of this -command for every system type, in some cases because the operating system -vendor has already modified the standard version in the required way. -For details, see the IBM AFS Release Notes. -

    The AFS rcp command does not allow third party copies, in which -neither the source file nor the target file is stored on the machine where the -command is issued. The standard UNIX rcp command claims to -provide this functionality. -

    For security's sake, use the AFS version of the rcp command -only in conjunction with PAGs, either by using an AFS-modified login utility, -issuing the pagsh command before obtaining tokens, or including the --setpag flag to the klog command. -

    Several configuration requirements and restrictions are necessary for token -passing to work correctly with an AFS-modified version of the rcp -command. Some of these are also necessary with the standard UNIX -version, but are included here because the issuer accustomed to AFS -protections is possibly unlikely to consider them. There are possibly -other UNIX-based requirements and restrictions not mentioned here; -consult the UNIX manual page. (One important one is that no -stty commands can appear in the issuer's shell initialization -file, such as the .cshrc file.) -

    The requirements and restrictions for token passing include the -following. -

      -

    • The local machine must be running the AFS version of the rcp -command, with the rcp binary file locally installed to grant setuid -privilege to the owner, the local superuser root. -

    • The remote machine must be running the AFS version of the inetd -program. -

    • If the rcp command is to consult a .rhosts -file on the remote machine, the file must have UNIX protections no more -liberal than -rw-r--r--. If the .rhosts -file resides in a user home directory in AFS, the home directory must also -grant the lookup (l) and read (r) -permissions to the system:anyuser group. -
    -

    Options -

    Consult the UNIX manual page for the rcp command. -

    Privilege Required -

    None -

    Related Information -

    inetd (AFS version) -

    tokens -

    UNIX manual page for rcp -

    IBM AFS Release Notes -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf229.htm b/doc/html/AdminReference/auarf229.htm deleted file mode 100644 index 72edd98be..000000000 --- a/doc/html/AdminReference/auarf229.htm +++ /dev/null @@ -1,105 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    rsh (AFS version)

    - - - - - -

    Purpose -

    Opens a shell on a remote machine -

    Synopsis -

    rsh host  [-n]  [-l <username>]  <command>
    -   
    -host  [-n]  [-l <username>]    <command>
    -
    -

    Description -

    The AFS-modified rsh program functions like the standard UNIX -rsh program, but also passes the issuer's AFS token to the -remote machine's Cache Manager, to enable authenticated access to the AFS -filespace via that machine. -

    Token passing is most effective if both the remote machine and local -machine belong to the same cell, because the rsh program can pass -only one token even if the user has several tokens--it passes the token -listed first in the output from the tokens command. If the -remote and local machine do not belong to the same cell, the first token must -be valid for the remote machine's cell, in order for the remote -cell's server processes to recognize the issuer as authenticated. -

    In addition to running the AFS version of the rsh binary on the -machine where the rsh command is issued, other configuration -changes are necessary for token passing to work properly. See the -Cautions section for a list. -

    The AFS version of the rsh command is compatible with the -standard UNIX inetd command, but token passing works only if both -programs are modified to handle AFS tokens. If only one of them is -modified, the issuer accesses the AFS filespace through the remote machine as -the user anonymous. -

    Cautions -

    Some operating systems assign an alternate name to this program, such as -remsh. The version included in the AFS distribution uses the -same name as the operating system. -

    The AFS distribution does not include an AFS-modified version of this -command for every system type, in some cases because the operating system -vendor has already modified the standard version in the required way. -For details, see the IBM AFS Release Notes. -

    For security's sake, use the AFS version of the rsh command -only in conjunction with PAGs, either by using an AFS-modified login utility, -issuing the pagsh command before obtaining tokens, or including the --setpag flag to the klog command. -

    Several configuration requirements and restrictions are necessary for token -passing to work correctly with the AFS version of the rsh -command. Some of these are also necessary with the standard UNIX -version, but are included here because the issuer used to AFS protections is -possibly unlikely to think of them. There are possibly other UNIX-based -requirements or restrictions not mentioned here; consult the UNIX manual -page for the rsh command. (One important one is that no -stty commands can appear in the issuer's shell initialization -file, such as the .cshrc file.) -

    The requirements and restrictions for token passing include the -following. -

      -

    • The local machine must be running the AFS version of the rsh -command, with the binary file locally installed to grant setuid privilege to -the owner, the local superuser root. -

    • The remote machine must be running the AFS version of the inetd -program. -

    • If the rsh command is to consult an .rhosts -file on the remote machine, the file must have UNIX mode bits no more liberal -than -rw-r--r--. If the .rhosts file -resides in a user home directory in AFS, the home directory must also grant -the l (lookup) and r (read) -permissions to the system:anyuser group. -
    -

    Options -

    Consult the UNIX manual page for the rsh command. -

    Privilege Required -

    None -

    Related Information -

    inetd (AFS version) -

    tokens -

    UNIX manual page for rsh or remsh -

    IBM AFS Release Notes -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf230.htm b/doc/html/AdminReference/auarf230.htm deleted file mode 100644 index 4e25d46bc..000000000 --- a/doc/html/AdminReference/auarf230.htm +++ /dev/null @@ -1,123 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    runntp

    - - - - - - - -

    Purpose -

    Initializes the Network Time Protocol Daemon -

    Synopsis -

    runntp [-localclock] [-precision <small negative integer>]  
    -       [-logfile <filename for ntpd's stdout/stderr>]  
    -       [-ntpdpath <pathname of ntpd executable (/usr/afs/bin/ntpd)>]  
    -       [<host>+] [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The runntp command initializes the Network Time Protocol Daemon -(NTPD) and related programs on the local machine and constructs an -ntp.conf configuration file. The intended use is on -AFS file server machines as a convenient interface to the standard -ntpd program. -

    In the conventional configuration, the binary file for the command is -located in the /usr/afs/bin directory on a file server -machine. The command is not normally issued at the command shell -prompt, but rather placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a server machine as the local superuser -root. -

    Cautions -

    Do not run the runntp program if NTPD or another time protocol -is already in use in the cell. Running two time-synchronization -protocols can cause errors. -

    Options -

    -

    -localclock -
    Designates the local machine's internal clock as a possible time -source if a network partition separates the machine from the other source -machines listed on the command line. In cells that are not connected to -an exterior network or are behind a firewall, include this flag on every -machine that runs the runntp process. In cells that -frequently lose access to exterior networks (voluntarily or not), include it -only on the runntp process running on the system control -machine. Do not include the flag if the cell is reliably connected to -exterior networks. -

    -precision -
    Specifies the precision of the local clock. This argument is not -normally provided. As the ntpd process initializes, it -determines the precision of the local clock on its own. If provided, it -is a small integer preceded by a hyphen to show that it is negative. -The value is used as an exponent on the number 2, and the result interpreted -as the frequency, in fractions of a second, at which the local clock ticks -(advances). -

    For example, a value of -6, which translates to -2-6 or 1/64, means that the local clock ticks once every -1/64th of a second, or has a precision of about 60 ticks per second. A -value of -7 translates to about 100 ticks per second. A -value of -10 translates to about 1000 ticks per second (a -millisecond clock). -

    -logfile -
    Specifies the local disk pathname for the NTP daemon's log file, such -as /usr/afs/logs/ntp.log. The log records which -machines are serving as time sources and peers, what adjustments have been -made to reduce drift, and so on. Use the ntpd process's -debugging mechanism to control the amount of information produced. If -this argument is omitted, the information is discarded. -

    -ntpdpath -
    Specifies the local disk pathname of the binary for the ntpd -program. If this argument is omitted, the default is -/usr/afs/bin/ntpd. -

    host -
    Is the fully qualified hostname of each machine to consult as a time -source. By convention, the machines are outside the cell if exterior -networks are accessible. -

    In general, this argument is necessary only on the system control -machine. If the issuer omits it, then the local machine consults the -local database server machines listed in its copy of the -/usr/afs/etc/CellServDB file. -

    For advice on selecting appropriate time sources, see the IBM AFS -Quick Beginnings or ask AFS Product Support. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    bos create -

    UNIX manual page for ntp -

    UNIX manual page for ntpd -

    UNIX manual page for ntpdc -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf231.htm b/doc/html/AdminReference/auarf231.htm deleted file mode 100644 index bdb5774c8..000000000 --- a/doc/html/AdminReference/auarf231.htm +++ /dev/null @@ -1,168 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    rxdebug

    - - - -

    Purpose -

    Provides debugging trace of Rx activity -

    Synopsis -

    rxdebug -servers <server machine>  [-port <IP port>]  [-nodally]  
    -        [-allconnections]  [-rxstats] [-onlyserver]  [-onlyclient]  
    -        [-onlyport <show only <port>>]  [-onlyhost <show only <host>>]  
    -        [-onlyauth <show only <auth level>>]  [-version]  [-noconns]  
    -        [-peers]  [-help] 
    -   
    -rxdebug -s <server machine>  [-po <IP port>]  [-nod]  [-a]  [-r]  
    -        [-onlys]  [-onlyc]   [-onlyp <show only <port>>]  
    -        [-onlyh <show only <host>>]  [-onlya <show only <auth level>>]  
    -        [-v]  [-noc]  [-pe]  [-h] 
    -
    -

    Description -

    The rxdebug command provides a trace of Rx activity for the -server or client machine named by the -servers argument. Rx -is AFS's proprietary remote procedure call (RPC) protocol, so this -command enables the issuer to check the status of communication between the -Cache Manager or an AFS server process (as specified with the -port -argument) on the machine and one or more processes on other machines. -

    Options -

    -

    -servers -
    Specifies the machine that is running the Cache Manager or server process -for which to trace Rx activity. Provide the machine's IP address -in dotted decimal format, its fully qualified host name (for example, -fs1.abc.com), or the shortest abbreviated form of its -host name that distinguishes it from other machines. Successful use of -an abbreviated form depends on the availability of a name resolution service -(such as the Domain Name Service or a local host table) at the time the -command is issued. -

    -port -
    Specifies the process for which to trace Rx activity. Omit this -argument to specify the File Server (fileserver process), or -provide one of the following values: -
    -

    7000 for the File Server (fileserver process) -

    7001 for the Cache Manager (specifically, its callback -interface) -

    7002 for the Protection Server (ptserver process) -

    7003 for the Volume Location (VL) Server (vlserver -process) -

    7004 for the Authentication Server (kaserver -process) -

    7005 for the Volume Server (volserver process) -

    7007 for the BOS Server (bosserver process) -

    7008 for the Update Server (upserver process) -

    7009 for the NFS/AFS Translator's rmtsysd -daemon -

    7021 for the Backup Server (buserver process) -

    7025 through 65535 for the Backup Tape Coordinator -(butc process) that has the port offset number derived by -subtracting 7025 from this value -

    -

    -nodally -
    Produces output only for connections that are not in dally mode. -

    -allconnections -
    Produces output for all connections, even inactive ones. By -default, the output includes information only for connections that are active -or in dally mode when the rxdebug command is issued. -

    -rxstats -
    Produces detailed statistics about Rx history and performance (for -example, counts of the number of packets of various types the process has read -and sent, calculations of average and minimum roundtrip time, and so -on). -

    -onlyserver -
    Produces output only for connections in which the process designated by -the -port argument is acting as the server. -

    -onlyclient -
    Produces output only for connections in which the process designated by -the -port argument is acting as the client. -

    -onlyport -
    Produces output only for connections between the process designated by the --port argument and the specified port on any another -machine. Use the same port identifiers as for the -port -argument. -

    -onlyhost -
    Produces output only for connections between the process designated by the --port argument and any process on the specified machine. To -identify the machine, use the same notation as for the -servers -argument. -

    -onlyauth -
    Produces output only for connections that are using the specified -authentication level. Provide one of the following values: -
      -

    • auth for connections at authentication level -rxkad_auth -

    • clear for connections at authentication level -rxkad_clear -

    • crypt for connections at authentication level -rxkad_crypt -

    • none for unauthenticated connections (equivalents are -null, noauth, and unauth) -
    -

    -version -
    Reports the AFS build level of the binary file for the process designated -by the -port argument (or of the kernel extensions file for port -7001, the Cache Manager's callback interface). Any other options -combined with this one are ignored. -

    -noconns -
    Produces only the standard statistics that begin the output produced by -every option (other than -version), without reporting on any -connections. Any other options combined with this one are -ignored. -

    -peers -
    Outputs information from the peer structure maintained for each -port on another machine to which the process designated by the --port argument has a connection. There is information about -roundtrip time and numbers of packets sent and received, for example. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If any options other than -version or -help are -provided, the output written to the standard output stream begins with basic -statistics about packet usage and availability, how many calls are waiting for -a thread, how many threads are free, and so on (this is the only information -provided by the -noconns flag). Adding other options -produces additional information as described in the preceding -Options section of this reference page. The output is -intended for debugging purposes and is meaningful to someone familiar with the -implementation of Rx. -

    Privilege Required -

    None. -

    Related Information -

    afsd -

    bosserver -

    buserver -

    butc -

    fileserver -

    kaserver -

    ptserver -

    upclient -

    upserver -

    vlserver -

    volserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf232.htm b/doc/html/AdminReference/auarf232.htm deleted file mode 100644 index b00311ea7..000000000 --- a/doc/html/AdminReference/auarf232.htm +++ /dev/null @@ -1,265 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    salvager

    - - - - -

    Purpose -

    Initializes the Salvager component of the fs process -

    Synopsis -

    salvager [initcmd]  [-partition <Name of partition to salvage>] 
    -         [-volumeid <Volume Id to salvage>]  [-debug]  
    -         [-nowrite]  [-inodes]  [-force]  [-oktozap]  
    -         [-rootinodes]  [-salvagedirs]  [-blockreads]  
    -         [-parallel <# of max parallel partition salvaging>]
    -         [-tmpdir <Name of dir to place tmp files>]  
    -         [-showlog]  [-showsuid]  [-showmounts] 
    -         [-orphans <ignore | remove | attach>] [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The salvager command initializes the Salvager component of the -fs process. In the conventional configuration, its binary -file is located in the /usr/afs/bin directory on a file server -machine. -

    The Salvager restores internal consistency to corrupted read/write volumes -on the local file server machine where possible. For read-only or -backup volumes, it inspects only the volume header: -

      -

    • If the volume header is corrupted, the Salvager removes the volume -completely and records the removal in its log file, -/usr/afs/logs/SalvageLog. Issue the vos release -or vos backup command to create the read-only or backup volume -again. -

    • If the volume header is intact, the Salvager skips the volume (does not -check for corruption in the contents). However, if the File Server -notices corruption as it initializes, it sometimes refuses to attach the -volume or bring it online. In this case, it is simplest to remove the -volume by issuing the vos remove or vos zap -command. Then issue the vos release or vos backup -command to create it again. -
    -

    Unlike other server process initialization commands, the -salvager command is designed to be issued at the command shell -prompt, as well as being placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. It is also possible to invoke the Salvager remotely by issuing -the bos salvage command. -

    Combine the command's options as indicated to salvage different -numbers of read/write volumes: -

      -

    • To salvage all volumes on the file server machine, provide no -arguments. No volumes on the machine are accessible to Cache Managers -during the salvage, because the BOS Server stops the File Server and Volume -Server processes while the Salvager runs. -

    • To salvage all of the volumes on one partition, provide the --partition argument. As for a salvage of all volumes on the -machine, no volumes on the machine are accessible to Cache Managers during the -salvage operation. -

    • To salvage only one volume, combine the -partition and --volumeid arguments. Only that volume is inaccessible to -Cache Managers, because the BOS Server does not shutdown the File Server and -Volume Server processes. -
    -

    The Salvager normally salvages only those read/write volumes that are -marked as having been active when a crash occurred. To have it salvage -all relevant read/write volumes, add the -force flag. -

    The Salvager normally creates new inodes as it repairs damage. If -the partition is so full that there is no room for new inodes, use the --nowrite argument to bringing undamaged volumes online without -attempting to salvage damaged volumes. Then use the vos move -command to move one or more of the undamaged volumes to other partitions, -freeing up the space that the Salvager needs to create new inodes. -

    By default, multiple Salvager subprocesses run in parallel: one for -each partition up to four, and four subprocesses for four or more -partitions. To increase or decrease the number of subprocesses running -in parallel, provide a positive integer value for the -parallel -argument. -

    If there is more than one server partition on a physical disk, the Salvager -by default salvages them serially to avoid the inefficiency of constantly -moving the disk head from one partition to another. However, this -strategy is often not ideal if the partitions are configured as logical -volumes that span multiple disks. To force the Salvager to salvage -logical volumes in parallel, provide the string all as the value -for the -parallel argument. Provide a positive integer to -specify the number of subprocesses to run in parallel (for example, --parallel 5all for five subprocesses), or omit the integer to run -up to four subprocesses, depending on the number of logical volumes being -salvaged. -

    The Salvager creates temporary files as it runs, by default writing them to -the partition it is salvaging. The number of files can be quite large, -and if the partition is too full to accommodate them, the Salvager terminates -without completing the salvage operation (it always removes the temporary -files before exiting). Other Salvager subprocesses running at the same -time continue until they finish salvaging all other partitions where there is -enough disk space for temporary files. To complete the interrupted -salvage, reissue the command against the appropriate partitions, adding the --tmpdir argument to redirect the temporary files to a local disk -directory that has enough space. -

    The -orphans argument controls how the Salvager handles orphaned -files and directories that it finds on server partitions it is -salvaging. An orphaned element is completely inaccessible -because it is not referenced by the vnode of any directory that can act as its -parent (is higher in the filespace). Orphaned objects occupy space on -the server partition, but do not count against the volume's quota. -

    To generate a list of all mount points that reside in one or more volumes, -rather than actually salvaging them, include the -showmounts -flag. -

    Options -

    -

    initcmd -
    Accommodates the command's use of the AFS command parser, and is -optional. -

    -partition -
    Specifies the name of the partition to salvage. Specify the full -partition name using the form /vicepx or -/vicepxx. Omit this argument to salvage every -partition on the file server machine. -

    -volumeid -
    Specifies the volume ID of a specific read/write volume to salvage. -The -partition argument must be provided along with this one and -specify the volume's actual site. -

    -debug -
    Allows only one Salvager subprocess to run at a time, regardless of the -setting of the -parallel option. Include it when running the -Salvager in a debugger to make the trace easier to interpret. -

    -nowrite -
    Brings all undamaged volumes online without attempting to salvage any -damaged volumes. -

    -inodes -
    Records in the /usr/afs/logs/SalvageLog file a list of all AFS -inodes that the Salvager modified. -

    -force -
    Inspects all volumes for corruption, not just those that are marked as -having been active when a crash occurred. -

    -oktozap -
    Removes a volume that is so damaged that even issuing the vos -zap command with the -force flag is ineffective. Use -this argument only in consultation with AFS Development or Product -Support. Combine it with the -partition and --volumeid arguments to identify the volume to remove. -

    -rootinodes -
    Records in the /usr/afs/logs/SalvageLog file a list of all AFS -inodes owned by the local superuser root. -

    -salvagedirs -
    Salvages entire directory structures, even if they do not appear to be -damaged. By default, the Salvager salvages a directory only if it is -flagged as corrupted. -

    -blockreads -
    Forces the Salvager to read a partition one disk block (512 bytes) at a -time and to skip any blocks that are too badly damaged to be salvaged. -This allows it to salvage as many volumes as possible. By default, the -Salvager reads large disk blocks, which can cause it to exit prematurely if it -encounters disk errors. Use this flag if the partition to be salvaged -has disk errors. -

    -parallel -
    Specifies the maximum number of Salvager subprocesses to run in -parallel. Provide one of three values: -
      -

    • An integer from the range 1 to 32. A value of -1 means that a single Salvager process salvages the partitions -sequentially. -

    • The string all to run up to four Salvager subprocesses in -parallel on partitions formatted as logical volumes that span multiple -physical disks. Use this value only with such logical volumes. -

    • The string all followed immediately (with no intervening space) -by an integer from the range 1 to 32, to run the -specified number of Salvager subprocesses in parallel on partitions formatted -as logical volumes. Use this value only with such logical -volumes. -
    -

    The BOS Server never starts more Salvager subprocesses than there are -partitions, and always starts only one process to salvage a single -volume. If this argument is omitted, up to four Salvager subprocesses -run in parallel. -

    -tmpdir -
    Names a local disk directory in which the Salvager places the temporary -files it creates during a salvage operation, instead of writing them to the -partition being salvaged (the default). If the Salvager cannot write to -the specified directory, it attempts to write to the partition being -salvaged. -

    -showlog -
    Displays on the standard output stream all log data that is being written -to the /usr/afs/logs/SalvageLog file. -

    -showsuid -
    Displays a list of the pathnames for all files that have the setuid or -setgid mode bit set. -

    -showmounts -
    Records in the /usr/afs/logs/SalvageLog file all mount points -found in each volume. The Salvager does not repair corruption in the -volumes, if any exists. -

    -orphans -
    Controls how the Salvager handles orphaned files and directories. -Choose one of the following three values: -
    -

    ignore -
    Leaves the orphaned objects on the disk, but prints a message to the -/usr/afs/logs/SalvageLog file reporting how many orphans were found -and the approximate number of kilobytes they are consuming. This is the -default if the -orphans argument is omitted. -

    remove -
    Removes the orphaned objects, and prints a message to the -/usr/afs/logs/SalvageLog file reporting how many orphans were -removed and the approximate number of kilobytes they were consuming. -

    attach -
    Attaches the orphaned objects by creating a reference to them in the vnode -of the volume's root directory. Since each object's actual -name is now lost, the Salvager assigns each one a name of the following -form: -
    -

    _ _ORPHANFILE_ _.index for files -

    _ _ORPHANDIR_ _.index for directories -

    -

    -

    where index is a two-digit number that uniquely identifies each -object. The orphans are charged against the volume's quota and -appear in the output of the ls command issued against the -volume's root directory. -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command instructs the Salvager to attempt to salvage the -volume with volume ID 258347486 on /vicepg on the local -machine. -

       % /usr/afs/bin/salvager -partition /vicepg -volumeid 258347486
    -   
    -
    -

    Privilege Required -

    To issue the command at the shell prompt, the issuer must be logged in as -the local superuser root. -

    Related Information -

    BosConfig -

    SalvageLog -

    bos create -

    bos getlog -

    bos salvage -

    vos move -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf233.htm b/doc/html/AdminReference/auarf233.htm deleted file mode 100644 index 5b046d040..000000000 --- a/doc/html/AdminReference/auarf233.htm +++ /dev/null @@ -1,283 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    scout

    - - - - - - - - - - -

    Purpose -

    Monitors the File Server process -

    Synopsis -

    scout [initcmd]  -server <FileServer name(s) to monitor>+
    -      [-basename <base server name>]  
    -      [-frequency <poll frequency, in seconds>]  [-host]  
    -      [-attention <specify attention (highlighting) level>+]
    -      [-debug <turn debugging output on to the named file>]  [-help]
    -    
    -scout [i]  -s <FileServer name(s) to monitor>+  
    -      [-b <base server name>] [-f <poll frequency, in seconds>] 
    -      [-ho]  [-a <specify attention (highlighting) level>+]
    -      [-d <turn debugging output on to the named file>]  [-he]
    -
    -

    Description -

    The scout command displays statistics gathered from the File -Server process running on each machine specified with the -server -argument. The Output section explains the meaning of the -statistics and describes how they appear in the command shell, which is -preferably a window managed by a window manager program. -

    Cautions -

    The scout program must be able to access the curses -graphics package, which it uses to display statistics. Most UNIX -distributions include curses as a standard utility. -

    Both dumb terminals and windowing systems that emulate terminals can -display the scout program's statistics. The display -makes use of reverse video and cursor addressing, so the display environment -must support those features for it to look its best (most windowing systems -do, most dumb terminals do not). Also, set the TERM environment -variable to the correct terminal type, or one with characteristics similar to -the actual ones. For machines running the AIX operating system, the -recommended setting for TERM is vt100, as long as the terminal is -similar to that. For other operating systems, the wider range of -acceptable values includes xterm, xterms, -vt100, vt200, and wyse85. -

    Options -

    -

    initcmd -
    Accommodates the command's use of the AFS command parser, and is -optional. -

    -server -
    Specifies each file server machine running a File Server process to -monitor. Provide each machine's fully qualified hostname unless -the -basename argument is used. In that case, specify only -the unique initial part of each machine name, omitting the domain name suffix -(the basename) common to all the names. It is also acceptable to use -the shortest abbreviated form of a host name that distinguishes it from other -machines, but successful resolution depends on the availability of a name -resolution service (such as the Domain Name Service or a local host table) at -the time the command is issued. -

    -basename -
    Specifies the basename (domain name) suffix common to all of the file -server machine names specified with the -server argument, and is -automatically appended to them. This argument is normally the name of -the cell to which the machines belong. Do not include the period that -separates this suffix from the distinguishing part of each file server machine -name, but do include any periods that occur within the suffix itself. -For example, in the ABC Corporation cell, the proper value is -abc.com rather than -.abc.com. -

    -frequency -
    Indicates how often to probe the File Server processes. Specify a -number of seconds greater than 0 (zero). The default is 60 -seconds. -

    -host -
    Displays the name of the machine that is running the scout -program, in the banner line of the display screen. -

    -attention -
    Defines a list of entries, each of which pairs a statistic and a threshold -value. When the value of the statistic exceeds the indicated threshold -value, it is highlighted (in reverse video) in the display. List the -pairs in any order. The acceptable values are the following: -
      -

    • conn connections. Indicates the number of open -connections to client processes at which to highlight the statistic. -The statistic returns to regular display when the value goes back below the -threshold. There is no default threshold. -

      An example of an acceptable value is conn 300. -

    • disk, which takes one of two types of values: -
        -

      • disk blocks_free. Indicates the number of -remaining free kilobyte blocks at which to highlight the statistic. The -statistic returns to regular display when the value again exceeds the -threshold. There is no default threshold. -

        An example of an acceptable value is disk 5000. -

      • disk percent_full%. Indicates the -percentage of disk usage at which to highlight the statistic. The -statistic returns to regular display when the value goes back below the -threshold. The default threshold is 95%. Acceptable values are -the integers in the range from 0 to 99, followed by the -percent sign (%) to distinguish this type of value from the one -described just previously. -

        An example is disk 90%. -

      -

    • fetch fetch_RPCs. Indicates the cumulative -number of fetch RPCs from client processes at which to highlight the -statistic. The statistic does not return to regular display until the -File Server process restarts, at which time the value returns to zero. -There is no default threshold. -

      Example of a legal value: fetch 6000000 -

    • store store_RPCs. Indicates the cumulative -number of store RPCs from client processes at which to highlight the -statistic. The statistic does not return to regular display until the -File Server process restarts, at which time the value returns to zero. -There is no default threshold. -

      Example of an acceptable value: store 200000 -

    • ws active_client_machines. Indicates the number -of client machines with active open connections at which to highlight the -statistic. An active connection is defined as one over which the File -Server and client have communicated in the last 15 minutes. The -statistic returns to regular display when the value goes back below the -threshold. There is no default threshold. -

      Example of an acceptable value: ws 65 -

    -

    -debug -
    Specifies the pathname of the file into which to write a debugging -trace. Partial pathnames are interpreted relative to the current -working directory. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The scout program can display statistics either in a dedicated -window or on a plain screen if a windowing environment is not -available. For best results, the window or screen needs the ability to -print in reverse video. -

    The scout screen has three main parts: the banner line, -the statistics display region and the message/probe line. -

    The Banner Line -

    By default, the string Scout appears in the banner line at the -top of the window or screen. Two optional arguments place additional -information in the banner line: -

      -

    • The -host flag displays the name of the machine where the -scout program is running. As mentioned previously, this is -useful when running the scout program on several machines but -displaying the results on a single machine. -

      For example, when the -host flag is included and the -scout program is running on the machine -client1.abc.com, the banner line reads as -follows: -

         [client1.abc.com] Scout
      -   
      -
      -

    • The -basename argument displays the indicated basename on the -banner line. For example, including the argument -basename -abc.com argument results in the following banner line: -
         Scout for abc.com
      -   
      -
      -
    -

    The Statistics Display Region -

    In this region, which occupies the majority of the window, the -scout process displays the statistics gathered for each File Server -process. Each process appears on its own line. -

    The region is divided into six columns, labeled as indicated and displaying -the following information: - - -

      -

    • Conn: The first column displays the number of RPC -connections open between the File Server process and client machines. -This number equals or exceeds the number in the Ws column (see the -fourth entry below), because each user on the machine can have several -separate connections open at once, and one client machine can handle several -users. - -

    • Fetch: The second column displays the number of -fetch-type RPCs (fetch data, fetch access list, and fetch status) that client -machines have made to the File Server process since the latter started. -This number is reset to zero each time the File Server process -restarts. - -

    • Store: The third column displays the number of store-type -RPCs (store data, store access list, and store status) that client machines -have made to the File Server process since the latter started. This -number is reset to zero each time the File Server process restarts. - -

    • Ws: The fourth column displays the number of client -machines (Ws stands for workstations) that have communicated with -the File Server process within the last 15 minutes. Such machines are -termed active). This number is likely to be smaller than the -number in the first (Conn) column because a single client machine -can have several connections open to one File Server. - - - -

    • The fifth, unlabeled, column displays the name of the file server machine -on which the File Server process is running. Names of 12 characters or -less are displayed in full; longer names are truncated and an asterisk -(*) appears as the last character in the name. Using the --basename argument is a good way to avoid truncation, but only if -all machine names end in a common string. -

    • Disk attn: The sixth column displays the number of -available kilobyte blocks on each AFS disk partition on the file server -machine. - - - - The display for each partition has the following form: -
         x:free_blocks
      -   
      -
      -

      where x indicates the partition name. For example, -a:8949 specifies that the /vicepa -partition has 8,949 1-KB blocks free. Available space can be displayed -for up to 26 partitions. If the window is not wide enough for all -partition entries to appear on a single line, the scout process -automatically creates multiple lines, stacking the partition entries into -sub-columns within the sixth column. -

      The label on the Disk attn column indicates the -threshold value at which entries in the column become highlighted. By -default, the label is -

         Disk attn: > 95% used
      -   
      -
      -

      because by default the scout program highlights the entry for -any partition that is over 95% full. -

    -

    For all columns except the fifth (file server machine name), the optional --attention argument sets the value at which entries in the column -are highlighted to indicate that a certain value has been exceeded. -Only values in the fifth and Disk attn columns ever become -highlighted by default. -

    If the scout program is unable to access or otherwise obtain -information about a partition, it generates a message similar to the following -example: -

       Could not get information on server fs1.abc.com partition /vicepa
    -   
    -
    -

    The Message/Probe Line -

    The bottom line of the scout screen indicates how many times the -scout program has probed the File Server processes for -statistics. The statistics gathered in the latest probe appear in the -statistics display region. The -frequency argument overrides -the default probe frequency of 60 seconds. -

    Examples -

    See the chapter on monitoring tools in the IBM AFS Administration -Guide, which illustrates the displays that result from different -combinations of options. -

    Privilege Required -

    None -

    Related Information -

    afsmonitor -

    fstrace -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf234.htm b/doc/html/AdminReference/auarf234.htm deleted file mode 100644 index 0aefe301b..000000000 --- a/doc/html/AdminReference/auarf234.htm +++ /dev/null @@ -1,67 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    fs sysname

    -

    Purpose - - - - - - - -

    Reports the CPU/operating system type -

    Synopsis -

    sys 
    -
    -

    Description -

    The fs sysname command displays the string stored in kernel memory that -indicates the local machine's CPU/operating system (OS) type. The -Cache Manager substitutes the string for the @sys variable which can -occur in AFS pathnames; the IBM AFS Quick Beginnings and -IBM AFS Administration Guide explain how using @sys can -simplify cell configuration. -

    The command always reports the value for the local machine only. To -set a new value in kernel memory, use the fs sysname command, which -like this command can also be used to display the current value. -

    Output -

    The machine's system type appears as a text string: -

       system_type
    -   
    -
    -

    Examples -

    The following example shows the output produced on a Sun SPARCStation -running Solaris 5.7: -

       % fs sysname
    -   sun4x_57
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    fs sysname -

    IBM AFS Quick Beginnings -

    IBM AFS Administration Guide -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf235.htm b/doc/html/AdminReference/auarf235.htm deleted file mode 100644 index b746a7893..000000000 --- a/doc/html/AdminReference/auarf235.htm +++ /dev/null @@ -1,124 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    tokens

    - - - - - - -

    Purpose -

    Displays the issuer's tokens -

    Synopsis -

    tokens [-help]
    -   
    -tokens [-h]
    -
    -

    Description -

    The tokens command displays all tokens (tickets) cached on the -local machine for the issuer. AFS server processes require that their -clients present a token as evidence that they have authenticated in the -server's local cell. -
    Note:The tokens.krb version of this command is intended for use -by sites that employ standard Kerberos authentication for their -clients. The tokens.krb command provides all of the -functionality of the tokens command. In addition, it -provides information on the Kerberos tickets stored in the file specified by -the KRBTKFILE environment variable (the /tmp/tktX file, -where X is the number of the user's PAG). -
    -

    Options -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output lists one token for each cell in which the user is -authenticated. The output indicates the -

      -

    • User's AFS UID, if it is available for display. -

    • Server for which the token is valid (normally, afs). -This includes a cell specification. -

    • Day and time the token expires. -
    -

    The output of the Kerberos version of this command, -tokens.krb, also reports the following about the Kerberos -ticket-granting ticket: the ticket owner, which Kerberos ticket-granting -service that issued the ticket (for example, -krbtgt.ABC.COM), and ticket's expiration -date. -

    The string --End of list-- appears at the end of the -output. If the user is not authenticated in any cell, this line is all -that appears. -

    Examples -

    The following example shows the output when the issuer is not authenticated -in any cell. -

       % tokens
    -   Tokens held by the Cache Manager:
    -   
    -      --End of list--
    -   
    -
    -

    The following example shows the output when the issuer is authenticated in -ABC Corporation cell, where he or she has AFS UID 1000. -

       % tokens
    -   Tokens held by the Cache Manager:
    -   
    -   User's (AFS ID 1000) tokens for afs@abc.com [Expires Jan 2 10:00]
    -      --End of list--
    -   
    -
    -

    The following example shows the output when the issuer is authenticated in -the ABC Corporation cell, the State University cell, and the XYZ Company -cell. The user has different AFS UIDs in the three cells. Tokens -for last cell are expired: -

       % tokens
    -   Tokens held by the Cache Manager:
    -      
    -   User's (AFS ID 1000) tokens for afs@abc.com [Expires Jan 3 10:00]
    -   User's (AFS ID 4286) tokens for afs@stateu.edu [Expires Jan 3 1:34]
    -   User's (AFS ID 22) tokens for afs@xyz.com [>>Expired<]
    -      --End of list--
    -   
    -
    -

    The following example shows the output when the issuer uses the -tokens.krb version of the command after authenticating in -the ABC Corporation cell using the klog.krb command. -

       % tokens.krb
    -   Tokens held by the Cache Manager:
    -      
    -   User's (AFS ID 1000) tokens for afs@abc.com [Expires Jan 31 00:09]
    -   User smiths tokens for krbtgt.ABC.COM@abc.com [Expires Jan 31 00:09]
    -      --End of list--
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    klog -

    unlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf236.htm b/doc/html/AdminReference/auarf236.htm deleted file mode 100644 index 4a60eda85..000000000 --- a/doc/html/AdminReference/auarf236.htm +++ /dev/null @@ -1,54 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    translate_et

    - - - -

    Purpose -

    Translates numbered error codes into text messages -

    Synopsis -

    translate_et  <error number>+
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name in full. -

    Description -

    The translate_et command translates each specified error number -into a text message. -

    Options -

    -

    error number -
    Specifies each error number to translate. -
    -

    Examples -

    The following command translates the error numbers 1 and 4: -

       % translate_et 1 4
    -   1 ().1 = Not owner
    -   4 ().4 = Interrupted system call
    -   
    -
    -

    Privilege Required -

    None -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf237.htm b/doc/html/AdminReference/auarf237.htm deleted file mode 100644 index 64470acfd..000000000 --- a/doc/html/AdminReference/auarf237.htm +++ /dev/null @@ -1,325 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    udebug

    - - - -

    Purpose -

    Reports status of Ubik process associated with a database server process -

    Synopsis -

    udebug -servers  <server machine>  [-port <IP port>]  [-long]  [-help]
    -        
    -udebug -s  <server machine>  [-p <IP port>]  [-l]  [-h]
    -        
    -
    -

    Description -

    The udebug command displays the status of the lightweight Ubik -process for the database server process identified by the -port -argument that is running on the database server machine named by the --servers argument. The output identifies the machines where -peer database server processes are running, which of them is the -synchronization site (Ubik coordinator), and the status of the connections -between them. -

    Options -

    -

    -servers -
    Names the database server machine that is running the process for which to -display status information. Provide the machine's IP address in -dotted decimal format, its fully qualified host name (for example, -fs1.abc.com), or the shortest abbreviated form of its -host name that distinguishes it from other machines. Successful use of -an abbreviated form depends on the availability of a name resolution service -(such as the Domain Name Service or a local host table) at the time the -command is issued. -

    -port -
    Identifies the database server process for which to display status -information, either by its process name or port number. Provide one of -the following values. -
    -

    buserver or 7021 for the Backup Server -

    kaserver or 7004 for the Authentication Server -

    ptserver or 7002 for the Protection Server -

    vlserver or 7003 for the Volume Location Server -

    -

    -long -
    Reports additional information about each peer of the machine named by the --servers argument. The information appears by default if -that machine is the synchronization site. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    Several of the messages in the output provide basic status information -about the Ubik process on the machine specified by the -servers -argument, and the remaining messages are useful mostly for debugging -purposes. -

    To check basic Ubik status, issue the command for each database server -machine in turn. In the output for each, one of the following messages -appears in the top third of the output. -

       I am sync site . . . (#_sites servers)
    -   
    -   I am not sync site 
    -
    -

    For the synchronization site, the following message indicates that all -sites have the same version of the database, which implies that Ubik is -functioning correctly. See the following for a description of values -other than 1f. -

       Recovery state 1f
    -
    -

    For correct Ubik operation, the database server machine clocks must agree -on the time. The following messages, which are the second and third -lines in the output, report the current date and time according to the -database server machine's clock and the clock on the machine where the -udebug command is issued. -

       Host's IP_addr time is dbserver_date/time
    -   Local time is local_date/time (time differential skew secs)
    -
    -

    The skew is the difference between the database server machine -clock and the local clock. Its absolute value is not vital for Ubik -functioning, but a difference of more than a few seconds between the -skew values for the database server machines indicates that their -clocks are not synchronized and Ubik performance is possibly hampered. -

    Following is a description of all messages in the output. As noted, -it is useful mostly for debugging and most meaningful to someone who -understands Ubik's implementation. -

    The output begins with the following messages. The first message -reports the IP addresses that are configured with the operating system on the -machine specified by the -servers argument. As previously -noted, the second and third messages report the current date and time -according to the clocks on the database server machine and the machine where -the udebug command is issued, respectively. All subsequent -timestamps in the output are expressed in terms of the local clock rather than -the database server machine clock. -

       Host's addresses are: list_of_IP_addrs
    -   Host's IP_addr time is dbserver_date/time
    -   Local time is local_date/time (time differential skew secs)
    -
    -

    If the skew is more than about 10 seconds, the following message -appears. As noted, it does not necessarily indicate Ubik -malfunction: it denotes clock skew between the database server machine -and the local machine, rather than among the database server machines. -

       ****clock may be bad
    -
    -

    If the udebug command is issued during the coordinator election -process and voting has not yet begun, the following message appears -next. -

       Last yes vote not cast yet
    -
    -

    Otherwise, the output continues with the following messages. -

       Last yes vote for sync_IP_addr was last_vote secs ago (sync site); 
    -   Last vote started vote_start secs ago (at date/time)
    -   Local db version is db_version
    -
    -

    The first indicates which peer this Ubik process last voted for as -coordinator (it can vote for itself) and how long ago it sent the vote. -The second message indicates how long ago the Ubik coordinator requested -confirming votes from the secondary sites. Usually, the -last_vote and vote_start values are the same; a -difference between them can indicate clock skew or a slow network connection -between the two database server machines. A small difference is not -harmful. The third message reports the current version number -db_version of the database maintained by this Ubik process. It -has two fields separated by a period. The field before the period is -based on a timestamp that reflects when the database first changed after the -most recent coordinator election, and the field after the period indicates the -number of changes since the election. -

    The output continues with messages that differ depending on whether the -Ubik process is the coordinator or not. -

      -

    • If there is only one database server machine, it is always the coordinator -(synchronization site), as indicated by the following message. -
         I am sync site forever (1 server)
      -
      -

    • If there are multiple database sites, and the -servers argument -names the coordinator (synchronization site), the output continues with the -following two messages. -
         I am sync site until expiration secs from now (at date/time) (#_sites servers)
      -   Recovery state flags
      -
      -

      The first message reports how much longer the site remains coordinator even -if the next attempt to maintain quorum fails, and how many sites are -participating in the quorum. The flags field in the second -message is a hexadecimal number that indicates the current state of the -quorum. A value of 1f indicates complete database -synchronization, whereas a value of f means that the coordinator -has the correct database but cannot contact all secondary sites to determine -if they also have it. Lesser values are acceptable if the -udebug command is issued during coordinator election, but they -denote a problem if they persist. The individual flags have the -following meanings: -

      -

      0x1 -
      This machine is the coordinator -

      0x2 -
      The coordinator has determined which site has the database with the -highest version number -

      0x4 -
      The coordinator has a copy of the database with the highest version number -

      0x8 -
      The database's version number has been updated correctly -

      0x10 -
      All sites have the database with the highest version number -
      -

      If the udebug command is issued while the coordinator is writing -a change into the database, the following additional message appears. -

         I am currently managing write transaction identifier
      -
      -

    • If the -servers argument names a secondary site, the output -continues with the following messages. -
         I am not sync site
      -   Lowest host lowest_IP_addr was set low_time secs ago
      -   Sync host sync_IP_addr  was set sync_time secs ago
      -
      -

      The lowest_IP_addr is the lowest IP address of any peer from which -the Ubik process has received a message recently, whereas the -sync_IP_addr is the IP address of the current coordinator. If -they differ, the machine with the lowest IP address is not currently the -coordinator. The Ubik process continues voting for the current -coordinator as long as they remain in contact, which provides for maximum -stability. However, in the event of another coordinator election, this -Ubik process votes for the lowest_IP_addr site instead (assuming they -are in contact), because it has a bias to vote in elections for the site with -the lowest IP address. -

    -

    For both the synchronization and secondary sites, the output continues with -the following messages. The first message reports the version number of -the database at the synchronization site, which needs to match the -db_version reported by the preceding Local db version -message. The second message indicates how many VLDB records are -currently locked for any operation or for writing in particular. The -values are nonzero if the udebug command is issued while an -operation is in progress. -

         Sync site's db version is db_version
    -   locked locked pages, writes of them for write
    -
    -

    The following messages appear next only if there are any read or write -locks on database records: -

       There are read locks held
    -   There are write locks held
    -
    -

    Similarly, one or more of the following messages appear next only if there -are any read or write transactions in progress when the udebug -command is issued: -

       There is an active write transaction
    -   There is at least one active read transaction
    -   Transaction tid is tid
    -
    -

    If the machine named by the -servers argument is the -coordinator, the next message reports when the current coordinator last -updated the database. -

        Last time a new db version was labelled was:
    -            last_restart secs ago (at date/time)
    -
    -

    If the machine named by the -servers argument is the -coordinator, the output concludes with an entry for each secondary site that -is participating in the quorum, in the following format. -

       Server( IP_address ): (db db_version)
    -   last vote rcvd last_vote secs ago (at date/time),
    -   last beacon sent last_beacon secs ago (at date/time), last vote was { yes | no }
    -   dbcurrent={ 0 | 1 }, up={ 0 | 1 } beaconSince={ 0 | 1 }
    -
    -

    The first line reports the site's IP address and the version number of -the database it is maintaining. The last_vote field reports -how long ago the coordinator received a vote message from the Ubik process at -the site, and the last_beacon field how long ago the coordinator last -requested a vote message. If the udebug command is issued -during the coordinator election process and voting has not yet begun, the -following messages appear instead. -

       Last vote never rcvd
    -   Last beacon never sent
    -
    -

    On the final line of each entry, the fields have the following -meaning: -

      -

    • dbcurrent is 1 if the site has the database with the -highest version number, 0 if it does not -

    • up is 1 if the Ubik process at the site is -functioning correctly, 0 if it is not -

    • beaconSince is 1 if the site has responded to the -coordinator's last request for votes, 0 if it has not -
    -

    Including the -long flag produces peer entries even when the --servers argument names a secondary site, but in that case only the -IP_address field is guaranteed to be accurate. For example, -the value in the db_version field is usually 0.0, -because secondary sites do not poll their peers for this information. -The values in the last_vote and last_beacon fields indicate -when this site last received or requested a vote as coordinator; they -generally indicate the time of the last coordinator election. -

    Examples -

    This example checks the status of the Ubik process for the Volume Location -Server on the machine afs1, which is the synchronization -site. -

       % udebug afs1 vlserver
    -   Host's addresses are: 192.12.107.33 
    -   Host's 192.12.107.33 time is Wed Oct 27 09:49:50 1999
    -   Local time is Wed Oct 27 09:49:52 1999 (time differential 2 secs)
    -   Last yes vote for 192.12.107.33 was 1 secs ago (sync site); 
    -   Last vote started 1 secs ago (at Wed Oct 27 09:49:51 1999)
    -   Local db version is 940902602.674
    -   I am sync site until 58 secs from now (at Wed Oct 27 09:50:50 1999) (3 servers)
    -   Recovery state 1f
    -   Sync site's db version is 940902602.674
    -   0 locked pages, 0 of them for write
    -   Last time a new db version was labelled was:
    -            129588 secs ago (at Mon Oct 25 21:50:04 1999)
    -   
    -   Server( 192.12.107.35 ): (db 940902602.674)
    -       last vote rcvd 2 secs ago (at Wed Oct 27 09:49:50 1999),
    -       last beacon sent 1 secs ago (at Wed Oct 27 09:49:51 1999), last vote was yes
    -       dbcurrent=1, up=1 beaconSince=1
    -   
    -   Server( 192.12.107.34 ): (db 940902602.674)
    -       last vote rcvd 2 secs ago (at Wed Oct 27 09:49:50 1999),
    -       last beacon sent 1 secs ago (at Wed Oct 27 09:49:51 1999), last vote was yes
    -       dbcurrent=1, up=1 beaconSince=1
    -
    -

    This example checks the status of the Authentication Server on the machine -with IP address 192.12.107.34, which is a secondary -site. The local clock is about 4 minutes behind the database server -machine's clock. -

       % udebug 192.12.107.34 7004
    -   Host's addresses are: 192.12.107.34
    -   Host's 192.12.107.34 time is Wed Oct 27 09:54:15 1999
    -   Local time is Wed Oct 27 09:50:08 1999 (time differential -247 secs)
    -   ****clock may be bad
    -   Last yes vote for 192.12.107.33 was 6 secs ago (sync site); 
    -   Last vote started 6 secs ago (at Wed Oct 27 09:50:02 1999)
    -   Local db version is 940906574.25
    -   I am not sync site
    -   Lowest host 192.12.107.33 was set 6 secs ago
    -   Sync host 192.12.107.33 was set 6 secs ago
    -   Sync site's db version is 940906574.25
    -   0 locked pages, 0 of them for write
    -
    -

    Privilege Required -

    Related Information -

    buserver -

    kaserver -

    ptserver -

    vlserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf238.htm b/doc/html/AdminReference/auarf238.htm deleted file mode 100644 index 9b8d30aaf..000000000 --- a/doc/html/AdminReference/auarf238.htm +++ /dev/null @@ -1,80 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    unlog

    - - - - - - -

    Purpose -

    Discards all of the issuer's tokens -

    Synopsis -

    unlog [-cell <cell name>+]  [-help]
    -   
    -unlog [-c <cell name>+]  [-h]
    -
    -

    Description -

    The unlog command by default discards all tokens that the issuer -currently holds. To discard tokens for certain cells only, name them -with the -cell argument. -

    Since a token pertains to one client machine only, destroying tokens on one -machine has no effect on tokens on another machine. -

    Cautions -

    Specifying one or more cell names can cause a brief authentication outage -during which the issuer has no valid tokens in any cell. This is -because the command actually discards all tokens and then restores the ones -for cells not named by the -cell argument. The outage can -sometimes interrupt the operation of jobs that require authentication. -

    Options -

    -

    -cell -
    Specifies each cell for to discard the token. If this argument is -omitted, the Cache Manager discards all tokens. Provide the fully -qualified domain name, or a shortened form, in which case successful -resolution depends on the availability of a name resolution service (such as -the Domain Name Service or a local host table) at the time the command is -issued. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command discards all tokens. -

       % unlog
    -   
    -
    -

    The following command discards only the tokens for the -abc.com and stateu.edu cells. -

       % unlog -cell abc.com stateu
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    klog -

    tokens -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf239.htm b/doc/html/AdminReference/auarf239.htm deleted file mode 100644 index 1f8e9fb21..000000000 --- a/doc/html/AdminReference/auarf239.htm +++ /dev/null @@ -1,113 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    up

    - - - -

    Purpose -

    Recursively copies the contents of a source directory to a destination -directory. -

    Synopsis -

    up [-v]  [-1]  [-f]  [-r]  [-x]  <source directory>  <destination directory>
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The up command recursively copies the files and subdirectories -in a specified source directory to a specified destination directory. -The command interpreter changes the destination directory and the files and -subdirectories in it in the following ways: -

      -

    • It copies the source directory's access control list (ACL) to the -destination directory and its subdirectories, overwriting any existing -ACLs. -

    • If the issuer is logged on as the local superuser root and has -AFS tokens as a member of the group system:administrators, -then the source directory's owner (as reported by the ls -ld -command) becomes the owner of the destination directory and all files and -subdirectories in it. Otherwise, the issuer's user name is -recorded as the owner. -

    • If a file or directory exists in both the source and destination -directories, the source version overwrites the destination version. The -overwrite operation fails if the first (user) w (write) -mode bit is turned off on the version in the destination directory, unless the --f flag is provided. -

    • The modification timestamp on a file (as displayed by the ls -l -command) in the source directory overwrites the timestamp on a file of the -same name in the destination directory, but the timestamp on an existing -subdirectory in the destination directory remains unchanged. If the -command creates a new subdirectory in the destination directory, the new -subdirectory's timestamp is set to the time of the copy operation, rather -than to the timestamp that the subdirectory has in the source -directory. -
    -

    The up command is idempotent, meaning that if its execution is -interrupted by a network, server machine, or process outage, then a subsequent -reissue of the same command continues from the interruption point, rather than -starting over at the beginning. This saves time and reduces network -traffic in comparison to the UNIX commands that provide similar -functionality. -

    The up command returns a status code of 0 (zero) only -if it succeeds. Otherwise, it returns a status code of 1 -(one). -

    Options -

    -

    -v -
    Prints a detailed trace to the standard output stream as the command -runs. -

    -1 -
    Copies only the files in the top level source directory to the destination -directory, rather than copying recursively through subdirectories. The -source directory's ACL still overwrites the destination -directory's. (This is the number one, not the letter -l.) -

    -f -
    Overwrites existing directories, subdirectories, and files even if the -first (user) w (write) mode bit is turned off on the -version in the destination directory. -

    -r -
    Creates a backup copy of all files overwritten in the destination -directory and its subdirectories, by adding a .old extension -to each filename. -

    -x -
    Sets the modification timestamp on each file to the time of the copying -operation. -

    source directory -
    Names the directory to copy recursively. -

    destination directory -
    Names the directory to which to copy. It does not have to exist -already. -
    -

    Examples -

    The following command copies the contents of the directory dir1 to -directory dir2: -

       % up dir1 dir2
    -   
    -
    -

    Privilege Required -

    The issuer must have the a (administer) permission on -the ACL of both the source and destination directories. -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf240.htm b/doc/html/AdminReference/auarf240.htm deleted file mode 100644 index 523697804..000000000 --- a/doc/html/AdminReference/auarf240.htm +++ /dev/null @@ -1,161 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    upclient

    - - - - - - -

    Purpose -

    Initializes the client portion of the Update Server -

    Synopsis -

    upclient <hostname>  [-crypt]  [-clear]  [-t <retry time>]
    -         [-verbose]*  <dir>+  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The upclient command initializes the client portion of the -Update Server. In the conventional configuration, its binary file is -located in the /usr/afs/bin directory on a file server -machine. -

    The upclient command is not normally issued at the command shell -prompt but rather placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a database server machine as the local superuser -root. -

    The upclient process periodically checks that all files in each -local directory named by the dir argument match the files in the -corresponding directory on the source machine named by the -hostnameargument. If a file does not match, the -upclient process requests the source copy from the -upserver process running on the source machine. -

    By default, the upclient process in the United States edition of -AFS requests that the upserver process encrypt the data before -transferring it, whereas in the international edition it requests unencrypted -transfer. If using the United States edition, use the -clear -flag to request unencrypted transfer if appropriate. (The --crypt flag explicitly sets the default in the United States -edition, and is not available in the international edition.) -

    In the conventional configuration, separate instances of the -upclient process request data from the /usr/afs/bin and -/usr/afs/etc directories, except on machines for which the system -control machine is also the binary distribution machine for the machine's -system type. The conventional names for the separate instances are -upclientbin and upclientetc respectively. -

    The upclient and upserver processes always mutually -authenticate, whether or not the data they pass is encrypted; they use -the key with the highest key version number in the -/usr/afs/etc/KeyFile file to construct a server ticket for mutual -authentication. -

    Cautions -

    Do not use the Update Server to distribute the contents of the -/usr/afs/etc directory if using the international edition of -AFS. The contents of this directory are sensitive and the international -edition of AFS does not include the encryption routines necessary for -encrypting files before transfer across the network. -

    Options -

    -

    hostname -
    Names either the cell's system control machine (if the requested -directory is /usr/afs/etc), or the binary distribution machine for -the local machine's CPU and operating system type (if the requested -directory is /usr/afs/bin). -

    -crypt -
    Requests the transfer of data from the upserver process in -encrypted form. With the United States edition of AFS, use this flag to -set the default explicitly. Provide this flag or the -crypt -flag, but not both. -
    Note:This flag is not available in the international edition of AFS. -
    -

    -clear -
    Requests transfer of data from the upserver process in -unencrypted form. Use this flag to change from the default for the -United States edition of AFS. Provide this flag or the --crypt flag, but not both. -

    -t -
    Specifies how often to check for changes in each specified directory, as a -number of seconds. If this argument is omitted, the default is 300 (5 -minutes). This argument determines the maximum amount of time it takes -for a change made on the source machine to propagate to this machine. -

    -verbose -
    Writes a trace of the upclient process's operations on the -standard output stream, which usually corresponds to the machine -console. Provide one, two, or three instances of the flag; each -additional instance generates increasingly numerous and detailed -messages. -

    dir -
    Names each directory to check for modified files. The conventional -choices are the following: -
      -

    • /usr/afs/bin, in which case the recommended name for the -process (assigned with the -instance argument to the bos -create command) is upclientbin. The hostname -is the binary distribution machine for the local machine's system -type. Use the -clear flag be used for the -/usr/afs/bin directory, since binaries are not particularly -sensitive and encrypting them can take a long time. -

    • /usr/afs/etc, in which case the recommended name for the -process (assigned with the -instance argument to the bos -create command) is upclientetc. The hostname -is the cell's system control machine. Use the -crypt -flag for the /usr/afs/etc directory, since it contains the -KeyFile file and other data vital to cell security. -

      As a reminder, do not use the Update Server to transfer the contents of the -/usr/afs/etc directory if using the international edition of -AFS. -

    -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following bos create command creates an -upclientbin process on the machine -fs4.abc.com that refers to the machine -fs1.abc.com as the source for the -/usr/afs/bin directory (thus fs1.abc.com -is the binary distribution machine for machines of -fs4.abc.com's type). The files in the -/usr/afs/bin directory are distributed every 120 seconds. -The command requests transfer in unencrypted form. -

       % bos create  -server fs4.abc.com -instance upclientbin -type simple   \
    -                 -cmd "/usr/afs/bin/upclient fs1.abc.com -clear  \
    -                 -t 120 /usr/afs/bin"
    -   
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BosConfig -

    bos create -

    upserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf241.htm b/doc/html/AdminReference/auarf241.htm deleted file mode 100644 index a8791d63d..000000000 --- a/doc/html/AdminReference/auarf241.htm +++ /dev/null @@ -1,129 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    upserver

    - - - - - - -

    Purpose -

    Initializes the server portion of the Update Server -

    Synopsis -

    upserver [<directory>+]  [-crypt <directory>+]  [-clear <directory>+]
    -         [-auth <directory>+]  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The upserver command initializes the server portion of the -Update Server (the upserver process). In the conventional -configuration, its binary file is located in the /usr/afs/bin -directory on a file server machine. -

    The upserver command is not normally issued at the command shell -prompt but rather placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a database server machine as the local superuser -root. -

    The upserver command specifies which of the directories on the -local disk are eligible for distribution in response to requests from the -client portion of the Update Server (the upclient process) running -on other machines. If no directories are specified, the -upserver process distributes the contents of any directory on its -local disk. -

    The upserver process can distribute a directory's contents -in encrypted or unencrypted form. By default, it does not use -encryption unless an upclient process requests it (this default is -equivalent to setting the -clear flag). When the --crypt flag is provided, the upserver process only -fulfills requests for encrypted transfer. -

    For the United States edition of AFS, using the -crypt flag -guarantees that the upserver process transfers a directory's -contents only in encrypted form. For the international edition, using -the -crypt flag completely blocks data transfer, because the -international edition of the upclient process cannot request -encrypted transfer (the upclient initialization command does not -include the -crypt flag). -

    The upclient and upserver processes always mutually -authenticate, whether or not the data they pass is encrypted; they use -the key with the highest key version number in the -/usr/afs/etc/KeyFile file to construct a server ticket for mutual -authentication. -

    Cautions -

    Do not use the Update Server to distribute the contents of the -/usr/afs/etc directory if using the international edition of -AFS. The contents of this directory are sensitive and the international -edition of AFS does not include the encryption routines necessary for -encrypting files before transfer across the network. -

    Options -

    -

    directory -
    Names each directory to distribute in unencrypted form (because they -appear before the first -crypt or -clear flag on the -command line). If this argument is omitted, all directories on the -machine's local disk are eligible for distribution. -

    -crypt -
    Precedes a list of one or more directories that the upserver -process distributes only in encrypted form. -

    -clear -
    Precedes a list of one or more directories that the upserver -process distributes in unencrypted form unless the upclient process -requests them in encrypted form. Use this argument only if a list of -directories headed by the -crypt flag precedes it on the command -line. -

    -auth -
    Precedes a list of one or more directories which the upserver -process distributes using a form of encryption that is intermediate in -complexity and security between the unencrypted and encrypted levels set by -the -clear and -crypt arguments. Do not use this -argument, because the upclient process does not have a -corresponding argument that it can use to request data transfer at this -level. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example bos create command defines and starts an -upserver process on the host machine -fs1.abc.com. The last parameter (enclosed in -quotes) instructs the upserver process to distribute the contents -of the /usr/afs/bin directory in unencrypted form and the contents -of the /usr/afs/etc directory in encrypted form. -

       % bos create  -server fs1.abc.com -instance upserver -type simple   \
    -                 -cmd "/usr/afs/bin/upserver /usr/afs/bin -crypt /usr/afs/etc"
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BosConfig -

    bos create -

    upclient -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf242.htm b/doc/html/AdminReference/auarf242.htm deleted file mode 100644 index 631adf30a..000000000 --- a/doc/html/AdminReference/auarf242.htm +++ /dev/null @@ -1,110 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss

    - - - - - - - - - -

    Purpose -

    Introduction to the uss command suite -

    Description -

    The commands in the uss command suite help administrators to -create AFS user accounts more easily and efficiently. If uss -commands are not used, creating an account requires issuing at least six -separate commands to five different AFS servers. -

    There are three main commands in the suite: -

      -

    • The uss add command creates a single complete user account, -based on command line arguments and instructions in a template file. -

    • The uss bulk command creates multiple complete accounts at -once, based on command line arguments, instructions in a template file and a -bulk input file. -

    • the uss delete command removes most parts of a user -account. -
    -

    To obtain help, issue the uss apropos and uss help -commands. -

    Options -

    The following arguments and flags are available on many commands in the -uss suite. The reference page for each command also lists -them, but they are described here in greater detail. -

    -

    -admin <administrator to authenticate> -
    Specifies the AFS user name under which to establish a connection to the -AFS server processes that administer the various parts of a user -account. If it is omitted, the connection is established under the -issuer's effective user ID (his or her identity in the local file -system). Even when this argument is included, UNIX commands that run -during the uss operation (for instance, the UNIX -/etc/chown command) run under the effective user ID. -

    -cell <cell name> -
    Names the cell in which to run the command. It is acceptable to -abbreviate the cell name to the shortest form that distinguishes it from the -other entries in the /usr/vice/etc/CellServDB file on the local -machine. If the -cell argument is omitted, the command -interpreter determines the name of the local cell by reading the following in -order: -
      -

    1. The value of the AFSCELL environment variable -

    2. The local /usr/vice/etc/ThisCell file -
    -

    -dryrun -
    Reports actions that the command interpreter needs to perform when -executing the uss operation, without actually performing -them. Include this flag to verify that the command produces the desired -account configuration. Combine it with the -verbose flag to -yield even more detailed information. Note that the output does not -necessarily reveal all possible problems that can prevent successful execution -of the command, especially those that result from transient server or network -outages. -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -

    -skipauth -
    Bypasses mutual authentication with the AFS Authentication Server, -allowing a site that uses Kerberos instead of the AFS Authentication Server to -substitute that form of authentication. -
    -

    Privilege Required -

    The issuer of a uss command must have all the rights required -for performing the equivalent actions individually. See each -uss command's reference page. -

    Related Information -

    uss Bulk Input File -

    uss Template File -

    uss add -

    uss apropos -

    uss bulk -

    uss delete -

    uss help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf243.htm b/doc/html/AdminReference/auarf243.htm deleted file mode 100644 index 137c348ce..000000000 --- a/doc/html/AdminReference/auarf243.htm +++ /dev/null @@ -1,291 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss add

    - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Creates a user account -

    Synopsis -

    uss add -user <login name>  [-realname <full name in quotes>]
    -        [-pass <initial password>]  
    -        [-pwexpires <password expires in [0..254] days (0 => never)>]
    -        [-server <FileServer for home volume>] 
    -        [-partition <FileServer's disk partition for home volume>] 
    -        [-mount <home directory mount point>]  
    -        [-uid <uid to assign the user>]
    -        [-template <pathname of template file>] 
    -        [-verbose]  [-var <auxiliary argument pairs (Num val)>+] 
    -        [-cell <cell name>]  [-admin <administrator to authenticate>]
    -        [-dryrun]  [-skipauth]  [-overwrite]  [-help]
    -   
    -uss ad -us <login name>  [-r <full name in quotes>]   
    -       [-pas <initial password>] 
    -       [-pw <password expires in [0..254] days (0 => never)>]  
    -       [-se <FileServer for home volume>] 
    -       [-par <FileServer's disk partition for home volume>] 
    -       [-m <home directory mount point>]  [-ui <uid to assign the user>]
    -       [-t <pathname of template file>]  [-ve]  
    -       [-va <auxiliary argument pairs (Num val)>+]  [-c <cell name>]
    -       [-a <administrator to authenticate>]  [-d]  [-sk]  [-o]  [-h]
    -
    -

    Description -

    The uss add command creates entries in the Protection Database -and Authentication Database for the user name specified by the --user argument. By default, the Protection Server -automatically allocates an AFS user ID (UID) for the new user; to specify -an alternate AFS UID, include the -uid argument. If a -password is provided with the -pass argument, it is stored as the -user's password in the Authentication Database after conversion into a -form suitable for use as an encryption key. Otherwise, the string -changeme is assigned as the user's initial password. -

    The other results of the command depend on which instructions and which of -a defined set of variables appear in the template file specified with the --template argument. Many of the command's arguments -supply a value for one of the defined variables, and failure to provide an -argument when the corresponding variable appears in the template file halts -the account creation process at the point where the command interpreter first -encounters the variable in the template file. -

    To create multiple accounts with a single command, use the uss -bulk command. To delete accounts with a single command, use the -uss delete command. -

    Options -

    -

    -user -
    Names the user's Authentication Database and Protection Database -entries. It can include up to eight alphanumeric characters, but not -any of the following characters: : (colon), -@ (at-sign), . (period), space, or -newline. Because it becomes the username (the name under which a user -logs in), it is best not to include shell metacharacters and to obey the -restrictions that many operating systems impose on usernames (usually, to -contain no more than eight lowercase letters). -

    Corresponding variable in the template file: $USER. -

    -realname -
    Specifies the user's full name. If it contains spaces or -punctuation, surround it with double quotes. If not provided, it -defaults to the user name provided with the -user argument. -

    Corresponding variable in the template file: $NAME. Many -operating systems include a field for the full name in a user's entry in -the local password file (/etc/passwd or equivalent), and this -variable can be used to pass a value to be used in that field. -

    -pass -
    Specifies the user's initial password. Although the AFS -commands that handle passwords accept strings of virtually unlimited length, -it is best to use a password of eight characters or less, which is the maximum -length that many applications and utilities accept. If not provided, -this argument defaults to the string changeme. -

    Corresponding variable in the template file: none. -

    -pwexpires -
    Sets the number of days after a user's password is changed that it -remains valid. Provide an integer from the range 1 through -254 to specify the number of days until expiration, or the value -0 to indicate that the password never expires (the default). -

    When the password becomes invalid (expires), the user is unable to -authenticate, but has 30 more days in which to issue the kpasswd -command to change the password (after that, only an administrator can change -it). -

    Corresponding variable in the template file: $PWEXPIRES. -

    -server -
    Names the file server machine on which to create the new user's -volume. It is best to provide a fully qualified hostname (for example, -fs1.abc.com), but an abbreviated form is acceptable -provided that the cell's naming service is available to resolve it at the -time the volume is created. -

    Corresponding variable in the template file: $SERVER. -

    -partition -
    Specifies the partition on which to create the user's volume; it -must be on the file server machine named by the -server -argument. Provide the complete partition name (for example -/vicepa) or one of the following abbreviated forms: -
       /vicepa     =     vicepa      =      a      =      0
    -   /vicepb     =     vicepb      =      b      =      1
    -   
    -
    -

    -

    After /vicepz (for which the index is 25) comes -

       /vicepaa    =     vicepaa     =      aa     =      26
    -   /vicepab    =     vicepab     =      ab     =      27
    -   
    -
    -

    and so on through -

       /vicepiv    =     vicepiv     =      iv     =      255
    -    
    -
    -

    -

    Corresponding variable in the template file: $PART. -

    -mount -
    Specifies the pathname for the user's home directory. Partial -pathnames are interpreted relative to the current working directory. -

    Specify the read/write path to the directory, to avoid the failure that -results from attempting to create a new mount point in a read-only -volume. By convention, the read/write path is indicated by placing a -period before the cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    Corresponding variable in template: $MTPT, but in the template -file's V instruction only. Occurrences of the $MTPT -variable in template instructions that follow the V instruction -take their value from the V instruction's -mount_point field. Thus the value of this command line -argument becomes the value for the $MTPT variable in instructions that follow -the V instruction only if the string $MTPT appears alone in the -V instruction's mount_point field. -

    -uid -
    Specifies a positive integer other than 0 (zero) to assign as the -user's AFS UID. If this argument is omitted, the Protection Server -assigns an AFS UID that is one greater than the current value of the -max user id counter (use the pts -listmax command to display the counter). If including this -argument, it is best first to use the pts examine command to verify -that no existing account already has the desired AFS UID; it one does, -the account creation process terminates with an error. -

    Corresponding variable in the template file: $UID. -

    -template -
    Specifies the pathname of the template file. If this argument is -omitted, the command interpreter searches the following directories in the -indicated order for a file called uss.template: -
      -

    1. The current working directory -

    2. /afs/cellname/common/uss, where -cellname names the local cell -

    3. /etc -
    -

    -

    If the issuer provides a filename other than uss.template -but without a pathname, the command interpreter searches for it in the -indicated directories. If the issuer provides a full or partial -pathname, the command interpreter consults the specified file only; it -interprets partial pathnames relative to the current working directory. -

    -

    If the specified template file is empty (zero-length), the command creates -Protection and Authentication Database entries only. -

    The uss Template File reference page details the file's -format. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -var -
    Specifies values for each of the number variables $1 through $9 that can -appear in the template file. Use the number variables to assign values -to variables in the uss template file that are not part of the -standard set. -

    Corresponding variables in the template file: $1 through $9. -

    For each instance of this argument, provide two parts in the indicated -order, separated by a space: -

      -

    • The integer from the range 1 through 9 that matches -the variable in the template file. Do not precede it with a dollar -sign. -

    • A string of alphanumeric characters to assign as the value of the -variable. -
    -

    See the chapter on uss in the IBM AFS Administration -Guide for further explanation. -

    -cell -
    Specifies the cell in which to run the command. For more details, -see the introductory uss reference page. -

    -admin -
    Specifies the AFS user name under which to establish authenticated -connections to the AFS server processes that maintain the various components -of a user account. For more details, see the introductory -uss reference page. -

    -dryrun -
    Reports actions that the command interpreter needs to perform while -executing the command, without actually performing them. For more -details, see the introductory uss reference page. -

    -skipauth -
    Prevents authentication with the AFS Authentication Server, allowing a -site using Kerberos to substitute that form of authentication. -

    -overwrite -
    Overwrites any directories, files and links that exist in the file system -and for which there are definitions in D, E, -F, L, or S instructions in the template file -named by the -template argument. If this flag is omitted, -the command interpreter prompts once for confirmation that it is to overwrite -all such elements. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The combination of the following example uss add command and -V instruction in a template file called uss.tpl -creates Protection and Authentication Database entries named smith, -and a volume called user.smith with a quota of 2500 kilobyte -blocks, mounted at the pathname -/afs/abc.com/usr/smith. The access control list (ACL) -on the mount point grants smith all rights. -

    The issuer of the uss add command provides only the template -file's name, not its complete pathname, because it resides in the current -working directory. The command and V instruction appear here -on two lines only for legibility; there are no line breaks in the actual -instruction or command. -

       V user.$USER $SERVER.abc.com /vice$PART $1   \
    -       /afs/abc.com/usr/$USER $UID $USER all
    -   
    -   % uss add  -user smith -realname "John Smith" -pass js_pswd -server fs2   \
    -              -partition b -template uss.tpl -var 1 2500
    -   
    -
    -

    Privilege Required -

    The issuer (or the user named by the -admin argument) must -belong to the system:administrators group in the Protection -Database and must have the ADMIN flag turned on in his or her -Authentication Database entry. -

    If the template contains a V instruction, the issuer must be -listed in the /usr/afs/etc/UserList file and must have at least -a (administer) and i (insert) -permissions on the ACL of the directory that houses the new mount -point. If the template file includes instructions for creating other -types of objects (directories, files or links), the issuer must have each -privilege necessary to create them. -

    Related Information -

    UserList -

    uss Template File -

    fs mkmount -

    uss -

    uss bulk -

    uss delete -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf244.htm b/doc/html/AdminReference/auarf244.htm deleted file mode 100644 index 734400f25..000000000 --- a/doc/html/AdminReference/auarf244.htm +++ /dev/null @@ -1,70 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string. -

    Synopsis -

    uss apropos -topic <help string>  [-help]
    -   
    -uss ap -t <help string>  [-h]
    -
    -

    Description -

    The uss apropos command displays the first line of the online -help entry for any uss command that has in its name or short -description the string specified by the -topic argument. -

    To display the syntax for a command, use the uss help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match, in lowercase letters only. -If the string is more than a single word, surround it with double quotes ("") -or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -uss command where the string specified by the -topic -argument is part of the command name or first line. -

    Examples -

    The following command lists all uss commands that include the -word create in their names or short descriptions: -

       % uss apropos create
    -   add: create a new user
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    uss -

    uss help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf245.htm b/doc/html/AdminReference/auarf245.htm deleted file mode 100644 index 77f6d4af1..000000000 --- a/doc/html/AdminReference/auarf245.htm +++ /dev/null @@ -1,135 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss bulk

    - - - - - -

    Purpose -

    Executes multiple uss commands listed in a file -

    Synopsis -

    uss bulk -file <bulk input file>  [-template <pathname of template file>]
    -         [-verbose]  [-cell <cell name>]  
    -         [-admin <administrator to authenticate>] [-dryrun]  
    -         [-skipauth]  [-overwrite]
    -         [-pwexpires <password expires in [0..254] days (0 => never)>]  
    -         [-pipe]  [-help]
    -     
    -uss b -f <bulk input file>  [-t <pathname of template file>]  [-v]  
    -      [-c <cell name>]  [-a <administrator to authenticate>]  [-d]  [-s]  
    -      [-o]  [-pw <password expires in [0..254] days (0 => never)>]  
    -      [-pi]  [-h]
    -
    -

    Description -

    The uss bulk command executes the uss commands listed -in the bulk input file specified with the -file -argument. If the bulk input file includes add instructions -that reference a template file, then the -template argument is -required. -

    To create a single account, use the uss add command. To -delete one or more accounts, use the uss delete command. -

    Options -

    -

    -file -
    Specifies the pathname of the bulk input file. Partial pathnames -are interpreted relative to the current working directory. For details -on the file's format, see uss Bulk Input File. -

    -template -
    Specifies the pathname of the template file for any uss add -commands that appear in the bulk input file. Partial pathnames are -interpreted relative to the current working directory. For details on -the file's format, see uss Template File. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -cell -
    Specifies the cell in which to run the command. For more details, -see the introductory uss reference page. -

    -admin -
    Specifies the AFS user name under which to establish authenticated -connections to the AFS server processes that maintain the various components -of a user account. For more details, see the introductory -uss reference page. -

    -dryrun -
    Reports actions that the command interpreter needs to perform while -executing the command, without actually performing them. For more -details, see the introductory uss reference page. -

    -skipauth -
    Prevents authentication with the AFS Authentication Server, allowing a -site using Kerberos to substitute that form of authentication. -

    -overwrite -
    Overwrites any directories, files and links that exist in the file system -and for which there are also D, E, F, -L, or S instructions in a template file referenced by an -add instruction in the bulk input file. If this flag is -omitted, the command interpreter prompts, once for each add -instruction in the bulk input file, for confirmation that it should overwrite -such elements. Do not include this flag if the bulk input file does not -contain add instructions. -

    -pwexpires -
    Sets the number of days after a user's password is changed that it -remains valid, for each user named by an add instruction in the -bulk input file. Provide an integer from the range 1 through -254 to specify the number of days until expiration, or the value -0 to indicate that the password never expires (the default). -

    When the password becomes invalid (expires), the user is unable to -authenticate, but has 30 more days in which to issue the kpasswd -command to change the password (after that, only an administrator can change -it). -

    -pipe -
    Suppresses the Authentication Server's prompt for the password of the -issuer or the user named by the -admin argument (the Authentication -Server always separately authenticates the creator of an entry in the -Authentication Database). Instead, the command interpreter accepts the -password via the standard input stream, as piped in from another -program. This enables the uss bulk command to run as part of -unattended batch jobs. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example command executes the instructions in the bulk input -file called new_students, which includes add -instructions that refer to the template file -student.template. Both files reside in the current -working directory. -

       % uss bulk new_students student.template
    -   
    -
    -

    Privilege Required -

    The issuer (or the user named by the -admin argument) must have -the privileges necessary to run the commands that correspond to instructions -in the bulk input file. -

    Related Information -

    uss Bulk Input File -

    uss Template File -

    uss -

    uss add -

    uss delete -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf246.htm b/doc/html/AdminReference/auarf246.htm deleted file mode 100644 index 589170d4d..000000000 --- a/doc/html/AdminReference/auarf246.htm +++ /dev/null @@ -1,132 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss delete

    - - - - - - - - - - -

    Purpose -

    Deletes a user account -

    Synopsis -

    uss delete -user <login name>  [-mountpoint <mountpoint for user's volume>] 
    -           [-savevolume]  [-verbose]  [-cell <cell name>]  
    -           [-admin <administrator to authenticate>]  [-dryrun]  
    -           [-skipauth]  [-help]
    -    
    -uss d -u <login name>  [-m <mountpoint for user's volume>]  [-sa]  [-v]
    -      [-c <cell name>]  -a <administrator to authenticate>]  
    -      [-d]  [-sk]  [-h]
    -
    -

    Description -

    The uss delete command removes the Authentication Database and -Protection Database entries for the user named by -user -argument. In addition, it can remove the user's home volume and -associated VLDB entry, a mount point for the volume or both, depending on -whether the -mountpoint and -savevolume options are -provided. -

      -

    • To remove both the volume and mount point, use the -mountpoint -argument to name the user's home directory. It is best to create a -tape backup of a volume before deleting it. Note that other mount -points for the volume are not removed, if they exist. -

    • To remove the mount point only, provide both the -mountpoint -and -savevolume options. -

    • To preserve both the volume and mount point, omit the --mountpoint argument (or both it and the -savevolume -flag). -
    -

    Options -

    -

    -user -
    Names the entry to delete from the Protection and Authentication -Databases. -

    -mountpoint -
    Specifies the pathname to the user's home directory, which is deleted -from the filespace. By default, the volume referenced by the mount -point is also removed from the file server machine that houses it, along with -its Volume Location Database (VLDB) entry. To retain the volume and -VLDB entry, include the -savevolume flag. Partial pathnames -are interpreted relative to the current working directory. -

    Specify the read/write path to the mount point, to avoid the failure that -results from attempting to remove a mount point from a read-only -volume. By convention, the read/write path is indicated by placing a -period before the cell name at the pathname's second level (for example, -/afs/.abc.com). For further discussion of the -concept of read/write and read-only paths through the filespace, see the -fs mkmount reference page. -

    -savevolume -
    Preserves the user's volume and VLDB entry. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -cell -
    Specifies the cell in which to run the command. For more details, -see the introductory uss reference page. -

    -admin -
    Specifies the AFS user name under which to establish authenticated -connections to the AFS server processes that maintain the various components -of a user account. For more details, see the introductory -uss reference page. -

    -dryrun -
    Reports actions that the command interpreter needs to perform while -executing the command, without actually performing them. For more -details, see the introductory uss reference page. -

    -skipauth -
    Prevents authentication with the AFS Authentication Server, allowing a -site using Kerberos to substitute that form of authentication. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes smith's user account from the -abc.com cell. The -savevolume argument -retains the user.smith volume on its file server -machine. -

       % uss delete smith -mountpoint /afs/abc.com/usr/smith -savevolume
    -   
    -
    -

    Privilege Required -

    The issuer (or the user named by -admin argument) must belong to -the system:administrators group in the Protection Database, -must have the ADMIN flag turned on in his or her Authentication -Database entry, and must have at least a (administer) -and d (delete) permissions on the access control list -(ACL) of the mount point's parent directory. If the --savevolume flag is not included, the issuer must also be listed in -the /usr/afs/etc/UserList file. -

    Related Information -

    UserList -

    fs mkmount -

    uss -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf247.htm b/doc/html/AdminReference/auarf247.htm deleted file mode 100644 index 6a9769d4f..000000000 --- a/doc/html/AdminReference/auarf247.htm +++ /dev/null @@ -1,87 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    uss help

    - - - -

    Purpose -

    Displays the syntax of specified uss commands or lists -functional descriptions of all uss commands -

    Synopsis -

    uss help [-topic <help string>+]  [-help]
    -    
    -uss h [-t <help string>+]  [-h]
    -
    -

    Description -

    The uss help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every uss command. -

    To list every uss command whose name or short description -includes a specified keyword, use the uss apropos command. -

    Options -

    -

    -topic -
    Indicates each command for which to display the complete online help -entry. Omit the uss part of the command name, providing only -the operation code (for example, specify bulk, not uss -bulk). If this argument is omitted, the output briefly describes -every uss command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each uss command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the uss -bulk command: -

       % uss help bulk
    -   uss bulk: bulk input mode
    -   Usage: uss bulk -file <bulk input file> [-template <pathname 
    -   of template file>] [-verbose] [-cell <cell name>] [-admin 
    -   <administrator to authenticate>] [-dryrun] [-skipauth] [-overwrite] 
    -   [-pwexpires <password expires in [0..254] days (0 => never)>] [-pipe] 
    -   [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    uss -

    uss apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf248.htm b/doc/html/AdminReference/auarf248.htm deleted file mode 100644 index 47ed1245c..000000000 --- a/doc/html/AdminReference/auarf248.htm +++ /dev/null @@ -1,91 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vldb_check

    - - - -

    Purpose -

    Checks the integrity of the VLDB -

    Synopsis -

    vldb_check -database <vldb_file>  [-uheader]  [-vheader]  [-servers]  
    -           [-entries]  [-verbose]  [-help]
    -   
    -vldb_check -d <vldb_file>  [-u]  [-vh]  [-s]  [-e]  [-ve]  [-h]
    -
    -

    Description -

    The vldb_check command checks the integrity of the Volume -Location Database (VLDB), reporting any errors or corruption it finds. -If there are problems, do not issue any vos commands until the -database is repaired. -

    Cautions -

    The results can be unpredictable if the Volume Location (VL) Server makes -changes to the VLDB while this command is running. Use the bos -shutdown command to shutdown the local vlserver process -before running this command, or before creating a second copy of the -vldb.DB0 file (with a different name) on which to run the -command. -

    Options -

    -

    -database -
    Names the VLDB (copy of the vldb.DB0 file) to -check. If the current working directory is not the location of the -file, provide a pathname, either full or relative to the current working -directory. -

    -uheader -
    Displays information which Ubik maintains in the database's -header. -

    -pheader -
    Displays information which the VL Server maintains in the database's -header. -

    -servers -
    Outputs the server entries from the VLDB, which list the IP addresses -registered for each file server machine in the cell. -

    -entries -
    Outputs every volume entry in the database. The information -includes the volume's name and the volume ID number for each of its -versions. -

    -verbose -
    Reports additional information about the database, including the number of -entries for each type of volume. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If there are errors in the database, the output always reports them on the -standard error stream. If any options other than -database -or -help are provided, the output written to the standard output -stream includes additional information as described for each option in the -preceding Options section of this reference page. The output -is intended for debugging purposes and is meaningful to someone familiar with -the internal structure of the VLDB. -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    vldb.DB0 and vldb.DBSYS1 -

    bos shutdown -

    vlserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf249.htm b/doc/html/AdminReference/auarf249.htm deleted file mode 100644 index 57d6b120f..000000000 --- a/doc/html/AdminReference/auarf249.htm +++ /dev/null @@ -1,114 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vlserver

    - - - - -

    Purpose -

    Initializes the Volume Location Server -

    Synopsis -

    vlserver [-p <lwp processes>]  [-nojumbo]  
    -         [-enable_peer_stats]  [-enable_process_stats]  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The vlserver command initializes the Volume Location (VL) -Server, which runs on every database server machine. In the -conventional configuration, its binary file is located in the -/usr/afs/bin directory on a file server machine. -

    The vlserver command is not normally issued at the command shell -prompt but rather placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a database server machine as the local superuser -root. -

    As it initializes, the VL Server process creates the two files that -constitute the Volume Location Database (VLDB), vldb.DB0 and -vldb.DBSYS1, in the /usr/afs/db directory if they -do not already exist. Use the commands in the vos suite to -administer the database. -

    The VL Server maintains the record of volume locations in the Volume -Location Database (VLDB). When the Cache Manager fills a file request -from an application program, it first contacts the VL Server to learn which -file server machine currently houses the volume that contains the file. -The Cache Manager then requests the file from the File Server process running -on that file server machine. -

    The VL Server records a trace of its activity in the -/usr/afs/logs/VLLog file. Use the bos getlog -command to display the contents of the file. By default, it records on -a minimal number of messages. For instructions on increasing the amount -of logging, see the VLLog reference page. -

    By default, the VL Server runs nine lightweight processes (LWPs). To -change the number, use the -p argument. -

    Options -

    -

    -p -
    Sets the number of server lightweight processes (LWPs) to run. -Provide an integer between 4 and 16. The default -is 9. -

    -nojumbo -
    Prohibits the server from sending or receiving jumbograms. A -jumbogram is a large-size packet composed of 2 to 4 normal Rx data packets -that share the same header. The VL Server uses jumbograms by default, -but some routers are not capable of properly breaking the jumbogram into -smaller packets and reassembling them. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following bos create command creates a vlserver -process on the machine fs2.abc.com that uses six -lightweight processes. Type the command on a single line: -

       % bos create -server fs2.abc.com -instance vlserver -type simple  \
    -                -cmd "/usr/afs/bin/vlserver -p 6"
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BosConfig -

    VLLog -

    vldb.DB0 and vldb.DBSYS1 -

    bos create -

    bos getlog -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf250.htm b/doc/html/AdminReference/auarf250.htm deleted file mode 100644 index a77ed5bdd..000000000 --- a/doc/html/AdminReference/auarf250.htm +++ /dev/null @@ -1,115 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    volinfo

    - - -

    Purpose -

    Produces detailed statistics about one or more volume headers and the -partition that houses them -

    Synopsis -

    volinfo [-online]  [-vnode]  [-date]  [-inode] [-itime]  
    -        [-part  <AFS partition name (default current partition)>+]   
    -        [-volumeid <Volume id>+]  [-header]  [-sizeOnly]  [-fixheader]  
    -        [-saveinodes]  [-orphaned]  [-help]
    -
    -

    Description -

    The volinfo command displays detailed statistics about one or -more volume headers and the partition that houses them. The command -must be issued on a file server machine and by default produces output for -every volume on every AFS server partition on the machine. To display -output for the volumes on one partition only, include the -part -argument. To display output for one volume only, include the --volumeid argument. -

    Options -

    -

    -online -
    Is nonoperational. -

    -vnode -
    Displays a table for each volume which lists the large (directory) and -small (file) vnodes in it, in addition to the default output. -

    -date -
    When combined with the -vnode flag, adds the -ServerModTime field to each vnode entry in the large vnode and -small vnode tables, reporting its most recent modification time. -

    -inode -
    When combined with the -vnode flag, adds the inode -field to each vnode entry in the large vnode and small vnode tables, reporting -the associated inode number. -

    -itime -
    When combined with the -vnode flag, displays a change, -modification, and access timestamp for each of the large vnode and small vnode -tables. -

    -part -
    Specifies the partition that houses each volume for which to produce -output. Use the format /vicepxx, where xx -is one or two lowercase letters. This argument can be omitted if the -current working directory is the mount location for an AFS server -partition; it is not the mount location for an AFS server partition, the -command produces output for every volume on all local AFS server -partitions. -

    -volumeid -
    Specifies the ID number of one volume for which to produce output. -The -part argument must be provided along with this one unless the -current working directory is the mount location for the AFS server partition -that houses the volume. -

    -header -
    Displays statistics about the volume header of each volume, in addition to -the default output. -

    -sizeOnly -
    Displays a single line of output for each volume, reporting the size of -various structures associated with it. The default output is suppressed -and any flags that modify it (such as -vnode) are ignored. -

    -fixheader -
    Repairs damaged inodes in each volume if possible. If there are -any, it reports the action it is taking to repair them. Otherwise, it -produces no output in addition to the default output. -

    -saveinodes -
    Creates a file in the current working directory for each inode in each -volume. Each file is called -TmpInode.vnode_number and contains the inode's -contents. The default output is suppressed and any flags that modify it -(such as -vnode) are ignored. -

    -orphaned -
    Displays a large vnode and small vnode table for each volume, which lists -only orphaned vnodes (vnodes that have no parent). If there are none, -the tables are empty (only the headers appear). -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    By default, the command produces several line of statistics for each -volume. Adding other options produces or substitutes additional -information as described in the preceding Options section of this -reference page. The output is intended for debugging purposes and is -meaningful to someone familiar with the internal structure of volume -headers. -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    Related Information -

    vldb.DB0 and vldb.DBSYS1 -

    volserver -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf251.htm b/doc/html/AdminReference/auarf251.htm deleted file mode 100644 index 5e7758212..000000000 --- a/doc/html/AdminReference/auarf251.htm +++ /dev/null @@ -1,105 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    volserver

    - - - -

    Purpose -

    Initializes the Volume Server component of the fs process -

    Synopsis -

    volserver [-log]  [-p <number of processes>]  
    -          [-udpsize <size of socket buffer in bytes>]  
    -          [-enable_peer_stats]  [-enable_process_stats]  [-help]
    -
    -

    This command does not use the syntax conventions of the AFS command -suites. Provide the command name and all option names in full. -

    Description -

    The volserver command initializes the Volume Server component of -the fs process. In the conventional configuration, its -binary file is located in the /usr/afs/bin directory on a file -server machine. -

    The volserver command is not normally issued at the command -shell prompt but rather placed into a file server machine's -/usr/afs/local/BosConfig file with the bos create -command. If it is ever issued at the command shell prompt, the issuer -must be logged onto a database server machine as the local superuser -root. -

    The Volume Server records a trace of its activity in the -/usr/afs/logs/VolserLog file. Use the bos getlog -command to display the contents of the file. -

    The Volume Server processes the vos commands that administrators -use to create, delete, move, and replicate volumes, as well as prepare them -for archiving to tape or other media. -

    By default, the VL Server runs nine lightweight processes (LWPs). To -change the number, use the -p argument. -

    Options -

    -

    -log -
    Records in the /usr/afs/logs/VolserLog file the names of all -users who successfully initiate a vos command. The Volume -Server also records any file removals that result from issuing the vos -release command with the -f flag. -

    -p -
    Sets the number of server lightweight processes (LWPs) to run. -Provide an integer between 4 and 16. The default -is 9. -

    -udpsize -
    Sets the size of the UDP buffer, which is 64 KB by default. Provide -a positive integer, preferably larger than the default. -

    -enable_peer_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another -machine, a separate record is kept for each type of RPC (FetchFile, GetStatus, -and so on) sent or received. To display or otherwise access the -records, use the Rx Monitoring API. -

    -enable_process_stats -
    Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following bos create command creates a volserver -process on the machine fs2.abc.com: -

       % bos create -server fs2.abc.com -instance volserver -type simple   \
    -                 -cmd /usr/afs/bin/volserver 
    -
    -

    Privilege Required -

    The issuer must be logged in as the superuser root on a file -server machine to issue the command at a command shell prompt. It is -conventional instead to create and start the process by issuing the bos -create command. -

    Related Information -

    BosConfig -

    VolserLog -

    bos create -

    bos getlog -

    vos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf252.htm b/doc/html/AdminReference/auarf252.htm deleted file mode 100644 index fa3a98fe4..000000000 --- a/doc/html/AdminReference/auarf252.htm +++ /dev/null @@ -1,243 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos

    - - - - - - - - - - - - - - - - - - -

    Purpose -

    Introduction to the vos command suite -

    Description -

    The commands in the vos command suite are the administrative -interface to the Volume Server and Volume Location (VL) Server. System -administrators use vos commands to create, move, delete, replicate, -back up and examine volumes, among other operations. The VL Server -automatically records in the Volume Location Database (VLDB) changes in volume -status and location that result from vos commands. -

    The operations invoked by most vos commands are idempotent, -meaning that if an operation is interrupted by a network, server machine, or -process outage, then a subsequent attempt at the same operation continues from -the interruption point, rather than starting over at the beginning of the -operation. Before executing a command, the Volume and VL Servers check -the current state of the volumes and VLDB records to be altered by the -command. If they are already in the desired end state (or a consistent -intermediate state), there is no need to repeat the internal steps that -brought them there. Idempotency does not apply if the command issuer -explicitly interrupts the operation with the <Ctrl-c> command or -another interrupt signal. In that case, the volume is left locked and -the administrator must use the vos unlock command to unlock it -before proceeding. -

    It is important that the VLDB accurately indicate the status of the volumes -on file server machines at all times. The reference pages for the files -vldb.DB0 and -Vvol_ID.vol describe the information -recorded in the VLDB and volume headers, respectively. If a -vos command changes volume status, it automatically records the -change in the corresponding VLDB entry. The most common cause of -discrepancies between the VLDB and volume status on file server machines is -interrupted operations; to restore consistency, use the vos -syncserv and vos syncvldb commands. -

    There are several categories of commands in the vos command -suite: -

      -

    • Commands to create, move, and rename volumes: vos backup, -vos backupsys, vos create, vos move, and -vos rename -

    • Commands to remove VLDB volume records or volumes or both: vos -delentry, vos remove, and vos zap -

    • Commands to edit or display VLDB server entries: vos -changeaddr and vos listaddrs -

    • Commands to create and restore dump files: vos dump and -vos restore -

    • Commands to administer replicated volumes: vos addsite, -vos release, and vos remsite -

    • Commands to display VLDB records, volume headers, or both: vos -examine, vos listvldb, and vos listvol -

    • Commands to display information about partitions that house volumes: -vos listpart and vos partinfo -

    • Commands to restore consistency between the VLDB and volume headers: -vos syncserv and vos syncvldb -

    • Commands to lock and unlock VLDB entries: vos lock, -vos unlock, and vos unlockvldb -

    • A command to report Volume Server status: vos status -

    • Commands to obtain help: vos apropos and vos -help -
    -

    Options -

    The following arguments and flags are available on many commands in the -bos suite. The reference page for each command also lists -them, but they are described here in greater detail. -

    -

    -cell <cell name> -
    Names the cell in which to run the command. It is acceptable to -abbreviate the cell name to the shortest form that distinguishes it from the -other entries in the /usr/vice/etc/CellServDB file on the local -machine. If the -cell argument is omitted, the command -interpreter determines the name of the local cell by reading the following in -order: -
      -

    1. The value of the AFSCELL environment variable -

    2. The local /usr/vice/etc/ThisCell file -
    -

    -

    Do not combine the -cell and -localauth -options. A command on which the -localauth flag is included -always runs in the local cell (as defined in the server machine's local -/usr/afs/etc/ThisCell file), whereas a command on which the --cell argument is included runs in the specified foreign -cell. -

    -help -
    Prints a command's online help message on the standard output -stream. Do not combine this flag with any of the command's other -options; when it is provided, the command interpreter ignores all other -options, and only prints the help message. -

    -localauth -
    Constructs a server ticket using the server encryption key with the -highest key version number in the local /usr/afs/etc/KeyFile -file. The vos command interpreter presents the ticket, which -never expires, to the Volume Server and VL Server during mutual -authentication. -

    Use this flag only when issuing a command on a server machine; client -machines do not usually have a /usr/afs/etc/KeyFile file. -The issuer of a command that includes this flag must be logged on to the -server machine as the local superuser root. The flag is -useful for commands invoked by an unattended application program, such as a -process controlled by the UNIX cron utility or by a cron entry in -the machine's /usr/afs/local/BosConfig file. It is also -useful if an administrator is unable to authenticate to AFS but is logged in -as the local superuser root. -

    Do not combine the -cell and -localauth -options. A command on which the -localauth flag is included -always runs in the local cell (as defined in the server machine's local -/usr/afs/etc/ThisCell file), whereas a command on which the --cell argument is included runs in the specified foreign -cell. Also, do not combine the -localauth and --noauth flags. -

    -noauth -
    Establishes an unauthenticated connection to the Volume Server and VL -Server, in which the servers treat the issuer as the unprivileged user -anonymous. It is useful only when authorization checking is -disabled on the server machine (during the installation of a file server -machine or when the bos setauth command has been used during other -unusual circumstances). In normal circumstances, the servers allow only -privileged users to issue commands that change the status of a volume or VLDB -record, and refuses to perform such an action even if the -noauth -flag is provided. Do not combine the -noauth and --localauth flags. -

    -partition <partition name> -
    Identifies the AFS server partition on a file server machine that houses, -or is to house, the volumes of interest, or about which to list -information. The vos command interpreter accepts any of the -following four name formats: -
       /vicepa     =     vicepa      =      a      =      0
    -   /vicepb     =     vicepb      =      b      =      1
    -   
    -
    -

    -

    After /vicepz (for which the index is 25) comes -

       /vicepaa    =     vicepaa     =      aa     =      26
    -   /vicepab    =     vicepab     =      ab     =      27
    -   
    -
    -

    and so on through -

       /vicepiv    =     vicepiv     =      iv     =      255
    -    
    -
    -

    The -frompartition and -topartition arguments to the -vos move command also accept this notation. -

    -server <machine name> -
    Identifies the file server machine that houses, or is to house, the -volumes or AFS server partitions of interest. Provide the -machine's IP address in dotted decimal format, its fully qualified host -name (for example, fs1.abc.com), or the shortest -abbreviated form of its host name that distinguishes it from other -machines. Successful use of an abbreviated form depends on the -availability of a name resolution service (such as the Domain Name Service or -a local host table) at the time the command is issued. -

    The -fromserver and -toserver arguments to the -vos move command also accept these name formats. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -
    -

    Privilege Required -

    To issue most vos commands, the issuer must be listed in the -/usr/afs/etc/UserList file on each server machine that houses or is -to house an affected volume, and on each database server machine. The -most predictable performance results if all database server and file server -machines in the cell share a common UserList file. -Alternatively, if the -localauth flag is included, the issuer must -be logged on to a server machine as the local superuser -root. -

    To issue a vos command that only displays information, no -privilege is required. -

    Related Information -

    CellServDB (server version) -

    UserList -

    vos addsite -

    vos apropos -

    vos backup -

    vos backupsys -

    vos changeaddr -

    vos create -

    vos delentry -

    vos dump -

    vos examine -

    vos help -

    vos listaddrs -

    vos listpart -

    vos listvldb -

    vos listvol -

    vos lock -

    vos move -

    vos partinfo -

    vos release -

    vos remove -

    vos remsite -

    vos rename -

    vos restore -

    vos status -

    vos syncserv -

    vos syncvldb -

    vos unlock -

    vos unlockvldb -

    vos zap -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf253.htm b/doc/html/AdminReference/auarf253.htm deleted file mode 100644 index 0a5d15fb0..000000000 --- a/doc/html/AdminReference/auarf253.htm +++ /dev/null @@ -1,120 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos addsite

    - - - - - - -

    Purpose -

    Adds a read-only site definition to a volume's VLDB entry -

    Synopsis -

    vos addsite -server <machine name for new site>
    -            -partition <partition name for new site>
    -            -id <volume name or ID>  [-cell <cell name>]  
    -            [-noauth]  [-localauth]  [-verbose]  [-help]
    -   
    -vos ad -s <machine name for new site>  -p <partition name for new site>
    -       -i <volume name or ID>  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos addsite command defines a new read-only site (partition -on a file server machine, specified by the -server and --partition arguments) in the Volume Location Database (VLDB) entry -of the read/write volume named by the -id argument. When the -vos release command is next issued against the read/write volume, a -read-only copy of it is distributed to all of the read-only sites, including -the newly defined one. -

    Cautions -

    A volume's VLDB entry accommodates a maximum number of site -definitions, as defined in the IBM AFS Release Notes. The -site housing the read/write and backup versions of the volume counts as one -site, and each read-only site counts as an additional site (even the read-only -site defined on the same file server machine and partition as the read/write -site counts as a separate site). The limit in the VLDB entry -effectively determines the maximum number of copies of the volume that are -available to AFS clients. -

    Attempts to create additional sites by using this command fail with an -error. -

    Options -

    -

    -server -
    Identifies the file server machine where the read-only volume is to -reside. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -partition -
    Identifies the partition where the read-only volume is to reside, on the -file server machine named by the -server argument. Provide -the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -id -
    Specifies either the complete name or volume ID number of the read/write -source volume. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example, appropriate in the State University cell, defines a -read-only site for the cell's root.afs volume. -

       % vos addsite -server sv7.stateu.edu -partition /vicepb -id root.afs
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos examine -

    vos release -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf254.htm b/doc/html/AdminReference/auarf254.htm deleted file mode 100644 index 9c46bbe88..000000000 --- a/doc/html/AdminReference/auarf254.htm +++ /dev/null @@ -1,72 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos apropos

    - - - -

    Purpose -

    Displays each help entry containing a keyword string -

    Synopsis -

    vos apropos -topic <help string>  [-help]
    -    
    -vos ap -t <help string>  [-h]
    -
    -

    Description -

    The vos apropos command displays the first line of the online -help entry for any vos command that has in its name or short -description the string specified by the -topic argument. -

    To display the syntax for a command, use the vos help -command. -

    Options -

    -

    -topic -
    Specifies the keyword string to match. Use lowercase letters only, -except for the acronym VLDB. If the string is more than a -single word, surround it with double quotes ("") or other delimiters. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first line of a command's online help entry names it and briefly -describes its function. This command displays the first line for any -vos command where the string specified with the -topic -argument is part of the command name or first line. -

    Examples -

    The following command displays all vos commands that include the -word lock in their names or short descriptions: -

       % vos apropos lock
    -   lock: lock VLDB entry for a volume
    -   unlock: release lock on VLDB entry for a volume
    -   unlockvldb: unlock all the locked entries in the VLDB
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    vos -

    vos help -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf255.htm b/doc/html/AdminReference/auarf255.htm deleted file mode 100644 index 54d055e26..000000000 --- a/doc/html/AdminReference/auarf255.htm +++ /dev/null @@ -1,106 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos backup

    - - - - - - - - - -

    Purpose -

    Creates a backup volume for a single read/write volume -

    Synopsis -

     
    -vos backup -id <volume name or ID>  [-cell <cell name>]  [-noauth]  
    -           [-localauth]  [-verbose]  [-help]
    -   
    -vos backup -i <volume name or ID>  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos backup command clones the indicated read/write volume to -create a backup version, placing it at the same site as the read/write -version. The backup volume's name is the same as the read/write -source's with the addition of the .backup -extension. Its volume ID number is the one allocated for it in the -Volume Location Database (VLDB) when the read/write source was created with -the vos create command. If a backup version already exists, -the new clone replaces it. -

    To create a backup version of multiple volumes, use the vos -backupsys command. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of the read/write -source volume. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The following message confirms that the command succeeded: -

       Created backup volume for volume name
    -   
    -
    -

    Examples -

    The following example creates a backup version of the volume -user.smith. -

       % vos backup user.smith
    -   Created backup volume for user.smith
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos backupsys -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf256.htm b/doc/html/AdminReference/auarf256.htm deleted file mode 100644 index 316a5502c..000000000 --- a/doc/html/AdminReference/auarf256.htm +++ /dev/null @@ -1,270 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos backupsys

    - - - - - - - -

    Purpose -

    Creates a backup volume for several read/write volumes -

    Synopsis -

    vos backupsys [-prefix <common prefix on volume(s)>+]  
    -              [-server <machine name>]  [-partition <partition name>]  
    -              [-exclude]  [-xprefix <negative prefix on volume(s)>+] 
    -              [-dryrun]  [-cell <cell name>]  [-noauth]  [-localauth]
    -              [-verbose]  [-help] 
    -    
    -vos backups [-pr <common prefix on volume(s)>+]  [-s <machine name>] 
    -            [-pa <partition name>]  [-e]  [-x <negative prefix on volume(s)>+]  
    -            [-d]  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos backupsys command clones each indicated read/write -volume to create a backup version, placing each clone at the same site as its -read/write source version. It assigns each clone the same name as the -read/write source, adding a .backup extension. It -assigns the volume ID number already allocated for the backup version in the -Volume Location Database (VLDB). If a backup version already exists for -a given volume, the new clone replaces it. -

    To clone every read/write volume listed in the VLDB, omit all of the -command's options. Otherwise, combine the command's options -to clone various groups of volumes. The options use one of two basic -criteria to select volumes: location (the -server and --partition arguments) or presence in the volume name of one of a -set of specified character strings (the -prefix, --exclude, and -xprefix options). -

    To clone only volumes that reside on one file server machine, include the --server argument. To clone only volumes that reside on one -partition, combine the -server and -partition -arguments. The -partition argument can also be used alone to -clone volumes that reside on the indicated partition on every file server -machine. These arguments can be combined with those that select volumes -based on their names. -

    Combine the -prefix, -exclude, and --xprefix options (with or without the -server and --partition arguments) in the indicated ways to select volumes based -on character strings contained in their names: -

      -

    • To clone every read/write volume at the specified location whose name -includes one of a set of specified character strings (for example, begins with -user. or includes the string afs), use the --prefix argument or combine the -xprefix and --exclude options. -

    • To clone every read/write volume at the specified location except those -whose name includes one of a set of specified character strings, use the --xprefix argument or combine the -prefix and --exclude options. -

    • To clone every read/write volume at the specified location whose name -includes one of one of a set of specified character strings, except those -whose names include one of a different set of specified character strings, -combine the -prefix and -xprefix arguments. The -command creates a list of all volumes that match the -prefix -argument and then removes from the list the volumes that match the --xprefix argument. For effective results, the strings -specified by the -xprefix argument must designate a subset of the -volumes specified by the -prefix argument. -

      If the -exclude flag is combined with the -prefix and --xprefix arguments, the command creates a list of all volumes that -do not match the -prefix argument and then adds to the list any -volumes that match the -xprefix argument. As when the --exclude flag is not used, the result is effective only if the -strings specified by the -xprefix argument designate a subset of -the volumes specified by the -prefix argument. -

    -

    The -prefix and -xprefix arguments both accept -multiple values, which can be used to define disjoint groups of -volumes. Each value can be one of two types: -

      -

    1. A simple character string, which matches volumes whose name begin with the -string. All characters are interpreted literally (that is, characters -that potentially have special meaning to the command shell, such as the -period, have only their literal meaning). -

    2. A regular expression, which matches volumes whose names contain the -expressions. Place a caret ( ^ ) at the -beginning of the expression, and enclose the entire string in single quotes -(' '). Explaining regular -expressions is outside the scope of this reference page; see the UNIX -manual page for regexp(5) or (for a brief introduction) the -backup addvolentry reference page in this document. As an -example, the following expression matches volumes that have the string -aix anywhere in their names: -
         -prefix  '^.*aix'
      -
      -
    -

    To display a list of the volumes to be cloned, without actually cloning -them, include the -dryrun flag. To display a statement that -summarizes the criteria being used to select volume, include the --verbose flag. -

    This command can be used to clone a single read/write volume; specify -its complete name as the -prefix argument. However, it is -more efficient to use the vos backup command, which employs a more -streamlined technique for finding a single volume. -

    Options -

    -

    -prefix -
    Specifies one or more simple character strings or regular expressions of -any length; a volume whose name includes the string is placed on the set -of volumes to be cloned. Include field separators (such as periods) if -appropriate. This argument can be combined with any combination of the --server, -partition, -exclude, and --xprefix options. -

    -server -
    Identifies the file server machine where each read/write source volume -resides. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    This argument can be combined with any combination of the --prefix, -partition, -exclude, and --xprefix options. -

    -partition -
    Identifies the partition where each read/write source volume -resides. Provide the partition's complete name with preceding -slash (for example, /vicepa) or use one of the three acceptable -abbreviated forms. For details, see the introductory reference page for -the vos command suite. -

    This argument can be combined with any combination of the --prefix, -server, -exclude, and --xprefix options. -

    -exclude -
    Reverses the meaning of the -prefix or -xprefix -argument. This flag can be combined with any combination of the --prefix, -server, -partition, and --xprefix options. -

    -xprefix -
    Specifies a simple character string or regular expression of any -length; a volume whose name includes the string is removed from the set -of volumes to be cloned. Include field separators (such as periods) if -appropriate. This argument can be combined with any combination of the --prefix, -server, -partition, and --exclude options. -

    -dryrun -
    Displays on the standard output stream a list of the volumes to be cloned, -without actually cloning them. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The command generates the following messages on the standard output stream -to confirm that the operation was successful: -

       done
    -   Total volumes backed up: number_cloned; failed to backup: failures
    -
    -

    If the -dryrun flag is included, a list of the volumes to be -backed up precedes the standard confirmation messages. -

    If the -verbose flag is included but not the -dryrun -flag, the following messages appear for each volume. The output -concludes with the standard confirmation messages. -

       Creating backup volume for volume_name on date/time
    -   {Recloning backup volume | Creating a new backup clone} backup_volumeID . . .done
    -
    -

    If both the -dryrun and -verbose flags are included, -the output begins with a statement summarizing the criteria being used to -select the volumes, followed by a list of the volumes and the standard -confirmation messages. The format of the criteria summary statement -depends on which other options are provided: -

      -

    • If only the -prefix argument is provided, or the --xprefix and -exclude options are combined: -
         Would have backed up volumes which are prefixed with string [orstring] . .
      -
      -

    • If only the -xprefix argument is provided, or the --prefix and -exclude options are combined: -
         Would have backed up volumes which are not prefixed with string [norstring] . .
      -
      -

    • If the -prefix and -xprefix arguments are -combined: -
         Would have backed up volumes which are prefixed with string [orstring]  \
      -      removing those which are prefixed with  x_string [orx_string] . .
      -
      -

    • If the -prefix, -xprefix, and -exclude -options are provided: -
         Would have backed up volumes which are not prefixed with string [norstring]  \
      -      adding those which are prefixed with  x_string [orx_string] . .
      -
      -
    -

    Examples -

    The following example creates a backup version of every read/write volume -listed in the cell's VLDB whose name begins with the string -user. -

       % vos backupsys -prefix user
    -   
    -
    -

    The following example, appropriate in the ABC Corporation cell, creates a -backup version of every read/write volume on the file server machine -fs3.abc.com. -

       % vos backupsys -server fs3.abc.com
    -   
    -
    -

    The following example, appropriate in the State University cell, creates a -backup version of every read/write volume on the file server machine -db1.stateu.edu except those whose name includes the -string temp. -

       % vos backupsys  -server db1.stateu.edu -prefix '^.*temp'
    -   
    -
    -

    The following example creates a backup version of every volume listed in -the cell's VLDB, excluding those whose names contain the string -source, but including those whose names contain the string -source.current. -

       % vos backupsys  -prefix '^.*source' -exclude -xprefix '^.*source\.current'
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    backup addvolentry -

    vos -

    vos backup -

    UNIX manual page for regexp(5) -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf257.htm b/doc/html/AdminReference/auarf257.htm deleted file mode 100644 index a9c20b424..000000000 --- a/doc/html/AdminReference/auarf257.htm +++ /dev/null @@ -1,129 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos changeaddr

    - - -

    Purpose -

    Changes or removes a file server machine's entry in the VLDB -

    Synopsis -

    vos changeaddr -oldaddr <original IP address>  [-newaddr <new IP address>] 
    -               [-remove]  [-cell <cell name>]  [-noauth]  [-localauth]  
    -               [-verbose]  [-help]
    -    
    -vos ch -o <original IP address>  [-ne <new IP address>]  [-r]  
    -       [-c <cell name>]  [-no]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos changeaddr command removes a server entry from the -Volume Location Database (VLDB) when the -remove flag is combined -with the -oldaddr argument. There must be no VLDB entries -that list the machine as a site for any version of a volume (if necessary, use -the vos move or vos remove command to more or remove -volumes). It is appropriate to remove a VLDB server entry when removing -the corresponding file server machine from service; this is the only -recommended use of the command. -

    To display all VLDB server entries, use the vos listaddrs -command. -

    Cautions -

    Combining the command's -oldaddr and -newaddr -arguments is no longer the appropriate way to change the IP address registered -for a file server machine. Furthermore, if a machine is multihomed and -its server entry includes several addresses, then the address specified with -the -newaddr argument replaces all of the addresses currently -listed in the server entry that includes the address specified by the --oldaddr argument. This effectively makes the machine -single-homed with respect to AFS operations, which is probably not the desired -result. -

    The recommended method for changing the IP addresses in a server entry is -instead to restart the fs process group (which includes the File -Server) after using the utilities provided by the operating system to -reconfigure the machine's network interfaces. For a description of -how the File Server constructs and registers a list of its network interfaces -in the VLDB, see the reference page for the sysid file. -

    If, counter to recommended usage, the command is used to change the IP -address in a server entry, it does not also change the names of machine -entries in the Protection Database. Operations fail when they refer to -a protection group that has an obsolete IP address in it. Use the -pts rename command to change the names of machine entries that -correspond to the addresses changed with this command. Changing the -address of a database server machine also requires updating the client and -server versions of the CellServDB file on every machine. -

    Options -

    -

    -oldaddr -
    Specifies the IP address currently registered for the file server machine -in the VLDB server entry. If there are multiple addresses registered -for a multihomed machine, use any of them to identify the server entry. -

    -newaddr -
    Specifies the new IP address that replaces all currently registered -addresses. -

    -remove -
    Removes from the VLDB the server entry that includes the address specified -by the -oldaddr argument. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes the VLDB server entry that includes the IP -address 192.12.107.214. -

       % vos changeaddr -oldaddr 192.12.107.214 -remove
    -   
    -
    -

    Privilege Required -

    Issuer must be listed in the /usr/afs/etc/UserList file on the -machine specified with the -oldaddr argument and on each database -server machine. -

    Related Information -

    CellServDB (client version) -

    CellServDB (server version) -

    UserList -

    sysid -

    fileserver -

    pts rename -

    vos -

    vos listaddrs -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf258.htm b/doc/html/AdminReference/auarf258.htm deleted file mode 100644 index 7a1e12103..000000000 --- a/doc/html/AdminReference/auarf258.htm +++ /dev/null @@ -1,165 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos create

    - - - - - - - - - - - - - - - - - - -

    Purpose -

    Creates a read/write volume and associated VLDB entry -

    Synopsis -

    vos create -server <machine name>  -partition <partition name>
    -           -name <volume name>  [-maxquota <initial quota (KB)>]  
    -           [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos cr -s <machine name>  -p <partition name>  -na <volume name>
    -       [-m <initial quota (KB)>]  [-c <cell name>]  [-no]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos create command creates a read/write volume with the name -specified by the -name argument at the site specified by the --server and -partition arguments. In addition, -the command allocates or sets the following: -

      -

    • Volume ID numbers for the read/write volume and its associated read-only -and backup volumes (this command does not actually create the latter two types -of volume). A volume ID number is an identification number guaranteed -to be unique within a cell. - - - - - - -

    • An access control list (ACL) associated with the volume's root -directory, which takes the same name as volume's mount point when the -volume is mounted with the fs mkmount command. An entry that -grants all seven permissions to the members of the -system:administrators group is automatically placed on the -ACL. (In addition, the File Server by default always implicitly grants -the l (lookup) and a (administer) -permissions on every ACL to members of the -system:administrators group, even when the group does not -appear on an ACL; use the -implicit argument to the -fileserver initialization command to alter the set of rights on a -server-by-server basis if desired.) -

    • The volume's space quota, set to 5000 kilobyte blocks by -default. Use the -maxquota argument to specify a different -quota, or use the fs setquota command to change the volume's -quota after mounting the volume with the fs mkmount command. -
    -

    The volume is empty when created. To access it via the Cache -Manager, mount it in the file space by using the fs mkmount -command. -

    Options -

    -

    -server -
    Identifies the file server machine on which to create the read/write -volume. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -partition -
    Identifies the partition on which to create the read/write volume, on the -file server machine specified by the -server argument. -Provide the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -name -
    Specifies a name for the read/write volume. The maximum length is -22 characters, which can include any alphanumeric or punctuation -character. By convention, periods separate the fields in a name. -Do not apply the .backup or .readonly -extension to a read/write volume name; they are reserved for the Volume -Server to add to the read/write name when creating those backup and read-only -volumes respectively. -

    -maxquota -
    Specifies the maximum amount of disk space the volume can use, as a number -of kilobyte blocks (a value of 1024 is one megabyte). The -value 0 (zero) grants an unlimited quota, but the size of the disk -partition that houses the volume places an absolute limit on its size. -If this argument is omitted, the default value is 5000. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The Volume Server produces the following message to confirm that it created -the volume: -

       Volume volume_ID created on partition partition_name of machine_name
    -   
    -
    -

    Examples -

    The following command creates the read/write volume -user.pat on the /vicepf partition of the file -server machine fs4.abc.com. -

       % vos create -server fs4.abc.com -partition /vicepf -name user.pat
    -   Volume user.pat created on partition /vicepf of fs4.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf259.htm b/doc/html/AdminReference/auarf259.htm deleted file mode 100644 index e287f2214..000000000 --- a/doc/html/AdminReference/auarf259.htm +++ /dev/null @@ -1,171 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos delentry

    - - - - -

    Purpose -

    Removes a volume entry from the VLDB. -

    Synopsis -

    vos delentry [-id <volume name or ID>+]
    -             [-prefix <prefix of volume whose VLDB entry is to be deleted>] 
    -             [-server <machine name>]  [-partition <partition name>]  
    -             [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  [-help]
    -     
    -vos de [-i <volume name or ID>+]
    -       [-pr <prefix of volume whose VLDB entry is to be deleted>]  
    -       [-s <machine name>]  [-pa <partition name>]  [-c <cell name>] 
    -       [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos delentry command removes the Volume Location Database -(VLDB) entry for each specified volume. A specified volume can be any -of the three types (read/write, read-only, or backup), but the entire entry is -removed no matter which type is provided. The command has no effect on -the actual volumes on file server machines, if they exist. -

    This command is useful if a volume removal operation did not update the -VLDB (perhaps because the vos zap command was used), but the system -administrator does not feel it is necessary to use the vos syncserv -and vos syncvldb commands to synchronize an entire file server -machine. -

    To remove the VLDB entry for a single volume, use the -id -argument. To remove groups of volumes, combine the -prefix, --server, and -partition arguments. The following -list describes how to remove the VLDB entry for the indicated group of -volumes: -

      -

    • For every volume whose name begins with a certain character string (for -example, sys. or user.): use the --prefix argument. -

    • Every volume for which the VLDB lists a site on a certain file server -machine: specify the file server name with the -server -argument. -

    • Every volume for which the VLDB lists a site on a partition of the same -name (for instance, on the /vicepa partition on any file server -machine): specify the partition name with the -partition -argument. -

    • Every volume for which the VLDB lists a site one a specific partition of a -file server machine: specify both the -server and --partition arguments. -

    • Every volume whose name begins with a certain prefix and for which the -VLDB lists a site on a file server machine: combine the --prefix and -server arguments. Combine the --prefix argument with the -partition argument, or both -the -server and -partition arguments, to remove a more -specific group of volumes. -
    -

    Cautions -

    Do not use this command to remove a volume in normal circumstances; it -does not remove a volume from the file server machine, and so is likely to -make the VLDB inconsistent with state of the volumes on server -machines. Use the vos remove command to remove both the -volume and its VLDB entry. -

    Options -

    -

    -id -
    Specifies the complete name or the volume ID number of each volume for -which to remove the VLDB entry. The entire entry is removed, regardless -of whether the read/write, read-only, or backup version is indicated. -Provide this argument or some combination of the -prefix, --server, and -partition arguments. -

    -prefix -
    Specifies a character string of any length; the VLDB entry for a -volume whose name begins with the string is removed. Include field -separators (such as periods) if appropriate. Combine this argument with -the -server argument, -partition argument, or -both. -

    -server -
    Identifies a file server machine; if a volume's VLDB entry lists -a site on the machine, the entry is removed. Provide the machine's -IP address or its host name (either fully qualified or using an unambiguous -abbreviation). For details, see the introductory reference page for the -vos command suite. -

    Combine this argument with the -prefix argument, the --partition argument, or both. -

    -partition -
    Identifies a partition; if a volume's VLDB entry lists a site on -the partition, the entry is removed. Provide the partition's -complete name with preceding slash (for example, /vicepa) or use -one of the three acceptable abbreviated forms. For details, see the -introductory reference page for the vos command suite. -

    Combine this argument with the -prefix argument, the --server argument, or both. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The following message confirms the success of the command by indicating how -many VLDB entries were removed. -

       Deleted number VLDB entries
    -   
    -
    -

    Examples -

    The following command removes the VLDB entry for the volume -user.temp. -

       % vos delentry user.temp
    -   
    -
    -

    The following command removes the VLDB entry for every volume whose name -begins with the string test and for which the VLDB lists a site on -the file server machine fs3.abc.com. -

       % vos delentry -prefix test -server fs3.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos remove -

    vos syncserv -

    vos syncvldb -

    vos zap -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf260.htm b/doc/html/AdminReference/auarf260.htm deleted file mode 100644 index 2e3374e40..000000000 --- a/doc/html/AdminReference/auarf260.htm +++ /dev/null @@ -1,193 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos dump

    - - - - - - - - - - - -

    Purpose -

    Converts a volume into ASCII format and writes it to a file -

    Synopsis -

    vos dump -id <volume name or ID>  [-time <dump from time>]  [-file <dump file>]  
    -         [-server <server>]  [-partition <partition>]  [-cell <cell name>]  
    -         [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos du -i <volume name or ID>  [-t <dump from time>]  [-f <dump file>]  
    -       [-s <server>]  [-p <partition>]  [-c <cell name>]  
    -       [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos dump command converts the contents of the indicated -volume, which can be read/write, read-only or backup, into ASCII -format. The Volume Server writes the converted contents to the file -named by the -file argument, or to the standard output -stream. In the latter case, the output can be directed to a named pipe, -which enables interoperation with third-party backup utilities. -

    To dump the complete contents of a volume (create a full dump), -omit the -time argument or specify the value 0 (zero) -for it. To create an incremental dump, which includes only -the files and directories in the volume that have modification timestamps -later than a certain time, specify a date and time as the value for the --time argument. -

    By default, the vos command interpreter consults the Volume -Location Database (VLDB) to learn the volume's location, so the --server and -partition arguments are not -required. If the -id argument identifies a read-only volume -that resides at multiple sites, the command dumps the version from just one of -them (normally, the one listed first in the volume's VLDB entry as -reported by the vos examine or vos listvldb -command). To dump the read-only volume from a particular site, use the --server and -partition arguments to specify the -site. To bypass the VLDB lookup entirely, provide a volume ID number -(rather than a volume name) as the value for the -id argument, -together with the -server and -partition -arguments. This makes it possible to dump a volume for which there is -no VLDB entry. -

    During the dump operation, the volume is inaccessible both to Cache -Managers and to other volume operations. Dumping a volume does not -otherwise affect its status on the partition or its VLDB entry. -

    To restore a dumped volume back into AFS, use the vos restore -command. -

    Cautions -

    Support for incremental dumps is provided to facilitate interoperation with -third-party backup utilities. The vos dump command does not -provide any of the administrative facilities of an actual backup system, so -the administrator must keep manual records of dump times and the relationship -between full and incremental dumps of a volume. For a volume's -contents to be consistent after restoration of incremental dumps, there must -be no gap between the time at which a prior dump of the volume was created and -the value of the -time argument to the vos dump command -that creates the incremental dump. More specifically, for a read/write -volume, the -time argument must specify the time that the prior -dump was performed, and for a read-only or backup volume it must specify the -time that the volume was last released (using the vos release -command) or cloned (using the vos backup or vos -backupsys command) prior to dumping it. The parent dump can be -either a full dump or another incremental dump. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of the read/write, -read-only, or backup volume to dump. -

    -time -
    Specifies whether the dump is full or incremental. Omit this -argument to create a full dump, or provide one of three acceptable -values: -
      -

    • The value 0 (zero) to create a full dump. -

    • A date in the format -mm/dd/yyyy (month, day and -year) to create an incremental dump that includes only files and directories -with modification timestamps later than midnight (12:00 -a.m.) on the indicated date. Valid values for the year -range from 1970 to 2037; higher values are not -valid because the latest possible date in the standard UNIX representation is -in 2038. The command interpreter automatically reduces later dates to -the maximum value. An example is 01/13/1999. -

    • A date and time in the format -"mm/dd/yyyy -hh:MM" to create an incremental -dump that includes only files and directories with modification timestamps -later than the specified date and time. The date format is the same as -for a date alone. Express the time as hours and minutes -(hh:MM) in 24-hour format (for example, -20:30 is 8:30 p.m.). Surround the -entire expression with double quotes (" ") because it contains a space. -An example is "01/13/1999 22:30". -
    -

    -file -
    Specifies the pathname of the file to which to write the dump. The -file can be in AFS, but not in the volume being dumped. A partial -pathname is interpreted relative to the current working directory. If -this argument is omitted, the dump is directed to the standard output -stream. -

    -server -
    Specifies the file server machine on which the volume resides. -Provide the -partition argument along with this one. -

    -partition -
    Specifies the partition on which the volume resides. Provide the --server argument along with this one. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command writes a full dump of the volume -user.terry to the file -/afs/abc.com/common/dumps/terry.dump. -

       % vos dump -id user.terry -time 0 -file /afs/abc.com/common/dumps/terry.dump
    -   
    -
    -

    The following command writes an incremental dump of the volume -user.smith to the file -smith.990131.dump in the current working -directory. Only those files in the volume with modification time stamps -later than 6:00 p.m. on 31 January 1999 are included in -the dump. -

       % vos dump -id user.smith -time "01/31/1999 18:00" -file smith.990131.dump
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    If the -file argument is included, the issuer must also have -permission to insert and write in the directory that houses the file. -

    Related Information -

    vos -

    vos examine -

    vos listvldb -

    vos restore -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf261.htm b/doc/html/AdminReference/auarf261.htm deleted file mode 100644 index 74f03d32c..000000000 --- a/doc/html/AdminReference/auarf261.htm +++ /dev/null @@ -1,317 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos examine

    - - - - - - - - - - - -

    Purpose -

    Displays information from the volume header and VLDB entry for a -volume. -

    Synopsis -

    vos examine -id <volume name or ID>  [-extended]  [-cell <cell name>]  
    -            [-noauth]  [-localauth]  [-verbose]  [-help]
    -   
    -vos e -i <volume name or ID>  [-e]  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -    
    -vos volinfo -i <volume name or ID>  [-e]  [-c <cell name>]  
    -            [-n]  [-l]  [-v]  [-h]
    -   
    -vos v -i <volume name or ID>  [-e]  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -   
    -
    -

    Description -

    The vos examine command formats and displays information from -the Volume Location Database (VLDB) entry and the volume header of the volume -specified by the -id argument. -

    To display the volume header only, use the vos listvol -command. To display information from the VLDB only, use the vos -listvldb command. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of the volume, -which can be read/write, read-only, or backup. -

    -extended -
    Display statistics about read and write operations on files and -directories in the volume. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The first seven lines of the output show information from the volume header -and the remaining lines come from the VLDB. Each item in the following -list corresponds to a line of output derived from the volume header. -

      -

    • Basic information about the specified volume (displayed on a single -line): -
        -

      • Name -

      • Volume ID number - -

      • Type (the flag is RW for read/write, RO for -read-only, BK for backup) -

      • Size in kilobytes (1024 equals a megabyte) -

      • Number of files in the volume, if the -extended flag is -provided - -

      • Status on the file server machine, which is one of the following: -
        - -

        On-line -
        The volume is completely accessible to Cache Managers. - -

        Off-line -
        The volume is not accessible to Cache Managers, but does not seem to be -corrupted. This status appears while a volume is being dumped, for -example. - -

        Off-line**needs salvage** -
        The volume is not accessible to Cache Managers, because it seems to be -corrupted. Use the bos salvage or salvager -command to repair the corruption. -
        -
      -

    • The file server machine and partition that house the volume, as determined -by the command interpreter as the command runs, rather than derived from the -VLDB or the volume header. - - - - - - - - -

    • The volume ID numbers associated with the various versions of the -volume: read/write (RWrite), read-only (ROnly), -backup (Backup), and ReleaseClone (RClone). One -of them matches the volume ID number that appears on the first line of the -volume's output. If the value in the RWrite, -ROnly, or Backup field is 0 (zero), there is -no volume of that type. If there is currently no ReleaseClone, the -RClone field does not appear at all. - - -

    • The maximum space quota allotted to the read/write copy of the volume, -expressed in kilobyte blocks in the MaxQuota field. - - -

    • The date and time the volume was created, in the Creation -field. If the volume has been restored with the backup -diskrestore, backup volrestore, or vos restore -command, this is the restore time. - - -

    • The date and time when the contents of the volume last changed, in the -Last Update field. For read-only and backup volumes, it -matches the timestamp in the Creation field. - - -

    • The number of times the volume has been accessed for a fetch or store -operation since the later of the two following times: -
        -

      • 12:00 a.m. on the day the command is issued -

      • The last time the volume changed location -
      -
    -

    When the -extended flag is included, two tables appear -next: -

      -

    • The table labeled Raw Read/Write Stats contains information on -the number of reads (fetches) and writes (stores) made on the specified -volume. -

    • The table labeled Writes Affecting Authorship contains -information on writes made to files and directories in the specified -volume. -
    -

    If the following message appears instead of the previously listed -information, it indicates that a volume is not accessible to Cache Managers or -the vos command interpreter, for example because a clone is being -created. -

       **** Volume volume_ID is busy ****
    -
    -

    If the following message appears instead of the previously listed -information, it indicates that the File Server is unable to attach the volume, -perhaps because it is seriously corrupted. The FileLog and -VolserLog log files in the /usr/afs/logs directory on -the file server machine possibly provide additional information; use the -bos getlog command to display them. -

       **** Could not attach volume volume_ID ****
    -
    -

    Following a blank line, information from the VLDB entry appears. -Each item in this list corresponds to a separate line in the output: -

      -

    • The base (read/write) volume name. The read-only and backup -versions have the same name with a .readonly and -.backup extension, respectively. -

    • The volume ID numbers allocated to the versions of the volume that -actually exist, in fields labeled RWrite for the read/write, -ROnly for the read-only, Backup for the backup, and -RClone for the ReleaseClone. (If a field does not appear, -the corresponding version of the volume does not exist.) The appearance -of the RClone field normally indicates that a release operation did -not complete successfully; the Old release and New -release flags often also appear on one or more of the site definition -lines described just following. - - -

    • The number of sites that house a read/write or read-only copy of the -volume, following the string number of sites ->. - - - - - -

    • A line for each site that houses a read/write or read-only copy of the -volume, specifying the file server machine, partition, and type of volume -(RW for read/write or RO for read-only). If a -backup version exists, it is understood to share the read/write site. -Several flags can appear with a site definition: -
      - -

      Not released -
      Indicates that the vos release command has not been issued -since the vos addsite command was used to define the read-only -site. - -

      Old release -
      Indicates that a vos release command did not complete -successfully, leaving the previous, obsolete version of the volume at this -site. - -

      New release -
      Indicates that a vos release command did not complete -successfully, but that this site did receive the correct new version of the -volume. -
      -

    • If the VLDB entry is locked, the string Volume is currently -LOCKED. -
    -

    For further discussion of the New release and Old -release flags, see the reference page for the vos release -command. -

    Examples -

    The following example shows output for the ABC Corporation volume called -usr with two read-only replication sites (this volume is mounted at -the /afs/abc.com/usr directory). For the sake of -illustration, the output shows the volume as locked. -

       % vos examine usr
    -   usr                           536870981 RW   3459 K On-line
    -        fs2.abc.com /vicepb
    -        RWrite 5360870981   ROnly 536870982   Backup 536870983
    -        MaxQuota      40000 K
    -        Creation    Mon Jun 12 15:22:06 1989
    -        Last Update Fri Jun 16 09:34:35 1989
    -        5719 accesses in the past day (i.e., vnode references)
    -        RWrite: 5360870981   ROnly: 536870982   Backup: 536870983
    -        number of sites -> 3
    -           server fs1.abc.com partition /vicepa RO Site 
    -           server fs3.abc.com partition /vicepa RO Site 
    -           server fs2.abc.com partition /vicepb RW Site 
    -        Volume is currently LOCKED  
    -   
    -
    -

    The following example shows the output for the volume -user.terry using the -extended flag. The -volume has no read-only replication sites. -

       % vos examine -id user.terry -extended
    -   user.terry         354287190 RW    2302 K used 119 files On-line
    -       fs4.abc.com /vicepc
    -       RWrite 354287190 ROnly          0 Backup 354287192
    -       MaxQuota       5000 K
    -       Creation    Wed Nov 25 17:38:57 1992
    -       Last Update Tue Dec 15 10:46:20 1992
    -       598 accesses in the past day (i.e., vnode references)
    -                         Raw Read/Write Stats
    -             |-------------------------------------------|
    -             |    Same Network     |    Diff Network     |
    -             |----------|----------|----------|----------|
    -             |  Total   |   Auth   |   Total  |   Auth   |
    -             |----------|----------|----------|----------|
    -   Reads     |       55 |       55 |       38 |       38 |
    -   Writes    |       95 |       95 |        0 |        0 |
    -             |-------------------------------------------|
    -                      Writes Affecting Authorship
    -             |-------------------------------------------|
    -             |   File Authorship   | Directory Authorship|
    -             |----------|----------|----------|----------|
    -             |   Same   |   Diff   |    Same  |   Diff   |
    -             |----------|----------|----------|----------|
    -   0-60 sec  |       38 |        0 |       21 |        1 |
    -   1-10 min  |        2 |        0 |        7 |        0 |
    -   10min-1hr |        0 |        0 |        1 |        0 |
    -   1hr-1day  |        1 |        0 |        5 |        1 |
    -   1day-1wk  |        0 |        0 |        0 |        0 |
    -   > 1wk     |        0 |        0 |        0 |        0 |
    -             |-------------------------------------------|
    -       RWrite: 354287190    Backup: 354287192
    -       number of sites -> 1
    -          server fs4.abc.com partition /vicepc RW Site
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    backup diskrestore -

    backup volrestore -

    bos getlog -

    bos salvage -

    salvager -

    vos -

    vos listvol -

    vos listvldb -

    vos release -

    vos restore -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf262.htm b/doc/html/AdminReference/auarf262.htm deleted file mode 100644 index b131a68e5..000000000 --- a/doc/html/AdminReference/auarf262.htm +++ /dev/null @@ -1,85 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos help

    - - - -

    Purpose -

    Displays the syntax of specified vos commands or functional -descriptions for all vos commands -

    Synopsis -

    vos help [-topic <help string>+]  [-help]
    -    
    -vos h [-t <help string>+]  [-h]
    -
    -

    Description -

    The vos help command displays the complete online help entry -(short description and syntax statement) for each command operation code -specified by the -topic argument. If the -topic -argument is omitted, the output includes the first line (name and short -description) of the online help entry for every vos command. -

    To list every vos command whose name or short description -includes a specified keyword, use the vos apropos command. -

    Options -

    -

    -topic -
    Identifies each command for which to display the complete online help -entry. Omit the vos part of the command name, providing only -the operation code (for example, specify create, not vos -create). If this argument is omitted, the output briefly -describes every vos command. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The online help entry for each vos command consists of the -following two or three lines: -

      -

    • The first line names the command and briefly describes its -function. -

    • The second line lists aliases for the command, if any. -

    • The final line, which begins with the string Usage, lists the -command's options in the prescribed order. Online help entries use -the same symbols (for example, brackets) as the reference pages in this -document. -
    -

    Examples -

    The following command displays the online help entry for the vos -create command: -

       % vos help create
    -   vos create: create a new volume 
    -   Usage: vos create -server <machine name> -partition <partition name> 
    -   -name <volume name> [-cell <cell name>] [-noauth] [-localauth] 
    -   [-verbose] [-help]
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    vos -

    vos apropos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf263.htm b/doc/html/AdminReference/auarf263.htm deleted file mode 100644 index 06bdbc086..000000000 --- a/doc/html/AdminReference/auarf263.htm +++ /dev/null @@ -1,103 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos listaddrs

    - - - - - -

    Purpose -

    Displays all VLDB server entries -

    Synopsis -

    vos listaddrs [-cell <cell name>]  [-noauth]
    -              [-localauth]  [-verbose]  [-help]
    -    
    -vos lista [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos listaddrs command displays all of the server entries -from the Volume Location Database (VLDB). An entry is created as the -File Server initializes and registers the contents of its -/usr/afs/local/sysid file in the VLDB. -

    Options -

    -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output displays all server entries from the VLDB, each on its own -line. If a file server machine is multihomed, all of its registered -addresses appear on the line. The first one is the one reported as a -volume's site in the output from the vos examine and vos -listvldb commands. -

    The VLDB records IP addresses, and the command interpreter has the local -name service (either a process like the Domain Name Service or a local host -table) translate them to hostnames before displaying them. If an IP -address appears in the output, it is not possible to translate it. -

    The existence of an entry does not necessarily indicate that the machine -that is still an active file server machine. To remove obsolete server -entries, use the vos changeaddr command with the -remove -argument. -

    Examples -

    The following command displays the VLDB server entries in the ABC -Corporation cell: -

       % vos listaddrs 
    -   sv5.abc.com
    -   sv1.abc.com
    -   sv2.abc.com  afs2.abc.com
    -   sv6.abc.com
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    sysid -

    vos -

    vos changeaddr -

    vos examine -

    vos listvldb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf264.htm b/doc/html/AdminReference/auarf264.htm deleted file mode 100644 index 47dd5e07c..000000000 --- a/doc/html/AdminReference/auarf264.htm +++ /dev/null @@ -1,98 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos listpart

    - - - - - -

    Purpose -

    Displays all AFS partitions on a file server machine -

    Synopsis -

    vos listpart -server <machine name>  [-cell <cell name>]  [-noauth]
    -             [-localauth]  [-verbose]  [-help]
    -    
    -vos listp -s <machine name>  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos listpart command displays all of the valid AFS -partitions on the indicated file server machine, without consulting the Volume -Location Database (VLDB). The vos partinfo command reports -the size of a partition and the available space on that partition. -

    Options -

    -

    -server -
    Identifies the file server machine for which to list the -partitions. Provide the machine's IP address or its host name -(either fully qualified or using an unambiguous abbreviation). For -details, see the introductory reference page for the vos command -suite. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output consists of a list of partition names of the form -/vicepxx, following the header: -

       The partitions on the server are:
    -   
    -
    -

    The last line of the output reports the total number of partitions. -

    Examples -

    The following command displays the partitions on -fs1.abc.com: -

       % vos listpart fs1.abc.com
    -   The partitions on the server are:
    -       /vicepa     /vicepb     /vicepc     /vicepd
    -   Total:  4
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    vos -

    vos partinfo -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf265.htm b/doc/html/AdminReference/auarf265.htm deleted file mode 100644 index b495b4d49..000000000 --- a/doc/html/AdminReference/auarf265.htm +++ /dev/null @@ -1,231 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos listvldb

    - - - - - - - - - - - -

    Purpose -

    Displays a volume's VLDB entry -

    Synopsis -

    vos listvldb [-name <volume name or ID>]  [-server <machine name>]  
    -             [-partition <partition name>]  [-locked]  [-quiet]  [-nosort]  
    -             [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos listvl [-na <volume name or ID>]  [-s <machine name>]
    -           [-p <partition name>]  [-lock]  [-q]  [-nos]  [-c <cell name>]  
    -           [-noa]  [-loca]  [-v]  [-h]
    -
    -

    Description -

    The vos listvldb command formats and displays information from -the Volume Location Database (VLDB) entry for each volume specified. -The output depends on the combination of options supplied on the command -line. Combine options as indicated to display the desired type of VLDB -entries: -

      -

    • Every entry in the VLDB: provide no options -

    • Every VLDB entry that mentions a certain file server machine as the site -for a volume: specify the machine's name as the -server -argument -

    • Every VLDB entry that mentions a certain partition on any file server -machine as the site for a volume: specify the partition name as the --partition argument -

    • Every VLDB entry that mentions a certain partition on a certain file -server machine as the site for a volume: combine the -server -and -partition arguments -

    • A single VLDB entry: specify a volume name or ID number with the --name argument -

    • The VLDB entry only for the volumes with locked VLDB entries found at a -certain site: combine the -locked flag with any of arguments -that define sites -
    -

    Options -

    -

    -name -
    Specifies either the complete name or volume ID number of a volume of any -of the three types. -

    -server -
    Identifies the file server machine listed as a site in each VLDB entry to -display. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    This argument can be combined with the -partition argument, the --locked flag, or both. -

    -partition -
    Identifies the partition (on the file server machine specified by the --server argument) listed as a site in each VLDB entry to -display. Provide the partition's complete name with preceding -slash (for example, /vicepa) or use one of the three acceptable -abbreviated forms. For details, see the introductory reference page for -the vos command suite. -

    This argument can be combined with the -server argument, the --locked flag, or both. -

    -locked -
    Displays only locked VLDB entries. This flag can be combined with -the -server argument, the -partition argument, or -both. -

    -quiet -
    Suppresses the lines that summarize the number of volumes listed and their -status, which otherwise appear at the beginning and end of the output when the -output includes more than one volume. -

    -nosort -
    Suppresses the default sorting of volume entries alphabetically by volume -name. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    If the output includes more than one VLDB entry, by default the first line -reports which file server machine, partition, or both, houses the -volumes. The final line of output reports the total number of entries -displayed. Including the -quiet flag suppresses these -lines. -

    By default, volumes are sorted alphabetically by volume name. -Including the -nosort flag skips the sorting step, which can speed -up the production of output if there are a large number of entries. -

    The VLDB entry for each volume includes the following information: -

      -

    • The base (read/write) volume name. The read-only and backup -versions have the same name with a .readonly and -.backup extension, respectively. -

    • The volume ID numbers allocated to the versions of the volume that -actually exist, in fields labeled RWrite for the read/write, -ROnly for the read-only, Backup for the backup, and -RClone for the ReleaseClone. (If a field does not appear, -the corresponding version of the volume does not exist.) The appearance -of the RClone field normally indicates that a release operation did -not complete successfully; the Old release and New -release flags often also appear on one or more of the site definition -lines described just following. - - -

    • The number of sites that house a read/write or read-only copy of the -volume, following the string number of sites ->. - - - - - -

    • A line for each site that houses a read/write or read-only copy of the -volume, specifying the file server machine, partition, and type of volume -(RW for read/write or RO for read-only). If a -backup version exists, it is understood to share the read/write site. -Several flags can appear with a site definition: -
      - -

      Not released -
      Indicates that the vos release command has not been issued -since the vos addsite command was used to define the read-only -site. - -

      Old release -
      Indicates that a vos release command did not complete -successfully, leaving the previous, obsolete version of the volume at this -site. - -

      New release -
      Indicates that a vos release command did not complete -successfully, but that this site did receive the correct new version of the -volume. -
      -

    • If the VLDB entry is locked, the string Volume is currently -LOCKED. -
    -

    For further discussion of the New release and Old -release flags, see the reference page for the vos release -command. -

    Examples -

    The following command displays VLDB information for the ABC Corporation -volume called usr, which has two read-only replication sites: -

       % vos listvldb -name usr
    -   usr 
    -    RWrite: 5360870981   ROnly: 536870982   Backup: 536870983
    -    number of sites -> 3
    -       server fs1.abc.com partition /vicepa RO Site 
    -       server fs3.abc.com partition /vicepa RO Site 
    -       server fs2.abc.com partition /vicepb RW Site 
    -   
    -
    -

    The following example shows entries for two of the volumes that reside on -the file server machine fs4.abc.com. The first -VLDB entry is currently locked. There are 508 entries that mention the -machine as a volume site. -

       % vos listvldb -server fs4.abc.com
    -   VLDB entries for server fs4.abc.com
    -       .       .           .        .
    -       .       .           .        .
    -   user.smith 
    -    RWrite: 278541326   ROnly: 278541327   Backup: 278542328
    -    number of sites -> 1
    -      server fs4.abc.com partition /vicepg RW Site 
    -    Volume is currently LOCKED
    -      user.terry
    -    RWrite 354287190   ROnly 354287191   Backup 354287192
    -    number of sites -> 1
    -      server fs4.abc.com partition /vicepc RW Site 
    -      .       .           .        .
    -      .       .           .        .
    -   Total entries: 508
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    vos -

    vos examine -

    vos listvol -

    vos lock -

    vos unlock -

    vos unlockvldb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf266.htm b/doc/html/AdminReference/auarf266.htm deleted file mode 100644 index aae8da44f..000000000 --- a/doc/html/AdminReference/auarf266.htm +++ /dev/null @@ -1,308 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos listvol

    - - - - - - - - - - - -

    Purpose -

    Displays information from a volume header -

    Synopsis -

    vos listvol -server <machine name>  [-partition <partition name>]
    -            [-fast]  [-long]  [-quiet]  [-extended]  [-cell <cell name>]  
    -            [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos listvo -s <machine name>  [-p <partition name>]  [-f]  [-lon]  
    -           [-q]  [-e]  [-c <cell name>]  [-n]  [-loc]  [-v]  [-h]
    -
    -

    Description -

    The vos listvol command formats and displays the following -information from the volume header of each specified volume: volume -name, volume ID, volume type, size, and status at the server. The -actual information displayed depends on the combination of arguments supplied -when the command is issued. To display volume header information for -various numbers of volumes, combine the command's arguments as -indicated: -

      -

    • For every volume on a file server machine, specify the machine's name -with the -server argument. -

    • For every volume at a particular site, combine the -server -argument with the -partition argument. -
    -

    To display the Volume Location Database (VLDB) entry for one or more -volumes, use the vos listvldb command. To display both the -VLDB entry and the volume header for a single volume, use the vos -examine command. -

    Options -

    -

    -server -
    Identifies the file server machine that houses volumes for which to -display the header. Provide the machine's IP address or its host -name (either fully qualified or using an unambiguous abbreviation). For -details, see the introductory reference page for the vos command -suite. -

    This argument can be combined with the -partition argument, as -well as the -fast, -long, or -extended -flag. -

    -partition -
    Identifies the partition (on the file server machine specified by the --server argument) that houses volumes for which to display the -header. Provide the partition's complete name with preceding slash -(for example, /vicepa) or use one of the three acceptable -abbreviated forms. For details, see the introductory reference page for -the vos command suite. -

    -fast -
    Displays only the volume ID numbers of volumes stored at the site -specified by the -server, and optionally -partition, -argument. Do not combine this flag with the -extended -flag. -

    -long -
    Displays more detailed information about each volume stored at the site -specified by the -server, and optionally -partition, -argument. The information includes the volume IDs of all three volume -types associated with the volume, and the read/write volume's quota, -creation date and update date. -

    -quiet -
    Suppresses the lines that summarize the number of volumes listed and their -status, which otherwise appear at the beginning and end of the output when the -output includes more than one volume. -

    -extended -
    Displays extensive statistics about access patterns for each volume stored -at the site specified by the -server, and optionally --partition, argument. The statistics include the number of -reads and writes to files in the volume, and how recently files and -directories have been updated by their owners or other users. Do not -combine this flag with the -fast flag. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The output is ordered alphabetically by volume name and by default provides -the following information on a single line for each volume: -

      -

    • Name -

    • Volume ID number - -

    • Type (the flag is RW for read/write, RO for -read-only, BK for backup) -

    • Size in kilobytes (1024 equals a megabyte) -

    • Number of files in the volume, if the -extended flag is -provided - -

    • Status on the file server machine, which is one of the following: -
      - -

      On-line -
      The volume is completely accessible to Cache Managers. - -

      Off-line -
      The volume is not accessible to Cache Managers, but does not seem to be -corrupted. This status appears while a volume is being dumped, for -example. - -

      Off-line**needs salvage** -
      The volume is not accessible to Cache Managers, because it seems to be -corrupted. Use the bos salvage or salvager -command to repair the corruption. -
      -
    -

    If the following message appears instead of the previously listed -information, it indicates that a volume is not accessible to Cache Managers or -the vos command interpreter, for example because a clone is being -created. -

       **** Volume volume_ID is busy ****
    -
    -

    If the following message appears instead of the previously listed -information, it indicates that the File Server is unable to attach the volume, -perhaps because it is seriously corrupted. The FileLog and -VolserLog log files in the /usr/afs/logs directory on -the file server machine possibly provide additional information; use the -bos getlog command to display them. -

       **** Could not attach volume volume_ID ****
    -
    -

    The information about individual volumes is bracketed by summary -lines. The first line of output specifies the number of volumes in the -listing. The last line of output summarizes the number of volumes that -are online, offline, and busy. These lines do not appear if the --quiet flag is used. -

    If the -fast flag is added, the output displays only the volume -ID number of each volume, arranged in increasing numerical order. The -final line (which summarizes the number of online, offline, and busy volumes) -is omitted. -

    If the -long flag is included, the output for each volume -includes all of the information in the default listing plus the -following. Each item in this list corresponds to a separate line of -output: -

      -

    • The file server machine and partition that house the volume, as determined -by the command interpreter as the command runs, rather than derived from the -VLDB or the volume header. - - - - - - - - -

    • The volume ID numbers associated with the various versions of the -volume: read/write (RWrite), read-only (ROnly), -backup (Backup), and ReleaseClone (RClone). One -of them matches the volume ID number that appears on the first line of the -volume's output. If the value in the RWrite, -ROnly, or Backup field is 0 (zero), there is -no volume of that type. If there is currently no ReleaseClone, the -RClone field does not appear at all. - - -

    • The maximum space quota allotted to the read/write copy of the volume, -expressed in kilobyte blocks in the MaxQuota field. - - -

    • The date and time the volume was created, in the Creation -field. If the volume has been restored with the backup -diskrestore, backup volrestore, or vos restore -command, this is the restore time. - - -

    • The date and time when the contents of the volume last changed, in the -Last Update field. For read-only and backup volumes, it -matches the timestamp in the Creation field. - - -

    • The number of times the volume has been accessed for a fetch or store -operation since the later of the two following times: -
        -

      • 12:00 a.m. on the day the command is issued -

      • The last time the volume changed location -
      -
    -

    If the -extended flag is included, the output for each volume -includes all of the information reported with the -long flag, plus -two tables of statistics: -

      -

    • The table labeled Raw Read/Write Stats table summarizes the -number of times the volume has been accessed for reading or writing. -

    • The table labeled Writes Affecting Authorship table contains -information on writes made to files and directories in the specified -volume. -
    -

    Examples -

    The following example shows the output for the /vicepb partition -on the file server machine fs2.abc.com when no flags -are provided: -

       % vos listvol -server fs2.abc.com -partition b
    -   Total number of volumes on server fs2.abc.com   \
    -                                       partition /vicepb : 66
    -   sys                  1969534847 RW       1582 K On-line
    -   sys.backup           1969535105 BK       1582 K On-line
    -         .                   .     .         .   .    .
    -         .                   .     .         .   .    .
    -   user.pat             1969534536 RW      17518 K On-line
    -   user.pat.backup      1969534538 BK      17537 K On-line
    -   Total volumes onLine 66 ; Total volumes offLine 0 ;  Total busy 0
    -   
    -
    -

    The following example shows the output when the -fast flag is -added: -

       % vos listvol -server fs2.abc.com -partition b -fast
    -   Total number of volumes on server fs2.abc.com   \
    -                                       partition /vicepb : 66
    -    1969516782
    -    1969516784
    -        .
    -        .
    -    1969535796
    -    
    -
    -

    The following example shows two volumes from the output that appears when -the -long flag is added: -

       % vos listvol -server fs2.abc.com -partition b -long
    -   Total number of volumes on server fs2.abc.com \
    -                                       partition /vicepb: 66
    -         .                   .      .         .   .    .
    -         .                   .      .         .   .    .
    -   user.pat             1969534536 RW      17518 K On-line
    -        fs2.abc.com /vicepb
    -        RWrite 1969534536 ROnly 0        Backup 1969534538 
    -        MaxQuota      20000 K
    -        Creation    Mon Jun 12 09:02:25 1989
    -        Last Update Thu May 20 17:39:34 1999
    -        1573 accesses in the past day (i.e., vnode references)
    -   user.pat.backup      1969534538 BK      17537 K On-line
    -        fs2.abc.com /vicepb
    -        RWrite 1969534536 ROnly 0        Backup 1969534538 
    -        MaxQuota      20000 K
    -        Creation    Tue Jun 13 04:37:59 1989
    -        Last Update Wed May 19 06:37:59 1999
    -        0 accesses in the past day (i.e., vnode references)
    -          .                   .      .         .   .    .
    -          .                   .      .         .   .    .
    -   Total volumes onLine 66 ; Total volumes offLine 0 ; \
    -                                                Total busy 0
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    backup diskrestore -

    backup volrestore -

    bos getlog -

    bos salvage -

    salvager -

    vos -

    vos examine -

    vos listvldb -

    vos restore -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf267.htm b/doc/html/AdminReference/auarf267.htm deleted file mode 100644 index ea7d5c726..000000000 --- a/doc/html/AdminReference/auarf267.htm +++ /dev/null @@ -1,99 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos lock

    - - - - - -

    Purpose -

    Locks a VLDB volume entry -

    Synopsis -

    vos lock -id <volume name or ID>  [-cell <cell name>]  [-noauth] 
    -         [-localauth]  [-verbose]  [-help]
    -   
    -vos lo -i <volume name or ID>  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos lock command locks the Volume Location Database (VLDB) -entry for the indicated volume, blocking any operation that requires a write -to that entry. The lock applies to all of the volume versions -associated with the entry, not just the one specified with the -id -argument. -

    To unlock a single VLDB entry, use the vos unlock -command. To unlock several entries, or all locked entries in the VLDB, -use the vos unlockvldb command. -

    Cautions -

    Do not use this command in normal circumstances. It is useful for -guaranteeing that the volume stays unchanged when there is reason to believe -that volume operations cannot properly lock VLDB volume entries as they -normally do to synchronize with one another. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of a volume of the -any of the three types. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command locks the VLDB entry for -user.terry. -

       % vos lock user.terry
    -    
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos unlock -

    vos unlockvldb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf268.htm b/doc/html/AdminReference/auarf268.htm deleted file mode 100644 index 66e424a4d..000000000 --- a/doc/html/AdminReference/auarf268.htm +++ /dev/null @@ -1,166 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos move

    - - - - - - - - - -

    Purpose -

    Moves a read/write volume to another site -

    Synopsis -

    vos move -id <volume name or ID>  -fromserver <machine name on source> 
    -         -frompartition <partition name on source> 
    -         -toserver <machine name on destination>  
    -         -topartition <partition name on destination> 
    -         [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  [-help] 
    -    
    -vos m -i <volume name or ID>  -froms <machine name on source> 
    -      -fromp <partition name on source>  -tos <machine name on destination> 
    -      -top <partition name on destination>  [-c <cell name>]  
    -      [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos move command moves the indicated read/write volume from -its current site (specified with the -fromserver and --frompartition arguments) to the destination site (specified with -the -toserver and -topartition arguments). This -command automatically removes the backup copy from the current site, if it -exists. To create a new backup volume at the destination site, use the -vos backup command. -

    This command works on read/write volumes only. To move a read-only -volume, use the vos addsite and vos release commands to -define a new read-only site and release the volume contents to it, and then -use the vos remove command to remove the previous read-only -volume's definition from the Volume Location Database (VLDB) and data -from the partition. To move a backup volume, use this command to move -its read/write source and then issue the vos backup command. -

    Before executing this command, the vos command interpreter -initiates a check that the destination partition contains enough space to -house the volume being moved. If there is not enough space, the move -operation is not attempted and the following message appears: -

       vos: no space on target partition dest_part to move volume volume
    -   
    -
    -

    Cautions -

    Unless there is a compelling reason, do not interrupt a vos move -command in progress. Interrupting a move can result in one or more of -the following inconsistent states: -

      -

    • There are two versions of the volume, one at the source site and one at -the destination site. (If this happens, retain the version identified -by the VLDB and use the vos zap command to remove the other -version.) -

    • The backup version of the volume is stranded at the old site. (If -this happens, use the vos zap command to remove it.) -

    • The volume is off-line. (If this happens, run the bos -salvage command to bring it back on line.) -
    -

    If the <Ctrl-c> interrupt signal is pressed while a vos -move operation is executing, the following message warns of the -consequences and requests confirmation of the kill signal: -

       SIGINT handler: vos move operation in progress
    -   WARNING: may leave AFS storage and metadata in indeterminate state
    -   enter second control-c to exit
    -   
    -
    -

    To confirm termination of the operation, press <Ctrl-c> a -second time; press any other key to continue the operation. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of a read/write -volume. -

    -fromserver -
    Identifies the file server machine where the volume currently -resides. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -frompartition -
    Names the partition where the volume currently resides. Provide the -full partition name (for, example, /vicepa) or one of the -abbreviated forms described on the introductory vos reference -page. -

    -toserver -
    Identifies the file server machine to which to move the volume. -Provide the machine's IP address or its host name (either fully qualified -or using an unambiguous abbreviation). For details, see the -introductory reference page for the vos command suite. -

    -topartition -
    Names the partition to which to move the volume. Provide the full -partition name (for, example, /vicepa) or one of the abbreviated -forms described on the introductory vos reference page. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example moves the volume user.smith from -the /vicepb partition on the file server machine -fs3.abc.com to the /vicepg partition on -the file server machine fs7.abc.com. -

       % vos move -id user.smith -fromserver fs3.abc.com -frompartition b  \
    -              -toserver fs7.abc.com -topartition g
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machines specified with the -toserver and --fromserver arguments and on each database server machine. -If the -localauth flag is included, the issuer must instead be -logged on to a server machine as the local superuser root. -

    Related Information -

    vos -

    vos addsite -

    vos backup -

    vos release -

    vos listvol -

    vos remove -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf269.htm b/doc/html/AdminReference/auarf269.htm deleted file mode 100644 index c2a0201b9..000000000 --- a/doc/html/AdminReference/auarf269.htm +++ /dev/null @@ -1,115 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos partinfo

    - - - - - - - -

    Purpose -

    Reports the available and total space on a partition -

    Synopsis -

    vos partinfo -server <machine name>  [-partition <partition name>] 
    -             [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  [-help]
    -   
    -vos p -s <machine name>  [-p <partition name>]  [-c <cell name>]  
    -      [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos partinfo command reports the amount of space available -and total size on either all of the partitions on the indicated -file server machine (if the -partition argument is omitted) -or the specified partition on that file server machine. The -Volume Location Database (VLDB) is not consulted. -

    Options -

    -

    -server -
    Identifies the file server machine for which to display partition -information. Provide the machine's IP address or its host name -(either fully qualified or using an unambiguous abbreviation). For -details, see the introductory reference page for the vos command -suite. -

    -partition -
    Identifies which partition on the file server machine specified by the --server argument for which to display information. Provide -the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Cautions -

    The partition-related statistics in this command's output do not -always agree with the corresponding values in the output of the standard UNIX -df command. The statistics reported by this command can be -up to five minutes old, because the Cache Manager polls the File Server for -partition information at that frequency. Also, on some operating -systems, the df command's report of partition size includes -reserved space not included in this command's calculation, and so is -likely to be about 10% larger. -

    Output -

    The output reports the amount of space available and total space for each -specified partition. -

    Examples -

    The following command displays all partitions on the file server machine -fs2.abc.com. -

       % vos partinfo fs2.abc.com
    -   Free space on partition /vicepa: 27301 K blocks out of total 549197
    -   Free space on partition /vicepb: 13646 K blocks out of total 69194
    -   Free space on partition /vicepc: 31798 K blocks out of total 320315
    -   Free space on partition /vicepd: 33302 K blocks out of total 494954
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    vos -

    vos listpart -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf270.htm b/doc/html/AdminReference/auarf270.htm deleted file mode 100644 index 9dafa6194..000000000 --- a/doc/html/AdminReference/auarf270.htm +++ /dev/null @@ -1,187 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos release

    - - - - - - - - - - - - - - - - - - - - - - - -

    Purpose -

    Updates the contents of read-only volumes to match their read/write source -volume -

    Synopsis -

    vos release -id <volume name or ID>  [-f]  [-cell <cell name>] 
    -            [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos rel -i <volume name or ID>  [-f]  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos release command copies the contents of the indicated -read/write source volume to each read-only site defined in the source -volume's Volume Location Database (VLDB) entry. (Use the vos -addsite command to define sites as necessary before issuing this -command). Each read-only copy has the same name as read/write source -with the addition of a .readonly extension. -

    For users to have a consistent view of the file system, the release of the -new volume version must be atomic: either all read-only sites receive -the new version, or all sites keep the version they currently have. The -vos release command is designed to ensure that all copies of the -volume's read-only version match both the read/write source and each -other. In cases where problems such as machine or server process -outages prevent successful completion of the release operation, AFS uses two -mechanisms to alert the administrator. -

    First, the command interpreter generates an error message on the standard -error stream naming each read-only site that did not receive the new volume -version. Second, during the release operation the Volume Location (VL) -Server marks site definitions in the VLDB entry with flags (New -release and Old release) that indicate whether or not the -site has the new volume version. If any flags remain after the -operation completes, it was not successful. The Cache Manager refuses -to access a read-only site marked with the Old release flag, which -potentially imposes a greater load on the sites marked with the New -release flag. It is important to investigate and eliminate the -cause of the failure and then to issue the vos release command as -many times as necessary to complete the release without errors. -

    The pattern of site flags remaining in the volume's VLDB entry after a -failed release operation can help determine the point at which the operation -failed. Use the vos examine or vos listvldb -command to display the VLDB entry. The VL Server sets the flags in -concert with the Volume Server's operations, as follows: -

      -

    1. Before the operation begins, the VL Server sets the New release -flag on the read/write site definition in the VLDB entry and the Old -release flag on read-only site definitions (unless the read-only site -has been defined since the last release operation and has no actual volume, in -which case its site flag remains Not released). -

    2. If necessary, the Volume Server creates a temporary copy (a -clone) of the read/write source called the ReleaseClone (see the -following discussion of when the Volume Server does or does not create a new -ReleaseClone.) It assigns the ReleaseClone its own volume ID number, -which the VL Server records in the RClone field of the source -volume's VLDB entry. -

    3. The Volume Server distributes a copy of the ReleaseClone to each read-only -site defined in the VLDB entry. As the site successfully receives the -new clone, the VL Server sets the site's flag in the VLDB entry to -New release. -

    4. When all the read-only copies are successfully released, the VL Server -clears all the New release site flags. The ReleaseClone is -no longer needed, so the Volume Server deletes it and the VL Server erases its -ID from the VLDB entry. -
    -

    By default, the Volume Server determines automatically whether or not it -needs to create a new ReleaseClone: -

      -

    • If there are no flags (New release, Old release, or -Not released) on site definitions in the VLDB entry, the previous -vos release command completed successfully and all read-only sites -currently have the same volume. The Volume Server infers that the -current vos release command was issued because the read/write -volume has changed. The Volume Server creates a new ReleaseClone and -distributes it to all of the read-only sites. -

    • If any site definition in the VLDB entry is marked with a flag, either the -previous release operation did not complete successfully or a new read-only -site was defined since the last release. The Volume Server does not -create a new ReleaseClone, instead distributing the existing ReleaseClone to -sites marked with the Old release or Not released -flag. As previously noted, the VL Server marks each VLDB site -definition with the New release flag as the site receives the -ReleaseClone, and clears all flags after all sites successfully receive -it. -
    -

    To override the default behavior, forcing the Volume Server to create and -release a new ReleaseClone to the read-only sites, include the -f -flag. This is appropriate if, for example, the data at the read/write -site has changed since the existing ReleaseClone was created during the -previous release operation. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of a read/write -volume. -

    -f -
    Creates a new ReleaseClone and distributes it all read-only sites -regardless of whether or not any site definitions in the VLDB entry are marked -with a flag. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command clones the read/write volume usr and -releases it to the read-only sites defined in its VLDB entry. -

       % vos release usr
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos addsite -

    vos examine -

    vos listvldb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf271.htm b/doc/html/AdminReference/auarf271.htm deleted file mode 100644 index e5915dc88..000000000 --- a/doc/html/AdminReference/auarf271.htm +++ /dev/null @@ -1,169 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos remove

    - - - - - - - - -

    Purpose -

    Removes a volume from a site -

    Synopsis -

    vos remove [-server <machine name>]  [-partition <partition name>]
    -           -id <volume name or ID>  [-cell <cell name>]
    -           [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos remo [-s <machine name>]  [-p <partition name>]  -i <volume name or ID> 
    -         [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos remove command removes the indicated volume from the -partition on which it resides. The Volume Location Database (VLDB) -record is altered appropriately, as described in the following -paragraphs. Use this command to remove any of the three types of -volumes; the effect depends on the type. -

      -

    • If the -id argument names the read/write volume (that is, -specifies the volume's base name), both it and the associated backup -volume are removed from the partition that houses them. The --server and -partition arguments are optional, because -there can be only one read/write site. When the volume is removed, the -site information is also removed from the VLDB entry. The read/write -and backup volume ID numbers no longer appear in the output from the vos -listvldb or vos examine commands, but they are preserved -internally. Read-only sites, if any, are not affected, but cannot be -changed unless a read/write site is again defined. The site count -reported by the vos examine and vos listvldb commands as -number of sites decrements by one. The entire VLDB entry is -removed if there are no read-only sites. -

    • If the -id argument names a read-only volume, it is removed -from the partition that houses it, and the corresponding site information is -removed from the VLDB entry. The site count reported by the vos -examine and vos listvldb commands as number of -sites decrements by one for each volume you remove. If there is -more than one read-only site, the -server argument (and optionally --partition argument) must be used to specify the site from which to -remove the volume. If there is only one read-only site, the --id argument is sufficient; if there is also no read/write -volume in this case, the entire VLDB entry is removed. -

    • If the -id argument names a backup volume, it is removed from -the partition that houses it. The -server and --partition arguments are optional, because there can be only one -backup site. The backup volume ID number no longer appears in the -output from the vos listvldb command or in the corresponding -portion of the output from the vos examine command, but is -preserved internally. -
    -

    This command is the most appropriate one for removing volumes in almost all -cases. Other commands that remove only volumes or only VLDB entries -(such as the vos delentry, vos remsite and vos -zap commands) by definition can put the volumes and VLDB out of -sync. Use them only in the special circumstances mentioned on their -reference pages. Like the vos delentry command, this command -can remove a VLDB entry when no corresponding volumes exist on the file server -machine. Like the vos zap command, this command can remove a -volume that does not have a VLDB entry, as long as the volume is online, --server and -partition arguments are provided, and the --id argument specifies the volume's ID number. -

    Options -

    -

    -server -
    Identifies the file server machine that houses the volume to -remove. It is necessary only when the -id argument names a -read-only volume that exists at multiple sites. Provide the -machine's IP address or its host name (either fully qualified or using an -unambiguous abbreviation). For details, see the introductory reference -page for the vos command suite. -

    -partition -
    Identifies the partition (on the file server machine specified by the --server argument) that houses the volume to remove. Provide -the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    Including this argument is necessary only when the -id argument -names a read-only volume that exists at multiple sites. Provide the --server argument along with this one. -

    -id -
    Identifies the volume to remove, either by its complete name or volume ID -number. If identifying a read-only or backup volume by name, include -the appropriate extension (.readonly or -.backup). -
    Note:If the -server and -partition arguments are omitted, -the -id switch must be provided. -
    -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example removes the read/write volume -user.terry and its backup version, if any. -

       % vos remove  -id user.terry
    -   
    -
    -

    The following example removes the read-only volume -root.afs.readonly from one of its sites, the -/vicepa partition on the file server machine -fs1.abc.com. -

       % vos remove fs1.abc.com  a  root.afs.readonly
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos delentry -

    vos remsite -

    vos zap -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf272.htm b/doc/html/AdminReference/auarf272.htm deleted file mode 100644 index e5efa836a..000000000 --- a/doc/html/AdminReference/auarf272.htm +++ /dev/null @@ -1,120 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos remsite

    - - - - - - -

    Purpose -

    Removes a read-only site definition from a VLDB entry -

    Synopsis -

    vos remsite -server <machine name>  -partition <partition name> 
    -            -id <volume name or ID>  [-cell <cell name>]  [-noauth] 
    -            [-localauth]  [-verbose]  [-help]
    -    
    -vos rems -s <machine name>  -p <partition name>  -i <volume name or ID>  
    -         [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos remsite command removes the read-only replication site -specified by the -machine and -partition arguments from -the Volume Location Database (VLDB) entry for the indicated volume, which is -read/write. -

    This command is useful for removing read-only sites that were mistakenly -created with the vos addsite command, before the vos -release command actually releases them. If a read-only copy -already exists at the site, it is not affected. However, if this -read-only site was the last site housing any version of the volume, then the -entire VLDB entry is removed, even if a copy of the read-only version still -actually exists at the site. The VL Server does not correct the -discrepancy until the vos syncserv and vos syncvldb -commands are run. -

    Cautions -

    Do not use this command as the standard way to remove a read-only volume, -because it can create a discrepancy between the VLDB and the volumes on file -server machines. Use the vos remove command instead. -

    Options -

    -

    -server -
    Specifies the file server machine portion of the site definition to -remove. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -partition -
    Specifies the partition name portion of the site definition to -remove. Provide the partition's complete name with preceding slash -(for example, /vicepa) or use one of the three acceptable -abbreviated forms. For details, see the introductory reference page for -the vos command suite. -

    -id -
    Specifies either the complete name or volume ID number of the read/write -volume to remove. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command removes the mistakenly defined read-only site -/viceph on the file server machine -fs5.abc.com from the VLDB entry for the volume -root.cell. -

       % vos remsite -server fs5.abc.com -partition h -id root.cell
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos delentry -

    vos remove -

    vos zap -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf273.htm b/doc/html/AdminReference/auarf273.htm deleted file mode 100644 index 017a7551f..000000000 --- a/doc/html/AdminReference/auarf273.htm +++ /dev/null @@ -1,109 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos rename

    - - - - - - - - - - -

    Purpose -

    Renames a volume -

    Synopsis -

    vos rename -oldname <old volume name>  -newname <new volume name> 
    -           [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos ren -o <old volume name>  -ne <new volume name>  [-c <cell name>]
    -        [-no]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos rename command changes the name of the read/write volume -specified with the -oldname argument to the name specified with the --newname argument. The names of the read/write's -read-only copies and backup copy, if any, change automatically to -match. -

    After issuing this command, remember to correct any mount points that refer -to the old volume name, by removing the old mount point with the fs -rmmount command and creating a new one with the fs mkmount -command. -

    Options -

    -

    -oldname -
    Is the current name of the read/write volume. -

    -newname -
    Is the desired new name for the volume. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    The vos rename command produces no output if the command -succeeds. -

    If the volume named by the -oldname argument does not exist, the -following message appears: -

       vos: Could not find entry for volume old volume name.
    -   
    -
    -

    Examples -

    The following example changes the mistaken volume name -sun4x_56.afsws to the correct alternative -sun4x_56.usr.afsws. -

       % vos rename -oldname sun4x_56.afsws -newname sun4x_56.usr.afsws
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf274.htm b/doc/html/AdminReference/auarf274.htm deleted file mode 100644 index d58ae6e8d..000000000 --- a/doc/html/AdminReference/auarf274.htm +++ /dev/null @@ -1,194 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos restore

    - - - - -

    Purpose -

    Converts an ASCII file into proper volume format and writes it to the file -system -

    Synopsis -

    vos restore -server <machine name>  -partition <partition name>  
    -            -name <name of volume to be restored>  [-file <dump file>]  
    -            [-id <volume ID>]  [-overwrite <abort | full | incremental>]  
    -            [-cell <cell name>]  [-noauth]  [-localauth]  [-verbose]  
    -            [-help]
    -   
    -vos res -s <machine name>  -p <partition name>  
    -        -na <name of volume to be restored>  [-f <dump file>]  
    -        [-i <volume ID>]  [-o <a | f | inc>]  [-c <cell name>]  
    -        [-no]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos restore command converts a volume dump file previously -created with the vos dump command from ASCII into the volume format -appropriate for the machine type indicated by the -server argument, -and restores it as a read/write volume to the partition named by the --partition argument on that machine. The Volume Server -assigns the volume name indicated with the -name argument, and -resets the volume's creation timestamp to the time at which the restore -operation begins (the creation timestamp is stored in the volume header and -reported in the Creation field in the output from the vos -examine and vos listvol commands.) -

    Use the -file argument to name the dump file, or omit the -argument to provide the file via the standard input stream, presumably through -a pipe. The pipe can be named, which enables interoperation with -third-party backup utilities. -

    As described in the following list, the command can create a completely new -volume or overwrite an existing volume. In all cases, the full dump of -the volume must be restored before any incremental dumps. If there are -multiple incremental dump files, they must be restored in the order they were -created. -

      -

    • To create a new read/write volume, use the -name argument to -specify a volume name that does not already exist in the Volume Location -Database (VLDB), and the -server and -partition -arguments to specify the new volume's site. It is best to omit the --id argument so that the Volume Location (VL) Server allocates a -volume ID automatically. Do not include the -overwrite -argument, because there is no existing volume to overwrite. -

    • To overwrite an existing volume at its current site, specify its name and -site with the -name, -server, and -partition -arguments. The volume retains its current volume ID number unless the --id argument is provided. Specify the value f or -i for the -overwrite argument to indicate whether the -dump file is full or incremental, respectively. -

    • To overwrite an existing volume and move it to a new site, specify its -name and the new site with the -name, -server, and --partition arguments. The volume retains its current volume -ID number unless the -id argument is provided. The volume is -removed from its original site. Specify the value f for the --overwrite argument to indicate that the dump file is a full dump -(it is not possible to restore an incremental dump and move the volume at the -same time). -
    -

    If the volume named by the -name argument already exists and the --overwrite argument is omitted, the command interpreter produces -the following prompt: -

    -

       Do you want to do a full/incremental restore or abort? [fia](a):
    -   
    -
    -

    Respond by entering one of the following values: -

      -

    • f if restoring a full dump file -

    • i if restoring an incremental dump file -

    • a or <Return> to cancel the restore operation -
    -

    Cautions -

    If the -file argument is omitted, the issuer must provide all -other necessary arguments, because the standard input stream is unavailable -for responding to the command interpreter's prompts for missing -information. In particular, the issuer must provide the --overwrite argument if overwriting an existing volume. -

    Options -

    -

    -server -
    Identifies the file server machine onto which to restore the -volume. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -partition -
    Identifies the partition (on the file server machine specified by the --server argument) onto which to restore the volume. Provide -the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -name -
    Specifies the name under which to restore the volume. It can be up -to 22 characters long, but cannot end with a .readonly or -.backup extension. If the volume already exists, it -is overwritten subject to the value of the -overwrite -argument. -

    -file -
    Names the dump file to restore. Incomplete pathnames are -interpreted relative to the current working directory. Omit this -argument to provide the dump file via the standard input stream. -

    -id -
    Specifies the volume ID number to assign to the restored volume. -

    -overwrite -
    Specifies which type of dump file is being restored when overwriting an -existing volume. Provide one of the following values: -
      -

    • a to terminate the restore operation. -

    • f if restoring a full dump file. -

    • i if restoring an incremental dump file. This value is -not acceptable if the -server and -partition arguments -do not indicate the volume's current site. -
    -

    -

    This argument is mandatory if the -file argument is not -provided. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command restores the contents of the dump file -/afs/abc.com/common/dumps/terry.dump to the -/vicepc partition on the file server machine -fs3.abc.com. The restored volume is named -user.terry. -

       % cd /afs/abc.com/common/dumps
    -   
    -   % vos restore -file terry.dump -server fs3.abc.com -partition c  \
    -                 -name user.terry
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos dump -

    vos examine -

    vos listvol -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf275.htm b/doc/html/AdminReference/auarf275.htm deleted file mode 100644 index 01d2b35bb..000000000 --- a/doc/html/AdminReference/auarf275.htm +++ /dev/null @@ -1,143 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos status

    - - - - - -

    Purpose -

    Reports a Volume Server's status -

    Synopsis -

    vos status -server <machine name>  [-cell <cell name>]  [-noauth]
    -           [-localauth]  [-verbose]  [-help]
    -    
    -vos st -s <machine name>  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos status command reports on what the Volume Server on a -certain file server machine is doing at the moment the command is -issued. If there is no activity, the following message appears: -

       No active transactions on machine_name
    -   
    -
    -

    This command is useful mainly if there is concern that the Volume Server is -not performing requested actions. -

    Options -

    -

    -server -
    Identifies the file server machine running the Volume Server for which to -display status information. Provide the machine's IP address or -its host name (either fully qualified or using an unambiguous -abbreviation). For details, see the introductory reference page for the -vos command suite. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Output -

    There are two possible types of output. -

    The following message indicates that the Volume Server is not currently -performing any actions. -

       No active transactions on machine name
    -   
    -
    -

    The other possible output is a set of information which is probably more -useful to programmers than to system administrators. A full -understanding of all the fields requires familiarity with the code for the -Volume Server, as many of the fields report ID numbers and flag values that -the Volume Server sets for internal use. -

    Among the fields of possible interest to an administrator are: -

      -

    • created on the first line, which indicates the time at which -this transaction started -

    • attachFlags on the second line, where a value of -offline indicates that the volume is not available for other read -or write operations during this transaction -

    • volume on the third line, which specifies the affected -volume's ID number -

    • partition on the third line, which indicates where the affected -volume resides (at the beginning of the transaction if this is a move) -

    • procedure on the third line, which indicates the internal -subprocedure being executed -
    -

    A fourth line can appear during certain transactions, and includes the -following fields: -

      -

    • packetRead tracks whether information is being read into the -volume. Its absolute value is not informative, but the way it changes -shows whether the vos restore command is executing properly. -As the vos status command is issued repeatedly during a restore, -readNext increases monotonically to indicate that information is -being read into the volume. -

    • packetSend tracks whether information is being sent out of the -volume. Its absolute value is not informative, but the way it changes -shows whether the vos dump command is executing properly. As -the vos status command is issued repeatedly during a dump, -transmitNext increases monotonically to indicate that information -is being transferred from the volume into the dump file. -
    -

    The lastReceiveTime and lastSendTime are for internal -use. -

    Examples -

    The following example illustrates the kind of output that sometimes appears -when the Volume Server on fs1.abc.com is executing a -dump at the time this command is issued. -

       % vos status fs1.abc.com
    -   --------------------------------------------
    -   transaction: 575  created: Tue Jan 2 8:34:56 1990
    -   attachFlags: offline
    -   volume: 536871080 partition: /vicepb procedure: Dump
    -   packetRead: 2 lastReceiveTime: 113313 packetSend: 24588
    -       lastSendTime: 113317
    -   --------------------------------------------
    -   
    -
    -

    Privilege Required -

    None -

    Related Information -

    vos -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf276.htm b/doc/html/AdminReference/auarf276.htm deleted file mode 100644 index 995c5a398..000000000 --- a/doc/html/AdminReference/auarf276.htm +++ /dev/null @@ -1,114 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos syncserv

    - - - - - - - - -

    Purpose -

    Verifies VLDB entries that mention a specified site -

    Synopsis -

    vos syncserv -server <machine name>  [-partition <partition name>] 
    -             [-cell <cell name>]  [-noauth]  [-localauth]  
    -             [-verbose]  [-help]
    -   
    -vos syncs -s <machine name>  [-p <partition name>]  
    -          [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos syncserv command verifies that each volume mentioned in -a VLDB entry actually exists at the site indicated in the entry. It -checks all VLDB entries that mention a read/write, read-only, or backup site -either on any partition on the file server machine specified by the --server argument, or on the one partition specified by the --server and -partition arguments. Note that the -command can end up inspecting sites other than those specified by the --server and -partition arguments, if there are versions -of the volume at sites other than the one specified. -

    The command alters any incorrect information in the VLDB, unless there is -an irreconcilable conflict with other VLDB entries. In that case, it -writes a message to the standard error stream instead. The command -never removes volumes from file server machines. -

    To achieve complete VLDB consistency, first run the vos syncvldb -command on all file server machines in the cell, then run this command on all -file server machines in the cell. -

    Options -

    -

    -server -
    Identifies the file server machine mentioned in each VLDB entry to -check. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -partition -
    Identifies the partition mentioned in each VLDB entry to check. -Provide the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example verifies the VLDB entries in which a site definition -mentions the file server machine fs3.abc.com. -

       % vos syncserv -server fs3.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos syncvldb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf277.htm b/doc/html/AdminReference/auarf277.htm deleted file mode 100644 index cc82a5695..000000000 --- a/doc/html/AdminReference/auarf277.htm +++ /dev/null @@ -1,136 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos syncvldb

    - - - - - - - - - -

    Purpose -

    Verifies VLDB entries for volumes residing at specified site -

    Synopsis -

    vos syncvldb [-server <machine name>]  [-partition <partition name>] 
    -             [-volume <volume name or ID>]  [-cell <cell name>]  [-noauth]  
    -             [-localauth]  [-verbose]  [-help]
    -    
    -vos syncv [-s <machine name>]  [-p <partition name>]  [-vo <volume name or ID>] 
    -          [-c <cell name>]  [-n]  [-l]  [-ve]  [-h]
    -
    -

    Description -

    The vos syncvldb command verifies that the status of the volumes -housed either on all partitions on the file server machine specified by the --server argument, or on the single partition specified by the --server and -partition arguments, is recorded correctly -in the VLDB. If the -volume argument is included to indicate -a single volume, the command compares only its status on the file server -machine with its VLDB entry. -

    If the -volume argument is not included, the command interpreter -obtains from the Volume Server a list of the volumes that reside on each -partition, then changes information in the VLDB as necessary to reflect their -state on the partition. For example, it creates or updates a VLDB entry -when it finds a volume for which the VLDB entry is missing or -incomplete. However, if there is already a VLDB entry that defines a -different location for the volume, or there are irreconcilable conflicts with -other VLDB entries, it instead writes a message about the conflict to the -standard error stream. The command never removes volumes from the file -server machine. -

    To achieve complete VLDB consistency, run this command on all file server -machines in the cell, and then run the vos syncserv command on all -file server machines in the cell. -

    Using the -volume argument basically combines the effects of -this command with those of the vos syncserv command, for a single -volume. The command not only verifies that the VLDB entry is correct -for the specified volume type (read/write, backup, or read-only), but also -checks that any related volume types mentioned in the VLDB entry actually -exist at the site listed in the entry. It is not necessary to provide -the -server argument (and optionally, -partition -argument); if one or both is provided, the results are reliable only if -they specify the actual location of the volume indicated by the --volume argument. -

    Options -

    -

    -server -
    Identifies the file server machine housing the volumes for which to verify -VLDB entries. Provide the machine's IP address or its host name -(either fully qualified or using an unambiguous abbreviation). For -details, see the introductory reference page for the vos command -suite. -

    -partition -
    Identifies the partition housing the volumes for which to verify VLDB -entries. Provide the -server argument along with this -one. Provide the partition's complete name with preceding slash -(for example, /vicepa) or use one of the three acceptable -abbreviated forms. For details, see the introductory reference page for -the vos command suite. -

    -volume -
    Specifies the name or volume ID number of a single volume for which to -verify the VLDB entry. This argument can be combined with the --server (and optionally, the -partition) -argument. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example command verifies the VLDB entry for each volume -stored on the file server machine fs4.abc.com. -

       % vos syncvldb fs4.abc.com
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos syncserv -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf278.htm b/doc/html/AdminReference/auarf278.htm deleted file mode 100644 index d31750071..000000000 --- a/doc/html/AdminReference/auarf278.htm +++ /dev/null @@ -1,97 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos unlock

    - - - - -

    Purpose -

    Unlocks a single VLDB entry -

    Synopsis -

    vos unlock -id <volume name or ID>  [-cell <cell name>]  [-noauth] 
    -           [-localauth]  [-verbose]  [-help]
    -    
    -vos unlock -i <volume name or ID>  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos unlock command releases the lock on the Volume Location -Database (VLDB) entry for the indicated volume. -

    Cautions -

    Do not user this command under normal circumstances. -

    It is useful if the VLDB entry is locked but there is no reason to suspect -inconsistency within the volume or between it and the VLDB. Note that -it is possible to list information from locked VLDB entries, even though they -cannot be manipulated in other ways. -

    The vos unlockvldb command unlocks several VLDB entries at once, -or even the entire VLDB. The vos lock command locks a VLDB -entry so that no one else can perform an action that requires writing the -VLDB. -

    Options -

    -

    -id -
    Specifies either the complete name or volume ID number of a volume of any -of the three types. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example unlocks the VLDB entry for the volume -user.terry. -

       % vos unlock user.terry
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos lock -

    vos unlockvldb -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf279.htm b/doc/html/AdminReference/auarf279.htm deleted file mode 100644 index 416c297c4..000000000 --- a/doc/html/AdminReference/auarf279.htm +++ /dev/null @@ -1,129 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos unlockvldb

    - - - - -

    Purpose -

    Unlocks several locked VLDB entries -

    Synopsis -

    vos unlockvldb [-server <machine name>]  [-partition <partition name>] 
    -               [-cell <cell name>]  [-noauth]  [-localauth]
    -               [-verbose]  [-help]
    -    
    -vos unlockv [-s <machine name>]  [-p <partition name>]  
    -            [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos unlockvldb command releases the lock on the Volume -Location Database (VLDB) entries indicated by the combination of arguments -provided: -

      -

    • To unlock all entries in the VLDB, provide no arguments -

    • To unlock all entries that mention a file server machine in a site -definition, provide its name with the -server argument -

    • To unlock all entries that mention a partition on any file server machine -in a site definition, provide the partition name with the --partition argument -

    • To unlock all entries that mention a specific site, provide both the --server and -partition arguments. -
    -

    To unlock a single volume, use the vos unlock command -instead. -

    Cautions -

    Do not use this command under normal circumstances. -

    It is useful if VLDB entries for volumes at a certain site are locked but -there is no reason to suspect inconsistency within the volume or between it -and the VLDB. Note that it is possible to list information from locked -VLDB entries, even though they cannot be manipulated in other ways. -

    The vos lock command locks a VLDB entry so that no one else can -perform an action that requires writing the VLDB. -

    Options -

    -

    -server -
    Identifies the file server machine for which to unlock VLDB -entries. Provide the machine's IP address or its host name (either -fully qualified or using an unambiguous abbreviation). For details, see -the introductory reference page for the vos command suite. -

    -partition -
    Identifies the partition (on the file server machine specified by the --server argument) for which to unlock VLDB entries. Provide -the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following command unlocks all locked entries in the VLDB. -

       % vos unlockvldb
    -   
    -
    -

    The following command unlocks all locked VLDB entries that mention the -/vicepa partition in a site definition. -

       % vos unlockvldb -partition a
    -   
    -
    -

    The following command unlocks all locked VLDB entries that refer to volumes -on the /vicepc partition of the file server machine -fs3.abc.com. -

       % vos unlockvldb -server fs3.abc.com -partition c
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos lock -

    vos unlock -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf280.htm b/doc/html/AdminReference/auarf280.htm deleted file mode 100644 index ca2daebb4..000000000 --- a/doc/html/AdminReference/auarf280.htm +++ /dev/null @@ -1,148 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    vos zap

    - - - - -

    Purpose -

    Removes a volume from its site without writing to the VLDB -

    Synopsis -

    vos zap -server <machine name>  -partition <partition name> 
    -        -id <volume ID>  [-force]  [-backup]  [-cell <cell name>]
    -        [-noauth]  [-localauth]  [-verbose]  [-help]
    -    
    -vos z -s <machine name>  -p <partition name>  -i <volume ID>
    -      [-f]  [-b]  [-c <cell name>]  [-n]  [-l]  [-v]  [-h]
    -
    -

    Description -

    The vos zap command removes the volume with the specified -volume ID from the site defined by the -server and --partition arguments, without attempting to change the -corresponding Volume Location Database (VLDB) entry. If removing the -volume can possibly result in incorrect data in the VLDB, a warning message is -displayed. -

    The -force flag removes a volume even if it cannot be "attached" -(brought online), which can happen either because the volume is extremely -damaged or because the Salvager functioned abnormally. Without this -flag, this command cannot remove volumes that are not attachable. See -also the Cautions section. -

    To remove the specified read/write volume's backup version at the same -time, include the -backup flag. -

    Cautions -

    Do not use this command as the standard way to remove a volume, as it is -likely to put the VLDB out of sync with the volumes on servers. Use the -vos remove command instead. -

    This command is useful in situations where it is important to delete the -volume, but for some reason the VLDB is unreachable--for example, because -s the Volume Location Server is unavailable. The issuer can remove the -VLDB entry later with the vos remove or vos delentry -command, or it is removed automatically when the vos syncserv and -vos syncvldb commands run. -

    To remove a read-only site defined in the VLDB by mistake, before a copy -actually exists at the site, use the vos remsite command. To -remove an entire VLDB entry without affecting volumes at their sites, use the -vos delentry command. -

    Do not use the -force flag if the volume is online, but only -when attempts to remove the volume with the vos remove or the -vos zap command have failed, or the volume definitely cannot be -attached. After using the -force flag, make sure that the -volume's VLDB entry is also removed (issue the vos delentry -command if necessary). -

    Adding the -force flag makes the command take considerably -longer--about as long as a salvage of the relevant partition--since -the Volume Server examines all inodes on the partition for traces of the -volume. -

    Options -

    -

    -server -
    Identifies the file server machine from which to remove the volume. -Provide the machine's IP address or its host name (either fully qualified -or using an unambiguous abbreviation). For details, see the -introductory reference page for the vos command suite. -

    -partition -
    Identifies the partition (on the file server machine specified by the --server argument) from which to remove the volume. Provide -the partition's complete name with preceding slash (for example, -/vicepa) or use one of the three acceptable abbreviated -forms. For details, see the introductory reference page for the -vos command suite. -

    -id -
    Specifies the volume ID number of the volume to remove, which can be of -any of the three types. The volume name is not acceptable. -

    -force -
    Removes the volume even though it cannot be attached (brought -online). Use only after the failure of previous attempts to remove the -volume by using the vos remove command or the vos -command without this flag. -

    -backup -
    Removes the backup version of the read/write volume specified by the --id argument. Do not use this flag if the -id -argument identifies a read-only or backup volume. -

    -cell -
    Names the cell in which to run the command. Do not combine this -argument with the -localauth flag. For more details, see the -introductory vos reference page. -

    -noauth -
    Assigns the unprivileged identity anonymous to the -issuer. Do not combine this flag with the -localauth -flag. For more details, see the introductory vos reference -page. -

    -localauth -
    Constructs a server ticket using a key from the local -/usr/afs/etc/KeyFile file. The vos command -interpreter presents it to the Volume Server and Volume Location Server during -mutual authentication. Do not combine this flag with the --cell argument or -noauth flag. For more details, -see the introductory vos reference page. -

    -verbose -
    Produces on the standard output stream a detailed trace of the -command's execution. If this argument is omitted, only warnings -and error messages appear. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Examples -

    The following example removes the volume with volume ID 536870988 from the -/vicepf partition of the file server machine -fs6.abc.com, without noting the change in the -VLDB. -

       % vos zap -server fs6.abc.com -partition f -id 536870988
    -   
    -
    -

    Privilege Required -

    The issuer must be listed in the /usr/afs/etc/UserList file on -the machine specified with the -server argument and on each -database server machine. If the -localauth flag is included, -the issuer must instead be logged on to a server machine as the local -superuser root. -

    Related Information -

    vos -

    vos delentry -

    vos remove -

    vos remsite -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf281.htm b/doc/html/AdminReference/auarf281.htm deleted file mode 100644 index 1bddcec4e..000000000 --- a/doc/html/AdminReference/auarf281.htm +++ /dev/null @@ -1,60 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    xfs_size_check

    - - -

    Purpose -

    Verifies proper inode configuration -

    Synopsis -

    xfs_size_check
    -
    -

    Description -

    The xfs_size_check command, when run on a file server machine -that runs IRIX version 6.2 or higher and uses XFS-formatted partitions -as server partitions (conventionally mounted at /vicep -directories), verifies that each partition uses 512-byte inodes. AFS -stores information in the inodes on server partitions, and the 256-byte inode -size that XFS uses by default is not large enough. -

    Cautions -

    This command is available on in the AFS distribution for IRIX system types -that can use XFS-formatted partitions as server partitions. -

    Output -

    If all server partitions are properly configured, the command produces no -output. Otherwise, it prints the following header: -

       Need to remake the following partitions:
    -   
    -
    -

    and then the following message for each partition on which to run the IRIX -mkfs command with the indicated options: -

       device: mkfs -t xfs -i size=512 -l size=4000b device
    -   
    -
    -

    where device is in a format like /dev/dsk/dks0d0s0 for -a single disk partition or /dev/xlv/xlv0 for a logical -volume. -

    Privilege Required -

    The issuer must be logged in as the local superuser root. -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf282.htm b/doc/html/AdminReference/auarf282.htm deleted file mode 100644 index 8d650ee62..000000000 --- a/doc/html/AdminReference/auarf282.htm +++ /dev/null @@ -1,97 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    xstat_cm_test

    - - -

    Purpose -

    Displays data collections from the Cache Manager -

    Synopsis -

    xstat_cm_test [initcmd] -cmname <Cache Manager name(s) to monitor>+
    -              -collID <Collection(s) to fetch>+  [-onceonly]  
    -              [-frequency <poll frequency, in seconds>]  
    -              [-period <data collection time, in minutes>]  [-debug]  [-help]
    -   
    -xstat_cm_test [i] -cm <Cache Manager name(s) to monitor>+
    -              -co <Collection(s) to fetch>+  [-o]  
    -              [-f <poll frequency, in seconds>]  
    -              [-p <data collection time, in minutes>]  [-d]  [-h]
    -
    -

    Description -

    The xstat_cm_test command tests the routines in the -libxstat_cm.a library and displays the data collections -associated with the Cache Manager. The command executes in the -foreground. -

    The command produces a large volume of output; to save it for later -analysis, direct it to a file. -

    Options -

    -

    initcmd -
    Accommodates the command's use of the AFS command parser, and is -optional. -

    -cmname -
    Specifies the fully qualified hostname of each client machine for which to -monitor the Cache Manager. -

    -collID -
    Specifies each data collection to return, which defines the type and -amount of data the command interpreter gathers about the Cache Manager. -Data is returned in a predefined data structure. -

    There are three acceptable values: -

    -

    0 -
    Provides profiling information about the numbers of times different -internal Cache Manager routines were called since the Cache Manager -started. -

    1 -
    Reports various internal performance statistics related to the Cache -Manager (for example, statistics about how effectively the cache is being used -and the quantity of intracell and intercell data access). -

    2 -
    Reports all of the internal performance statistics provided by the -1 setting, plus some additional, detailed performance figures (for -example, statistics about the number of RPCs sent by the Cache Manager and how -long they take to complete, and statistics regarding authentication, access, -and PAG information associated with data access). -
    -

    -onceonly -
    Gathers statistics just one time. Omit this flag to have the -command continue to probe the Cache Manager for statistics at the frequency -specified by the -frequency argument; in this case press -<Ctrl-c> to stop the probes. -

    -frequency -
    Sets the frequency in seconds at which the program initiates probes to the -Cache Manager. The default is 30 seconds. -

    -period -
    Sets the number of minutes the program runs; at the end of this -period of time, the program exits. The default is 10 minutes. -

    -debug -
    Displays a trace on the standard output stream as the command runs. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Related Information -

    xstat_fs_test -

    -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf283.htm b/doc/html/AdminReference/auarf283.htm deleted file mode 100644 index b13ddf684..000000000 --- a/doc/html/AdminReference/auarf283.htm +++ /dev/null @@ -1,96 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic] [Next Topic] [Index]

    -

    -

    xstat_fs_test

    - - -

    Purpose -

    Displays data collections from the File Server process -

    Synopsis -

    xstat_fs_test [initcmd] -fsname <File Server name(s) to monitor>+
    -              -collID <Collection(s) to fetch>+  [-onceonly]
    -              [-frequency <poll frequency, in seconds>]
    -              [-period <data collection time, in minutes>]  [-debug] [-help]
    -   
    -xstat_fs_test [initcmd] -fs <File Server name(s) to monitor>+
    -              -c <Collection(s) to fetch>+  [-o]
    -              [-fr <poll frequency, in seconds>]
    -              [-p <data collection time, in minutes>]  [-d] [-h]
    -
    -

    Description -

    The xstat_fs_test command tests the routines in the -libxstat_fs.a library and displays the data collections -associated with the File Server (the fs process). The -command executes in the foreground. -

    The command produces a large volume of output; to save it for later -analysis, direct it to a file. -

    Options -

    -

    initcmd -
    Accommodates the command's use of the AFS command parser, and is -optional. -

    -fsname -
    Specifies the fully qualified hostname of each file server machine for -which to monitor the File Server process. -

    -collID -
    Specifies each data collection to return, which defines the type and -amount of data the command interpreter gathers about the File Server. -Data is returned in a predefined data structure. -

    There are three acceptable values: -

    -

    0 -
    Provides profiling information about the numbers of times different -internal File Server routines were called since the File Server -started. This value is not currently implemented; it returns no -data. -

    1 -
    Reports various internal performance statistics related to the File Server -(for example, vnode cache entries and Rx protocol activity). -

    2 -
    Reports all of the internal performance statistics provided by the -1 setting, plus some additional, detailed performance figures about -the File Server (for example, minimum, maximum, and cumulative statistics -regarding File Server RPCs, how long they take to complete, and how many -succeed). -
    -

    -onceonly -
    Gathers statistics just one time. Omit this flag to have the -command continue to probe the Cache Manager for statistics at the frequency -specified by the -frequency argument; in this case press -<Ctrl-c> to stop the probes. -

    -frequency -
    Sets the frequency in seconds at which the program initiates probes to the -Cache Manager. The default is 30 seconds. -

    -period -
    Sets the number of minutes the program runs; at the end of this -period of time, the program exits. The default is 10 minutes. -

    -debug -
    Displays a trace on the standard output stream as the command runs. -

    -help -
    Prints the online help for this command. All other valid options -are ignored. -
    -

    Related Information -

    xstat_cm_test -


    [Return to Library] [Contents] [Previous Topic] [Top of Topic] [Next Topic] [Index]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/AdminReference/auarf284.htm b/doc/html/AdminReference/auarf284.htm deleted file mode 100644 index f3be5941b..000000000 --- a/doc/html/AdminReference/auarf284.htm +++ /dev/null @@ -1,4966 +0,0 @@ - - -Administration Reference - - - - - - - - - - - -

    Administration Reference

    -

    [Return to Library] [Contents] [Previous Topic] [Bottom of Topic]

    -

    -


    Index

    -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -
    -A - -
  • A instruction - -
  • uss template file -(4119) -
  • -
  • access - -
  • count, in volume header -(5683), (5759) -
  • -
  • access control list - -
  • see entry: ACL -(5222) -
  • -
  • ACL - -
  • adding entries -(4925) -
  • all shorthand notation -(4938) -
  • cleaning -(4747) -
  • clearing -(4927) -
  • copying -(4753) -
  • default set by vos create command -(5625) -
  • defined -(5221) -
  • displaying -(4854) -
  • none shorthand notation -(4942) -
  • read shorthand notation -(4944) -
  • removing entries -(4926) -
  • removing obsolete AFS UIDs -(4746) -
  • setting -(4924) -
  • setting with uss -(4127), (4179) -
  • shorthand notation for permissions -(4939) -
  • write shorthand notation -(4946) -
  • -
  • active clients statistic in scout -(5462) -
  • add instruction in uss bulk input file -(4103) -
  • adding - -
  • ACL permissions entry -(4930) -
  • database server machine to CellServDB file (server) -(4453) -
  • dump level to Backup System dump hierarchy -(4222) -
  • privileged user to UserList file -(4466) -
  • read-only site definition in VLDB -(5590) -
  • server encryption key to KeyFile file -(4456) -
  • Tape Coordinator entry to Backup Database -(4237) -
  • user or machine to group -(5237) -
  • volume entry to volume set in Backup Database -(4245), (4252) -
  • volume set definition to Backup Database -(4260) -
  • -
  • admin argument - -
  • on uss commands -(5510) -
  • -
  • ADMIN flag in Authentication Database entry -(5061), (5143) -
  • administrative file - -
  • see entry: files -(3863) -
  • -
  • admin_username argument - -
  • on all kas commands -(5064) -
  • -
  • AFS Backup System - -
  • see entry: Backup System -(4207) -
  • -
  • AFS GID (group ID) - -
  • assigning to group -(5267) -
  • learning given group name -(5326) -
  • -
  • AFS server process - -
  • see entry: server process -(4440) -
  • -
  • AFS tape name - -
  • see entry: tape (Backup System) -(4355) -
  • -
  • AFS UID - -
  • assigning in uss -(5528) -
  • assigning to user or machine with pts createuser command -(5286) -
  • displaying -(5341) -
  • learning given user/machine name -(5325) -
  • removing obsolete from ACL -(4750) -
  • -
  • afsd command -(4184) -
  • afsmonitor - -
  • configuration file -(4036) -
  • -
  • afsmonitor program - -
  • initialization command -(4193) -
  • setting terminal type -(4200) -
  • -
  • afszcm.cat file -(4005) -
  • all shorthand notation for ACL permissions -(4937) -
  • all-or-nothing release of read-only volumes -(5795) -
  • appended dump - -
  • displaying record for -(4323) -
  • see entry: dump -(4311) -
  • -
  • ASK instruction in CFG_device_name file -(3905) -
  • assigning - -
  • AFS GID to group -(5271) -
  • AFS UID to user -(5290) -
  • -
  • at-sys (@sys) variable in pathnames -(4998), (5472) -
  • authenticated identity - -
  • acquiring on NFS client of non-supported type -(5185) -
  • acquiring with klog -(5182) -
  • discarding while in kas interactive mode -(5123) -
  • -
  • authentication - -
  • imposing restrictions with kas -(5142) -
  • imposing restrictions with uss template A instruction -(4118) -
  • -
  • Authentication Database - -
  • changing/setting password in -(5191) -
  • creating entry -(5076) -
  • deleting entry -(5081) -
  • displaying all entries -(5115) -
  • displaying entry -(5085) -
  • displaying key -(5086) -
  • entry, creating with uss -(5527) -
  • entry, deleting with uss -(5551) -
  • files constituting -(4015) -
  • information in -(5099) -
  • setting flags and expiration dates -(5133) -
  • setting key field using password -(5150) -
  • setting password in -(5151) -
  • status, verifying -(5056) -
  • -
  • Authentication Server - -
  • displaying statistics -(5159) -
  • displaying traces of privileged actions -(5175) -
  • listed in client CellServDB file -(3914) -
  • listed in server CellServDB file -(3922) -
  • log file -(3870) -
  • log files for privileged actions -(3873) -
  • starting -(5172) -
  • unlocking locked user account -(5169) -
  • -
  • AuthLog file -(3868) -
  • AuthLog.dir and AuthLog.pag files -(3871) -
  • authorization checking - -
  • NoAuth file -(3966) -
  • setting requirements on server machine -(4617) -
  • -
  • automatic restart times for BOS Server - -
  • see entry: restart times for BOS Server -(4541) -
  • -
  • AUTOQUERY instruction in CFG_device_name file -(3906) -
  • availability of data - -
  • interrupted by dumping -(5649) -
  • -
  • -B - -
  • B instruction - -
  • package configuration file -(4041) -
  • -
  • backup - -
  • see entry: backup commands -(4206) -
  • see entry: Backup System -(4205) -
  • -
  • backup commands - -
  • adddump -(4218) -
  • addhost -(4229) -
  • addvolentry -(4240), (4247) -
  • addvolset -(4255) -
  • apropos -(4261) -
  • common options -(4211) -
  • dbverify -(4264) -
  • deldump -(4267) -
  • deletedump -(4275) -
  • delhost -(4281) -
  • delvolentry -(4286) -
  • delvolset -(4292) -
  • diskrestore -(4296) -
  • dump -(4302) -
  • dumpinfo -(4316) -
  • help -(4324) -
  • interactive -(4327) -
  • introduction -(4204) -
  • jobs -(4332) -
  • kill -(4339) -
  • labeltape -(4345) -
  • listdumps -(4357) -
  • listhosts -(4365) -
  • listvolsets -(4374) -
  • privilege requirements -(4217) -
  • quit -(4380) -
  • readlabel -(4386) -
  • restoredb -(4394) -
  • savedb -(4397) -
  • scantape -(4400) -
  • setexp -(4406) -
  • status -(4412) -
  • volinfo -(4416) -
  • volrestore -(4422) -
  • volsetrestore -(4428) -
  • -
  • Backup Database - -
  • dump hierarchy, displaying -(4361) -
  • dump level, creating -(4224) -
  • dump level, removing -(4271) -
  • dump record, deleting -(4278) -
  • dump record, displaying -(4319) -
  • expiration date, setting on existing dump level -(4409) -
  • expiration date, setting on new dump level -(4226) -
  • files constituting -(4010) -
  • information recorded -(4209) -
  • port offset number, assigning to Tape Coordinator -(4234) -
  • port offset number, displaying -(4370) -
  • restoring from tape -(4396) -
  • saving to tape -(4399) -
  • status, verifying -(4266) -
  • Tape Coordinator entry, creating -(4235) -
  • Tape Coordinator entry, deleting -(4283) -
  • Tape Coordinator entry, displaying -(4371) -
  • volume dump history, displaying -(4418) -
  • volume entry in volume set, displaying -(4378) -
  • volume entry, adding to volume set -(4243), (4250) -
  • volume entry, removing from volume set -(4289) -
  • volume set, creating -(4258) -
  • volume set, deleting -(4294) -
  • volume set, restoring -(4433) -
  • -
  • backup extension on volume name -(5603) - -
  • added by vos backup command -(5604) -
  • added by vos backupsys command -(5611) -
  • -
  • Backup field in volume header -(5675), (5751) -
  • Backup Server - -
  • initialization command -(4687) -
  • listed in client CellServDB file -(3917) -
  • listed in server CellServDB file -(3925) -
  • log file -(3876), (3879) -
  • -
  • Backup System - -
  • Backup Server process, starting -(4690) -
  • database (see entry: Backup Database) -(4208) -
  • interactive mode, entering -(4331) -
  • interactive mode, exiting -(4385) -
  • job ID number, displaying -(4334) -
  • job ID number, using to halt operation -(4343) -
  • operations, displaying pending and running -(4335) -
  • operations, halting in interactive mode -(4341) -
  • regular expressions -(4254) -
  • tape capacity, displaying from label -(4391) -
  • tape capacity, recording on label -(4352) -
  • Tape Coordinator, initializing -(4696) -
  • tape, creating label -(4351) -
  • tape, displaying label -(4390) -
  • -
  • backup volume - -
  • creating -(5602) -
  • creating many at once -(5610) -
  • dumping -(5648) -
  • ID number -(5637) -
  • ID number in volume header -(5671), (5747) -
  • moving -(5774) -
  • name, changing -(5828) -
  • removed by read/write move -(5772) -
  • removed by read/write removal -(5810) -
  • removing -(5812) -
  • -
  • BackupLog file -(3874) -
  • BAK version of binary file - -
  • creation by bos install command -(4554) -
  • listing time stamp on -(4521) -
  • removing from /usr/afs/bin directory -(4578) -
  • use by bos uninstall command -(4678) -
  • -
  • Basic OverSeer Server - -
  • see entry: BOS Server -(4437) -
  • -
  • bdb.DB0 file -(4006) -
  • bdb.DBSYS1 file -(4008) -
  • binary distribution machine -(4552), (4676) -
  • binary file - -
  • installing -(4550) -
  • listing time stamp on -(4519) -
  • uninstalling -(4674) -
  • -
  • block special device - -
  • defining with package -(4045) -
  • -
  • bos commands - -
  • addhost -(4451) -
  • addkey -(4463) -
  • adduser -(4471) -
  • apropos -(4473) -
  • common options -(4443) -
  • create -(4485) -
  • delete -(4509) -
  • exec -(4513) -
  • getcell (see entry: listhosts) -(4562) -
  • getdate -(4516) -
  • getlog -(4527) -
  • getrestart -(4543) -
  • help -(4545) -
  • install -(4548) -
  • listhosts -(4561) -
  • listkeys -(4566) -
  • listusers -(4573) -
  • privilege requirements -(4450) -
  • prune -(4575) -
  • removehost -(4588) -
  • removekey -(4596) -
  • removeuser -(4601) -
  • restart -(4603) -
  • salvage -(4615) -
  • setauth -(4620) -
  • setcellname -(4622) -
  • setrestart -(4634) -
  • shutdown -(4640) -
  • start -(4644) -
  • startup -(4652) -
  • status -(4656) -
  • stop -(4665) -
  • uninstall -(4671) -
  • -
  • BOS Server -(4436) - -
  • memory state -(3894) -
  • restart times, displaying -(4537) -
  • restart times, setting -(4631) -
  • restarting -(4607) -
  • SALVAGE.fs file, response to -(3971) -
  • starting -(4682) -
  • -
  • BosConfig file -(3880) - -
  • creating entry with bos create command -(4484) -
  • displaying entry with bos status command -(4662) -
  • removing entry with bos delete command -(4506) -
  • -
  • BosLog file -(3877) -
  • bosserver command -(4680) -
  • BUFFERSIZE instruction in CFG_device_name file -(3907) -
  • bulk input file - -
  • see entry: uss bulk input file -(4100) -
  • -
  • bulk mode in uss -(5543) -
  • buserver command -(4685) -
  • buserver process - -
  • creating with bos create command -(4487) -
  • -
  • butc command -(4691) -
  • -C - -
  • C instruction - -
  • package configuration file -(4042) -
  • -
  • Cache Manager - -
  • changing database server machines known to -(4908) -
  • configuring with afsd -(4189) -
  • configuring with fs commands -(4716) -
  • disabling messages -(4890) -
  • displaying amount of cache used -(4832) -
  • displaying cache size -(4831) -
  • displaying database server machines known to -(4862) -
  • displaying inaccessible server machines -(4734) -
  • displaying server machine preference ranks -(4846) -
  • flushing directory/file from data cache -(4808) -
  • flushing entire volume from data cache -(4821) -
  • flushing mount point from data cache -(4815) -
  • initializing with afsd -(4188) -
  • interfaces not registered with File Server, setting -(3956) -
  • interfaces registered with File Server, displaying -(4841) -
  • interfaces registered with File Server, setting -(3945), (4963) -
  • logging messages -(4889) -
  • monitoring status with afsmonitor -(4196) -
  • NetInfo file -(3944) -
  • NetRestrict file -(3955) -
  • setting cache size -(4952) -
  • setting server machine preference ranks -(4973) -
  • setting the interval between server probes -(4735) -
  • volume name to ID mapping, forcing update of -(4739) -
  • VolumeItems file -(4002) -
  • -
  • cache-related file - -
  • see entry: files -(3864) -
  • -
  • CacheItems file -(3897) -
  • cell - -
  • client -(4864), (4906) -
  • database server machines listed in client CellServDB file -(3919) -
  • database server machines listed in server CellServDB file -(3927) -
  • membership of client machine -(3977) -
  • membership of server machine -(3982) -
  • name, setting -(4628) -
  • setuid status, displaying -(4835) -
  • setuid status, setting -(4955) -
  • -
  • cell argument - -
  • on backup commands -(4212) -
  • on bos commands -(4444) -
  • on kas commands -(5065) -
  • on pts commands -(5231) -
  • on uss commands -(5511) -
  • on vos commands -(5578) -
  • -
  • CellServDB file (client version) -(3912) - -
  • displaying contents as copied into kernel memory -(4865) -
  • -
  • CellServDB file (server version) -(3920) - -
  • adding entry with bos addhost command -(4454) -
  • creating with bos setcellname command -(4623) -
  • displaying contents with bos listhosts command -(4558) -
  • removing entry with bos removehost command -(4590) -
  • -
  • cellular mount point -(4902) -
  • CFG_device_name file -(3900) -
  • changing - -
  • data cache size -(4947) -
  • database server machines listed in client kernel -(4905) -
  • name of Protection Database entry -(5393) -
  • owner of Protection Database entry -(5251) -
  • password in Authentication Database -(5189) -
  • volume name -(5824) -
  • volume quota -(4967) -
  • -
  • character special device - -
  • defining with package -(4052) -
  • -
  • character string - -
  • converting to octal key form -(5164) -
  • -
  • checking - -
  • AFS client as exporter non-AFS file system -(4800) -
  • server machine status -(4731) -
  • -
  • cleaning - -
  • ACL -(4748) -
  • -
  • clearing - -
  • ACL -(4932) -
  • -
  • client machine - -
  • as exporter of non-AFS file system -(4802) -
  • cell membership -(3978) -
  • changing database server machines known to -(4909) -
  • changing size of data cache -(4951) -
  • configuring local disk with package -(5200) -
  • displaying database server machines known to -(4863) -
  • displaying home cell of -(5018) -
  • displaying system type -(4989), (5470) -
  • setting system type -(4993) -
  • -
  • client machines statistic in scout -(5463) -
  • client portion of Update Server - -
  • see entry: upclient process -(5500) -
  • -
  • clone -(5785) - -
  • forcing creation of new -(5802) -
  • -
  • cloning - -
  • for backup -(5599), (5608) -
  • volume for replication -(5790) -
  • -
  • commands - -
  • afsd -(4185) -
  • afsmonitor -(4194) -
  • backup (introduction) -(4203) -
  • backup adddump -(4219) -
  • backup addhost -(4230) -
  • backup addvolentry -(4239), (4246) -
  • backup addvolset -(4256) -
  • backup apropos -(4262) -
  • backup dbverify -(4265) -
  • backup deldump -(4268) -
  • backup deletedump -(4276) -
  • backup delhost -(4280) -
  • backup delvolentry -(4285) -
  • backup delvolset -(4291) -
  • backup diskrestore -(4297) -
  • backup dump -(4303) -
  • backup dumpinfo -(4317) -
  • backup help -(4325) -
  • backup interactive -(4328) -
  • backup jobs -(4333) -
  • backup kill -(4340) -
  • backup labeltape -(4346) -
  • backup listdumps -(4358) -
  • backup listhosts -(4366) -
  • backup listvolsets -(4375) -
  • backup quit -(4381) -
  • backup readlabel -(4387) -
  • backup restoredb -(4395) -
  • backup savedb -(4398) -
  • backup scantape -(4401) -
  • backup setexp -(4407) -
  • backup status -(4413) -
  • backup volinfo -(4417) -
  • backup volrestore -(4423) -
  • backup volsetrestore -(4429) -
  • bos (introduction) -(4435) -
  • bos addhost -(4452) -
  • bos addkey -(4464) -
  • bos adduser -(4472) -
  • bos apropos -(4474) -
  • bos create -(4486) -
  • bos delete -(4510) -
  • bos exec -(4514) -
  • bos getdate -(4520) -
  • bos getlog -(4528) -
  • bos getrestart -(4544) -
  • bos help -(4546) -
  • bos install -(4553) -
  • bos listhosts -(4560) -
  • bos listkeys -(4567) -
  • bos listusers -(4574) -
  • bos prune -(4582) -
  • bos removehost -(4592) -
  • bos removekey -(4597) -
  • bos removeuser -(4602) -
  • bos restart -(4608) -
  • bos salvage -(4616) -
  • bos setauth -(4621) -
  • bos setcellname -(4629) -
  • bos setrestart -(4635) -
  • bos shutdown -(4641) -
  • bos start -(4649) -
  • bos startup -(4655) -
  • bos status -(4660) -
  • bos stop -(4670) -
  • bos uninstall -(4677) -
  • bosserver -(4681) -
  • buserver -(4686) -
  • butc -(4692) -
  • dlog -(4698) -
  • dpass -(4700) -
  • executing remotely -(4512) -
  • fileserver -(4702) -
  • fms -(4706) -
  • fs apropos -(4726) -
  • fs checkservers -(4729) -
  • fs checkvolumes -(4737) -
  • fs cleanacl -(4752) -
  • fs copyacl -(4756) -
  • fs diskfree -(4771) -
  • fs examine -(4795) -
  • fs exportafs -(4797) -
  • fs flush -(4812) -
  • fs flushmount -(4818) -
  • fs flushvolume -(4824) -
  • fs getcacheparms -(4826) -
  • fs getcellstatus -(4834) -
  • fs getclientaddrs -(4840) -
  • fs getserverprefs -(4845) -
  • fs help -(4852) -
  • fs listacl -(4859) -
  • fs listcells -(4868) -
  • fs listquota -(4870) -
  • fs lsmount -(4888) -
  • fs messages -(4892) -
  • fs mkmount -(4897) -
  • fs newcell -(4912) -
  • fs quota -(4914) -
  • fs rmmount -(4923) -
  • fs setacl -(4936) -
  • fs setcachesize -(4954) -
  • fs setcell -(4960) -
  • fs setclientaddrs -(4962) -
  • fs setquota -(4970) -
  • fs setserverprefs -(4972) -
  • fs setvol -(4984) -
  • fs storebehind -(4985) -
  • fs sysname -(4988) -
  • fs whereis -(5007) -
  • fs whichcell -(5014) -
  • fs wscell -(5020) -
  • fstrace (introduction) -(5026) -
  • fstrace apropos -(5029) -
  • fstrace dump -(5032) -
  • fstrace help -(5034) -
  • fstrace lslog -(5037) -
  • fstrace lsset -(5039) -
  • fstrace setlog -(5041) -
  • fstrace setset -(5043) -
  • ftpd (AFS version) -(5045) -
  • inetd (AFS version) -(5050) -
  • kadb_check -(5055) -
  • kas apropos -(5071) -
  • kas create -(5074) -
  • kas delete -(5079) -
  • kas examine -(5083) -
  • kas forgetticket -(5105) -
  • kas help -(5110) -
  • kas list -(5113) -
  • kas listtickets -(5117) -
  • kas noauthentication -(5120) -
  • kas quit -(5125) -
  • kas setfields -(5131) -
  • kas setpassword -(5148) -
  • kas statistics -(5156) -
  • kas stringtokey -(5162) -
  • kas unlock -(5168) -
  • kaserver -(5171) -
  • kdb -(5174) -
  • klog -(5177) -
  • knfs -(5184) -
  • kpasswd -(5188) -
  • kpwvalid -(5195) -
  • package -(5198) -
  • package apropos -(5205) -
  • package help -(5208) -
  • package_test -(5211) -
  • pagsh -(5214) -
  • prdb_check -(5218) -
  • pts adduser -(5236) -
  • pts apropos -(5245) -
  • pts chown -(5248) -
  • pts creategroup -(5253) -
  • pts createuser -(5275) -
  • pts delete -(5294) -
  • pts examine -(5304) -
  • pts help -(5351) -
  • pts listentries -(5354) -
  • pts listmax -(5360) -
  • pts listowned -(5368) -
  • pts membership -(5375) -
  • pts removeuser -(5383) -
  • pts rename -(5391) -
  • pts setfields -(5397) -
  • pts setmax -(5410) -
  • ptserver -(5418) -
  • rcp (AFS version) -(5423) -
  • rsh (AFS version) -(5429) -
  • runntp -(5434) -
  • rxdebug -(5441) -
  • salvager -(5443) -
  • scout -(5448) -
  • sys -(5469) -
  • tokens -(5478) -
  • translate_et -(5482) -
  • udebug -(5485) -
  • unlog -(5488) -
  • up -(5494) -
  • upclient -(5498) -
  • upserver -(5504) -
  • uss add -(5518) -
  • uss apropos -(5537) -
  • uss bulk -(5540) -
  • uss delete -(5544) -
  • uss help -(5555) -
  • vldb_check -(5558) -
  • vlserver -(5561) -
  • volinfo -(5565) -
  • volserver -(5567) -
  • vos (introduction) -(5569) -
  • vos addsite -(5588) -
  • vos apropos -(5594) -
  • vos backup -(5597) -
  • vos backupsys -(5606) -
  • vos changeaddr -(5613) -
  • vos create -(5615) -
  • vos delentry -(5639) -
  • vos dump -(5643) -
  • vos examine -(5655) -
  • vos help -(5696) -
  • vos listaddrs -(5699) -
  • vos listpart -(5704) -
  • vos listvldb -(5709) -
  • vos listvol -(5730) -
  • vos lock -(5762) -
  • vos move -(5767) -
  • vos partinfo -(5776) -
  • vos release -(5783) -
  • vos remove -(5806) -
  • vos remsite -(5814) -
  • vos rename -(5820) -
  • vos restore -(5830) -
  • vos status -(5834) -
  • vos syncserv -(5839) -
  • vos syncvldb -(5847) -
  • vos unlock -(5856) -
  • vos unlockvldb -(5860) -
  • vos zap -(5864) -
  • xfs_size_check -(5868) -
  • xstat_cm_test -(5870) -
  • xstat_fs_test -(5872) -
  • -
  • common options - -
  • on backup commands -(4210) -
  • on bos commands -(4442) -
  • on fs commands -(4720) -
  • on fstrace commands -(5024) -
  • on kas commands -(5057) -
  • on pts commands -(5227) -
  • on uss commands -(5508) -
  • on vos commands -(5576) -
  • -
  • configuration file - -
  • see entry: afsmonitor configuration file -(4037) -
  • see entry: CFG_<device_name> configuration file -(3904) -
  • see entry: files -(3862) -
  • see entry: package configuration file -(4039) -
  • -
  • configuring - -
  • Cache Manager with afsd -(4187) -
  • Cache Manager with fs commands -(4718) -
  • local disk of client with package -(5199) -
  • -
  • connections statistic in scout -(5459) -
  • contacting - -
  • file server with fs commands -(4717) -
  • -
  • controller file - -
  • see entry: files -(3867) -
  • -
  • controlling - -
  • Cache Manager with fs commands -(4719) -
  • server process status with entry in BosConfig file -(3883) -
  • -
  • converting - -
  • character string to octal key form -(5163) -
  • -
  • copying - -
  • access control list -(4754) -
  • file remotely with rcp command (AFS version) -(5426) -
  • files and directories -(5495) -
  • -
  • core files - -
  • removing from /usr/afs/logs directory -(4581) -
  • -
  • creating - -
  • Authentication Database entry -(5075) -
  • Authentication Database entry with uss -(5523) -
  • backup volume -(5600) -
  • backup volumes, many at once -(5609) -
  • buserver process -(4488) -
  • directory with uss -(4125), (4145) -
  • dump level in Backup System dump hierarchy -(4221) -
  • file with uss -(4133), (4139) -
  • fs process -(4490) -
  • group in Protection Database -(5255) -
  • hard link with uss -(4152) -
  • kaserver process -(4492) -
  • machine entry in Protection Database -(5279) -
  • mount point -(4894) -
  • mount point with uss -(4168) -
  • PAG with pagsh command -(5216) -
  • privileged user in UserList file -(4468) -
  • Protection Database entry with uss -(5522) -
  • ptserver process -(4494) -
  • read-only volume -(5789) -
  • read/write volume -(5616) -
  • runntp process -(4496) -
  • server encryption key -(4458) -
  • server process in BosConfig file -(4479) -
  • symbolic link with uss -(4158) -
  • Tape Coordinator entry in Backup Database -(4236) -
  • ticket (tokens) for server process -(5178) -
  • upclient process -(4498) -
  • upserver process -(4500) -
  • user account with uss -(5520) -
  • user accounts in bulk -(5541) -
  • user entry in Protection Database -(5278) -
  • vlserver process -(4502) -
  • volume (see type--read/write, etc.) -(5617) -
  • volume set in Backup Database -(4259) -
  • volume with uss -(4167), (5524) -
  • -
  • creation date - -
  • recorded in volume header -(5679), (5755) -
  • -
  • creator - -
  • Protection Database entry, displaying -(5332) -
  • -
  • cron process - -
  • creating with bos create command -(4505) -
  • recorded in BosConfig file -(3886) -
  • -
  • curses graphics utility - -
  • afsmonitor program -(4198) -
  • -
  • -D - -
  • D instruction - -
  • package configuration file -(4056) -
  • uss template file -(4120) -
  • -
  • daily restart time for new binaries - -
  • see entry: restart times for BOS Server -(4540) -
  • -
  • data - -
  • availability interrupted by dumping -(5650) -
  • -
  • data cache - -
  • changing size of -(4949) -
  • displaying amount used -(4828) -
  • displaying size -(4827) -
  • flushing directory/file -(4806) -
  • flushing entire volume -(4819) -
  • flushing mount point -(4813) -
  • resetting to default size -(4950) -
  • setting location with afsd -(4191) -
  • setting size with afsd -(4190) -
  • -
  • database file - -
  • see entry: files -(3866) -
  • -
  • database server machine - -
  • adding to CellServDB file (server) -(4455) -
  • changing client kernel list of -(4907) -
  • displaying from client kernel -(4861) -
  • displaying list in CellServDB file (server) -(4559) -
  • listed in client CellServDB file -(3918) -
  • listed in server CellServDB file -(3926) -
  • removing from CellServDB file (server) -(4591) -
  • -
  • date on file - -
  • see entry: time stamp -(4524) -
  • -
  • date-specific restore - -
  • see entry: restoring -(4427) -
  • -
  • default - -
  • ACL for new volume -(5627) -
  • volume quota -(5628) -
  • -
  • define statement - -
  • package configuration file -(4085) -
  • -
  • defining - -
  • block special device with package -(4044) -
  • capacity of Backup System tape -(4348) -
  • character special device with package -(4051) -
  • directory with package -(4059) -
  • file with package -(4066) -
  • privileged user in UserList file -(4467) -
  • read-only site in VLDB -(5589) -
  • server encryption key -(4457) -
  • socket with package -(4080) -
  • symbolic link with package -(4073) -
  • system type of client machine -(4991) -
  • -
  • delete instruction in uss bulk input file -(4105) -
  • deleting - -
  • Authentication Database entry -(5080) -
  • Authentication Database entry with uss -(5549) -
  • dump level from Backup Database -(4272) -
  • dump record from Backup Database -(4279) -
  • Protection Database entry -(5295) -
  • Protection Database entry with uss -(5548) -
  • see also entry: removing -(4273) -
  • server process from BosConfig file -(4507) -
  • Tape Coordinator entry from Backup Database -(4284) -
  • user account with uss -(5546) -
  • VLDB entry (but not volume header) -(5641) -
  • volume set from Backup Database -(4295) -
  • volume with uss -(5552) -
  • -
  • delvolume instruction in uss bulk input file -(4107) -
  • desynchronization of VLDB/volume headers - -
  • fixing -(5845), (5854) -
  • -
  • determining - -
  • cell membership of client machine -(3979) -
  • cell membership of server machine -(3984) -
  • filemark size for tape device -(4709) -
  • success of replication -(5793) -
  • tape capacity (Backup System) -(4710) -
  • -
  • device - -
  • see entry: block special device -(4046) -
  • see entry: character special device -(4053) -
  • -
  • directories - -
  • /usr/afs/bin -(4526), (4583) -
  • /usr/afs/logs -(4535), (4584) -
  • -
  • directory - -
  • creating with uss -(4126), (4146) -
  • defining with package -(4060) -
  • displaying ACL -(4855) -
  • displaying home cell -(5012) -
  • flushing from cache -(4809) -
  • name, translating to volume name -(4766) -
  • name, translating to volume name or ID -(4783) -
  • overwriting with uss -(5532) -
  • setting ACL -(4933) -
  • -
  • directory/file name - -
  • translating to volume name -(4880) -
  • -
  • disabling - -
  • export of non-AFS file system -(4799) -
  • -
  • discarding - -
  • authenticated identity in kas interactive mode -(5121) -
  • ticket/tokens -(5490) -
  • tickets -(5108) -
  • -
  • disk cache - -
  • CacheItems file -(3899) -
  • Vn files -(3989) -
  • VolumeItems file -(4003) -
  • -
  • disk partition - -
  • see entry: partition -(4300) -
  • -
  • displaying - -
  • ACL -(4857) -
  • all entries in Authentication Database -(5114) -
  • Authentication Database entry -(5084) -
  • Backup System operations, pending and running -(4338) -
  • BOS Server restart times -(4538) -
  • Cache Manager preference ranks for server machines -(4848) -
  • CellServDB file (server version) contents -(4557) -
  • client interfaces registered with File Server -(4843) -
  • client machine -(5017) -
  • creator of Protection Database entry -(5317) -
  • data cache amount used -(4829) -
  • data cache size -(4830) -
  • database server machines from client kernel -(4860) -
  • database server machines in CellServDB file (server version) -(4556) -
  • directory/file location -(5003) -
  • dump hierarchy from Backup Database -(4362) -
  • dump level expiration date from Backup System -(4363) -
  • dump record from Backup Database -(4320) -
  • dump record from tape (Backup System) -(4403) -
  • expiration date for tape from Backup Database -(4321) -
  • file server machine entries from VLDB -(5701) -
  • group memberships, number -(5318) -
  • group-creation quota -(5320) -
  • groups owned by user/group -(5369) -
  • groups user or machine belongs to -(5377) -
  • home cell of directory/file -(5010) -
  • job ID number (Backup System) -(4337) -
  • key version number from Authentication Database -(5088) -
  • key version number from KeyFile file -(4568) -
  • log files from server machine -(4529) -
  • max group id counter in Protection Database -(5363) -
  • max user id counter in Protection Database -(5364) -
  • members of group -(5376) -
  • mount point -(4885) -
  • owner of Protection Database entry -(5316) -
  • partition blocks available -(4764), (4782) -
  • partition blocks used -(4763) -
  • partition percent used -(4762), (4879) -
  • partition size -(4761), (4781) -
  • partition size, space available -(5777) -
  • partitions on file server machine -(5707) -
  • port offset number for Tape Coordinator, from Backup Database -(4373) -
  • privacy flags on Protection Database entry -(5319) -
  • privileged users from UserList file -(4570) -
  • Protection Database entries, all -(5355) -
  • Protection Database entry -(5307) -
  • server encryption key in Authentication Database -(5091) -
  • server encryption keys in KeyFile file -(4563) -
  • server machine status -(4732) -
  • server process run status and BosConfig entry -(4659) -
  • setuid status -(4837) -
  • statistics from Authentication Server -(5157) -
  • system type of client machine -(4990), (5471) -
  • Tape Coordinator entry from Backup Database -(4372) -
  • Tape Coordinator status -(4415) -
  • tape label (Backup System) -(4393) -
  • tickets held by issuer -(5118) -
  • time stamp on binary file -(4517) -
  • VLDB entry for volume -(5711) -
  • volume dump history from Backup Database -(4420) -
  • volume entry from VLDB -(5710) -
  • volume header -(5731) -
  • volume header and VLDB entry -(5656) -
  • volume percent used -(4878) -
  • volume quota percent used -(4916) -
  • volume quota, with volume & partition info. -(4779) -
  • volume quota, with volume size -(4876) -
  • Volume Server status -(5836) -
  • volume set (Backup System) -(4379) -
  • volume size -(4780), (4877) -
  • -
  • dlog command -(4697) -
  • dpass command -(4699) -
  • dryrun flag - -
  • on uss commands -(5513) -
  • -
  • dumb terminal - -
  • use with afsmonitor -(4202) -
  • -
  • dump - -
  • appended, creating -(4308) -
  • creating -(4315) -
  • full, creating -(4309) -
  • incremental, creating -(4310) -
  • initial, creating -(4307) -
  • -
  • dump hierarchy (Backup System) - -
  • adding dump level -(4223) -
  • displaying -(4360) -
  • removing dump level -(4270) -
  • -
  • dump level (Backup System) - -
  • creating in dump hierarchy -(4220) -
  • displaying -(4359) -
  • removing from dump hierarchy -(4269) -
  • setting expiration date at creation time -(4225) -
  • setting expiration date on existing -(4408) -
  • -
  • dump record (Backup System) - -
  • created in Backup Database during dump -(4306) -
  • deleting from Backup Database -(4277) -
  • displaying for single volume -(4421) -
  • displaying from Backup Database -(4318) -
  • reading from tape -(4402) -
  • -
  • dumping - -
  • volume with backup dump command -(4304) -
  • volume with vos dump command -(5644) -
  • -
  • -E - -
  • E instruction - -
  • uss template file -(4131) -
  • -
  • enabling - -
  • export of non-AFS file system -(4798) -
  • -
  • encryption key - -
  • in Authentication Database -(5101) -
  • see entry: server encryption key -(3937) -
  • -
  • End-of-File mark - -
  • see: filemark -(4712) -
  • -
  • entering - -
  • interactive mode (Backup System) -(4330) -
  • -
  • entry - -
  • Authentication Database (see entry: Authentication Database) -(5100) -
  • VLDB (see entry: volume, VLDB entry) -(5658) -
  • -
  • EOF mark - -
  • see: filemark -(4713) -
  • -
  • error codes - -
  • translating numbers to messages -(5483) -
  • -
  • examining - -
  • see entry: displaying -(5305) -
  • -
  • executing - -
  • commands remotely -(4511) -
  • -
  • exiting - -
  • interactive mode (Backup System) -(4383) -
  • -
  • expiration date - -
  • of Authentication Database entry, displaying -(5092) -
  • of Authentication Database entry, setting -(5135) -
  • -
  • expiration date (Backup System) - -
  • displaying for dump level -(4364) -
  • displaying for tape -(4322) -
  • setting for dump level at creation -(4227) -
  • setting for existing dump level -(4410) -
  • -
  • export of non-AFS file system - -
  • by AFS client -(4801) -
  • -
  • -F - -
  • F instruction - -
  • package configuration file -(4063) -
  • uss template file -(4137) -
  • -
  • failed authentication attempts - -
  • displaying limit from Authentication Database entry -(5096) -
  • -
  • fast flag on vos listvol command -(5734) -
  • fetching statistic in scout -(5460) -
  • file - -
  • copying remotely with rcp command (AFS version) -(5427) -
  • creating with uss -(4134), (4140) -
  • defining with package -(4067) -
  • displaying ACL on parent directory -(4856) -
  • displaying home cell -(5011) -
  • flushing from cache -(4810) -
  • name, translating to volume name -(4767) -
  • name, translating to volume name or ID -(4784) -
  • overwriting with uss -(5533) -
  • setting ACL on parent directory -(4934) -
  • -
  • FILE instruction in CFG_device_name file -(3908) -
  • File Server - -
  • client interfaces not registered, setting -(3957) -
  • client interfaces registered, displaying -(4842) -
  • client interfaces registered, setting -(3946), (4964) -
  • contacting with fs commands -(4715) -
  • interfaces not registered in VLDB - -
  • setting in NetRestrict file -(3961) -
  • -
  • interfaces registered in VLDB - -
  • listed in sysid file -(4025) -
  • setting in NetInfo file -(3950) -
  • -
  • log file -(3930) -
  • monitoring status with afsmonitor -(4195) -
  • monitoring status with scout -(5451) -
  • starting -(4703) -
  • -
  • file server machine - -
  • as site for volume -(5002) -
  • displaying AFS partitions on -(5706) -
  • displaying interfaces from VLDB server entry -(5700) -
  • displaying log files -(4532) -
  • installing AFS server binary files -(4551) -
  • monitoring outages of -(5456) -
  • partition size and space available, displaying -(5780) -
  • restoring all volumes on partition (Backup System) -(4301) -
  • salvaging volumes on -(4611) -
  • see also entry: server machine -(4533) -
  • -
  • file system - -
  • export of non-AFS by AFS client -(4803) -
  • restoring internal consistency (salvaging) -(4614) -
  • -
  • FileLog file -(3928) -
  • filemark - -
  • size, determining for tape device -(4711) -
  • -
  • files - -
  • afszcm.cat -(4004) -
  • AuthLog -(3869) -
  • AuthLog.dir and AuthLog.pag -(3872) -
  • BackupLog -(3875) -
  • bdb.DB0 -(4007) -
  • bdb.DBSYS1 -(4009) -
  • BosConfig -(3881) -
  • BosLog -(3878) -
  • CacheItems -(3898) -
  • CellServDB (client version) -(3913) -
  • CellServDB (server version) -(3921) -
  • CFG_device_name -(3901) -
  • FileLog -(3929) -
  • FORCESALVAGE -(3932) -
  • kaserver.DB0 -(4012) -
  • kaserver.DBSYS1 -(4014) -
  • kaserverauxdb -(4017) -
  • KeyFile -(3935) -
  • NetInfo (client version) -(3943) -
  • NetInfo (server version) -(3949) -
  • NetRestrict (client version) -(3954) -
  • NetRestrict (server version) -(3960) -
  • NoAuth -(3965) -
  • prdb.DB0 -(4019) -
  • prdb.DBSYS1 -(4021) -
  • SALVAGE.fs -(3968) -
  • SalvageLog -(3973) -
  • sysid -(4024) -
  • tapeconfig -(4028) -
  • ThisCell (client version) -(3976) -
  • ThisCell (server version) -(3981) -
  • UserList -(3986) -
  • Vn -(3988) -
  • Vvol_ID.vol -(3991) -
  • vldb.DB0 -(4031) -
  • vldb.DBSYS1 -(4033) -
  • VLLog -(3995) -
  • VolserLog -(3998) -
  • VolumeItems -(4001) -
  • -
  • fileserver command -(4701) -
  • fileserver process - -
  • part of fs entry in BosConfig file -(3888) -
  • -
  • flag - -
  • see entry: privacy flags -(5334) -
  • see entry: status flag, in BosConfig file -(3893) -
  • -
  • flushing - -
  • directory/file from data cache -(4807) -
  • entire volume from data cache -(4820) -
  • mount point from data cache -(4814) -
  • -
  • fms command -(4705) -
  • force flag - -
  • on pts commands -(5232) -
  • -
  • FORCESALVAGE file -(3931) -
  • fs commands - -
  • apropos -(4725) -
  • checkservers -(4728) -
  • checkvolumes -(4736) -
  • cleanacl -(4751) -
  • common options -(4721) -
  • copyacl -(4755) -
  • diskfree -(4770) -
  • examine -(4794) -
  • exportafs -(4796) -
  • flush -(4811) -
  • flushmount -(4817) -
  • flushvolume -(4823) -
  • getcacheparms -(4825) -
  • getcellstatus -(4833) -
  • getclientaddrs -(4839) -
  • getserverprefs -(4844) -
  • help -(4851) -
  • listacl -(4858) -
  • listcells -(4867) -
  • listquota -(4869) -
  • lsmount -(4887) -
  • messages -(4891) -
  • mkmount -(4896) -
  • newcell -(4911) -
  • privilege requirements -(4724) -
  • quota -(4913) -
  • rmmount -(4922) -
  • setacl -(4935) -
  • setcachesize -(4953) -
  • setcell -(4959) -
  • setclientaddrs -(4961) -
  • setquota -(4969) -
  • setserverprefs -(4971) -
  • setvol -(4983) -
  • storebehind -(4986) -
  • sysname -(4987) -
  • whereis -(5006) -
  • whichcell -(5013) -
  • wscell -(5019) -
  • -
  • fs process - -
  • creating -(4504) -
  • creating with bos create command -(4489) -
  • recorded in BosConfig file -(3887) -
  • -
  • fstrace commands - -
  • apropos -(5028) -
  • common options -(5025) -
  • dump -(5031) -
  • help -(5033) -
  • lslog -(5036) -
  • lsset -(5038) -
  • privilege requirements -(5022) -
  • setlog -(5040) -
  • setset -(5042) -
  • -
  • ftpd command (AFS version) -(5044) -
  • full dump -(5651) - -
  • see entry: dump -(4312) -
  • -
  • full restore -(4431) - -
  • see entry: restoring -(4426) -
  • -
  • -G - -
  • G instruction - -
  • uss template file -(4143) -
  • -
  • gathering - -
  • statistics from Authentication Server -(5158) -
  • -
  • group - -
  • AFS GID, displaying -(5330) -
  • AFS GID, mapping to name -(5328) -
  • AFS GID, setting -(5269) -
  • defined -(5223) -
  • groups owned, displaying -(5370) -
  • members, adding -(5238) -
  • members, displaying -(5378) -
  • members, displaying number -(5335) -
  • members, removing -(5385) -
  • name, changing in Protection Database -(5395) -
  • name, mapping to AFS GID -(5329) -
  • name, rules for format -(5261) -
  • orphaned, displaying -(5371) -
  • prefix-less -(5263) -
  • privacy flags on Protection Database entry, displaying -(5338) -
  • privacy flags on Protection Database entry, setting -(5404) -
  • Protection Database entries, display all -(5357) -
  • Protection Database entry, creating -(5256) -
  • Protection Database entry, deleting -(5296) -
  • regular -(5262) -
  • -
  • group ID - -
  • see entry: AFS GID -(5268) -
  • -
  • group-creation quota - -
  • defined -(5349) -
  • displaying -(5337) -
  • lowered by pts creategroup command -(5259) -
  • restored by pts delete -(5302) -
  • setting on Protection Database entry -(5403) -
  • -
  • -H - -
  • hard link - -
  • creating with uss -(4153) -
  • overwriting with uss -(5534) -
  • -
  • help - -
  • for backup commands -(4326) -
  • for bos commands -(4547) -
  • for fs commands -(4853) -
  • for fstrace commands -(5035) -
  • for kas commands -(5111) -
  • for package commands -(5209) -
  • for pts commands -(5352) -
  • for uss commands -(5556) -
  • for vos commands -(5697) -
  • -
  • help flag - -
  • on backup commands -(4213) -
  • on bos commands -(4445) -
  • on fs commands -(4722) -
  • on fstrace commands -(5023), (5027) -
  • on kas commands -(5066) -
  • on pts commands -(5233) -
  • on uss commands -(5512) -
  • on vos commands -(5579) -
  • -
  • help string - -
  • see entry: keyword -(4476) -
  • -
  • home cell - -
  • displaying for client machine -(5016) -
  • displaying for directory/file -(5009) -
  • -
  • -I - -
  • idempotency - -
  • of vos commands -(5572) -
  • -
  • ifdef statement - -
  • package configuration file -(4091) -
  • -
  • ifndef statement - -
  • package configuration file -(4094) -
  • -
  • include statement - -
  • package configuration file -(4096) -
  • -
  • incremental dump -(5652) - -
  • see entry: dump -(4314) -
  • -
  • inetd command (AFS version) -(5049) -
  • initial dump - -
  • see entry: dump -(4313) -
  • -
  • initializing - -
  • Backup Server -(4689) -
  • Cache Manager with afsd -(4186) -
  • FTP Daemon -(5048) -
  • Internet daemon -(5053) -
  • NTPD, with runntp -(5437) -
  • Protection Server -(5421) -
  • server process -(4483) -
  • Tape Coordinator -(4695) -
  • -
  • installing - -
  • binary file -(4549) -
  • -
  • interactive mode - -
  • kas commands -(5062) -
  • kas, quitting from -(5129) -
  • -
  • interactive mode (Backup System) - -
  • entering -(4329) -
  • exiting -(4382) -
  • halting operation -(4342) -
  • -
  • Internet file transfer protocol daemon (AFS version) -(5047) -
  • Internet services daemon (AFS version) -(5052) -
  • -J - -
  • job ID number (Backup System) - -
  • displaying -(4336) -
  • using to halt operation -(4344) -
  • -
  • -K - -
  • kadb_check command -(5054) -
  • kas commands - -
  • apropos -(5070) -
  • common options -(5058) -
  • create -(5073) -
  • delete -(5078) -
  • examine -(5082) -
  • forgetticket -(5104) -
  • help -(5109) -
  • interactive mode -(5063) -
  • list -(5112) -
  • listtickets -(5116) -
  • noauthentication -(5124) -
  • privilege requirements -(5060) -
  • quit -(5126) -
  • setfields -(5130) -
  • setpassword -(5147) -
  • statistics -(5155) -
  • stringtokey -(5161) -
  • unlock -(5167) -
  • -
  • kaserver command -(5170) -
  • kaserver process - -
  • creating with bos create command -(4491) -
  • -
  • kaserver.DB0 file -(4011) -
  • kaserver.DBSYS1 file -(4013) -
  • kaserverauxdb file -(4016) -
  • kdb command -(5173) -
  • kernel - -
  • list of database server machines, changing -(4910) -
  • list of database server machines, examining -(4866) -
  • -
  • key - -
  • deriving from character string -(5165) -
  • see entry: server encryption key -(3938) -
  • -
  • key field in Authentication Database - -
  • setting using password -(5152) -
  • -
  • key version number -(3939) - -
  • displaying from Authentication Database -(5089) -
  • listing from KeyFile file -(4569) -
  • rules for -(4465) -
  • setting in KeyFile file -(4461) -
  • -
  • KeyFile file -(3934) - -
  • adding key with bos addkey command -(4460) -
  • displaying keys with bos listkeys command -(4565) -
  • removing key with bos removekey command -(4595) -
  • -
  • keyword - -
  • using to get help on backup commands -(4263) -
  • using to get help on bos commands -(4475) -
  • using to get help on fs commands -(4727) -
  • using to get help on fstrace commands -(5030) -
  • using to get help on kas commands -(5072) -
  • using to get help on package commands -(5206) -
  • using to get help on pts commands -(5246) -
  • using to get help on uss commands -(5538) -
  • using to get help on vos commands -(5595) -
  • -
  • klog command -(5176) -
  • knfs command -(5183) -
  • kpasswd command -(5187) -
  • kpwvalid command -(5194) -
  • -L - -
  • L instruction - -
  • package configuration file -(4070) -
  • uss template file -(4149) -
  • -
  • labeling - -
  • tape for Backup System -(4347) -
  • -
  • learning - -
  • home cell of directory/file -(5008) -
  • volume ID number given directory/file name -(4787) -
  • volume location given directory/file name -(5005) -
  • volume name given directory/file name -(4769), (4786), (4882) -
  • volume quota given directory/file name -(4788) -
  • -
  • leaving - -
  • kas interactive mode -(5127) -
  • -
  • lifetime - -
  • see entry: ticket lifetime -(5094) -
  • -
  • link - -
  • see entry: hard link, symbolic link -(4156) -
  • -
  • listing - -
  • see entry: displaying -(5306) -
  • tokens held by issuer -(5479) -
  • -
  • local disk - -
  • configuring on client, using package -(5201) -
  • -
  • localauth flag - -
  • on backup commands -(4214) -
  • on bos commands -(4446) -
  • on vos commands -(5580) -
  • -
  • lock status - -
  • displaying limit from Authentication Database entry -(5098) -
  • -
  • locking - -
  • VLDB entry -(5763) -
  • -
  • locktime - -
  • displaying limit from Authentication Database entry -(5097) -
  • setting in Authentication Database entry -(5140) -
  • -
  • log file - -
  • displaying from server machine -(4530) -
  • see entry: files -(3865) -
  • -
  • long flag on vos listvol command -(5735) -
  • -M - -
  • machine entry in Protection Database - -
  • adding to group -(5240) -
  • AFS UID, setting -(5288) -
  • creating -(5284) -
  • deleting -(5298) -
  • group memberships, displaying -(5380) -
  • group-creation quota, setting -(5407) -
  • privacy flags, setting -(5408) -
  • wildcard name format -(5285) -
  • -
  • maintaining - -
  • synchrony of VLDB with volume headers -(5575) -
  • -
  • max group id counter in Protection Database - -
  • affected by setting AFS GID -(5273) -
  • displaying -(5362) -
  • setting -(5412) -
  • -
  • max user id counter in Protection Database - -
  • affected by setting AFS UID -(5291) -
  • displaying -(5361) -
  • setting -(5411) -
  • -
  • MaxQuota field in volume header -(5678), (5754) -
  • member - -
  • Protection Database group, adding -(5241) -
  • Protection Database group, removing -(5387) -
  • -
  • memory state of BOS Server -(3895) -
  • messages - -
  • associated with volume, creating -(4981) -
  • associated with volume, examining -(4792) -
  • -
  • monitoring - -
  • disk usage with scout -(5449), (5466) -
  • File Server status with scout -(5450) -
  • outages with scout -(5455) -
  • -
  • MOUNT instruction in CFG_device_name file -(3909) -
  • mount point - -
  • cellular -(4903) -
  • creating -(4893) -
  • creating with uss -(4170) -
  • displaying -(4884) -
  • flushing from cache -(4816) -
  • read/write -(4901) -
  • regular -(4899) -
  • removing -(4918) -
  • -
  • mounting - -
  • foreign volume in local cell -(4904) -
  • -
  • moving - -
  • volume -(5768) -
  • -
  • mutual authentication -(3940) -
  • -N - -
  • name - -
  • cell (see entry: cell, name) -(4625) -
  • see entry: group name -(5257) -
  • see entry: username -(5292) -
  • see entry: volume name -(5825) -
  • -
  • NAME_CHECK instruction in CFG_device_name file -(3910) -
  • needs salvage status flag in volume header -(5668), (5744) -
  • negative ACL permissions - -
  • setting -(4928) -
  • -
  • NetInfo file (client version) -(3942) -
  • NetInfo file (server version) -(3948) -
  • NetRestrict file (client version) -(3953) -
  • NetRestrict file (server version) -(3959) -
  • Network File System - -
  • see entry: NFS -(4805) -
  • -
  • Network Time Protocol Daemon - -
  • see entry: NTPD -(5436) -
  • -
  • New release - -
  • status flag on site definition in VLDB entry -(5694), (5728) -
  • -
  • New Release flag in VLDB - -
  • as indicator of failed vos release operation -(5800) -
  • -
  • NFS - -
  • export of by AFS client -(4804) -
  • obtaining authenticated AFS access from non-supported client -(5186) -
  • -
  • NFS/AFS Translator - -
  • enabling Cache Manager -(4192) -
  • -
  • NoAuth file -(3964) -
  • noauth flag - -
  • on bos commands -(4447), (5581) -
  • on kas commands -(5067) -
  • on pts commands -(5234) -
  • -
  • NOCPW flag in Authentication Database entry -(5146) -
  • none shorthand notation for ACL permissions -(4941) -
  • NOSEAL flag in Authentication Database entry -(5145) -
  • Not released - -
  • status flag on site definition in VLDB entry -(5692), (5726) -
  • -
  • NOTGS flag in Authentication Database entry -(5144) -
  • NTPD - -
  • initializing with runntp -(5435) -
  • -
  • -O - -
  • Off-line status flag in volume header -(5667), (5743) -
  • offline message - -
  • creating -(4982) -
  • examining -(4793) -
  • -
  • Old release - -
  • status flag on site definition in VLDB entry -(5693), (5727) -
  • -
  • Old Release flag in VLDB - -
  • as indicator of failed vos release operation -(5801) -
  • -
  • OLD version of binary file - -
  • creation by bos install command -(4555) -
  • listing time stamp on -(4522) -
  • removing from /usr/afs/bin directory -(4579) -
  • use by bos uninstall command -(4679) -
  • -
  • On-line status flag in volume header -(5666), (5742) -
  • operating system - -
  • AFS system names -(4997) -
  • -
  • outages - -
  • BOS Server -(4684) -
  • monitoring with afsmonitor -(4197) -
  • monitoring with scout -(5453) -
  • -
  • overwriting - -
  • directories/files/links with uss -(5531) -
  • -
  • owner - -
  • Protection Database entry, changing -(5250) -
  • Protection Database entry, defined -(5345) -
  • Protection Database entry, displaying -(5331) -
  • Protection Database entry, setting -(5258) -
  • -
  • -P - -
  • package - -
  • C instruction in configuration file -(4049) -
  • command, syntax defined -(5197) -
  • configuration file (see entry: package configuration file) -(4038) -
  • D instruction in configuration file -(4057) -
  • define instruction in configuration file -(4084) -
  • defining block special device with B instruction -(4043) -
  • defining character special device -(4050) -
  • defining directory -(4058) -
  • defining file -(4065) -
  • defining socket -(4079) -
  • defining symbolic link -(4072) -
  • F instruction in configuration file -(4064) -
  • ifdef instruction in configuration file -(4090) -
  • ifndef instruction in configuration file -(4093) -
  • include instruction in configuration file -(4097) -
  • L instruction in configuration file -(4071) -
  • privilege requirements -(5203) -
  • S instruction in configuration file -(4078) -
  • undef instruction in configuration file -(4087) -
  • -
  • package commands - -
  • apropos -(5204) -
  • help -(5207) -
  • -
  • package configuration file -(4040) - -
  • B instruction -(4047) -
  • C instruction -(4054) -
  • D instruction -(4061) -
  • define instruction -(4086) -
  • defining block special device -(4048) -
  • defining character special device -(4055) -
  • defining directory -(4062) -
  • defining file -(4069) -
  • defining socket -(4083) -
  • defining symbolic link -(4076) -
  • F instruction -(4068) -
  • ifdef instruction -(4092) -
  • ifndef instruction -(4095) -
  • include instruction -(4098) -
  • L instruction -(4075) -
  • S instruction -(4082) -
  • undef instruction -(4089) -
  • -
  • package_test command -(5210) -
  • PAG - -
  • creating with pagsh command -(5215) -
  • -
  • pagsh command -(5213) -
  • partition - -
  • blocks available, displaying -(4760), (5779) -
  • blocks used, displaying -(4759) -
  • displaying blocks available -(4775) -
  • displaying for file server machine -(5705) -
  • displaying size -(4774) -
  • monitoring usage of -(5465) -
  • monitoring usage with scout -(5452) -
  • moving volumes -(5770) -
  • percent used, displaying -(4758) -
  • restoring all volumes (Backup System) -(4299) -
  • salvage triggered by SALVAGE.fs file -(3970) -
  • salvaging volumes on -(4610) -
  • size, displaying -(4757), (5778) -
  • -
  • partition argument - -
  • on vos commands -(5582) -
  • -
  • password - -
  • changing/setting in Authentication Database -(5190) -
  • checking quality of -(5154), (5193) -
  • checking quality using kpwvalid program -(5196) -
  • defining initial in Authentication Database -(5077) -
  • generating octal form of -(5166) -
  • imposing restrictions with kas setfields command -(5141) -
  • imposing restrictions with uss template A instruction -(4117) -
  • in Authentication Database -(5102) -
  • setting in Authentication Database -(5153) -
  • -
  • password lifetime - -
  • displaying from Authentication Database entry -(5095) -
  • setting in Authentication Database entry -(5138) -
  • -
  • password reuse - -
  • setting restrictions on in Authentication Database entry -(5139) -
  • -
  • password_for_admin argument - -
  • on kas commands -(5068) -
  • -
  • permanent name - -
  • see entry: tape (Backup System) -(4354) -
  • -
  • port offset number (Tape Coordinator) - -
  • assigning in Backup Database -(4233) -
  • displaying from Backup Database -(4369) -
  • -
  • portoffset argument - -
  • on backup commands -(4215) -
  • -
  • prdb.DB0 file -(4018) -
  • prdb.DBSYS1 file -(4020) -
  • prdb_check command -(5217) -
  • preference ranks - -
  • displaying -(4850) -
  • setting -(4977) -
  • -
  • prefix-less group - -
  • see entry: group -(5264) -
  • -
  • privacy flags - -
  • Protection Database entry, displaying -(5333) -
  • Protection Database entry, setting -(5402) -
  • -
  • privilege requirements - -
  • for backup commands -(4216) -
  • for bos commands -(4449) -
  • for fs commands -(4723) -
  • for fstrace commands -(5021) -
  • for kas commands -(5059) -
  • for package command -(5202) -
  • for pts commands -(5229) -
  • for uss commands -(5515) -
  • for vos commands -(5585) -
  • -
  • privileged users - -
  • adding to UserList file -(4470) -
  • listing from UserList file -(4571) -
  • removing from UserList file -(4599) -
  • setting ADMIN flag in Authentication Database -(5137) -
  • system:administrators group, adding -(5243) -
  • system:administrators group, removing -(5389) -
  • -
  • process - -
  • see entry: server process -(4439) -
  • -
  • program - -
  • controlling setuid status -(4956) -
  • displaying setuid status -(4836) -
  • -
  • protection - -
  • AFS vs. UNIX -(5220) -
  • -
  • Protection Database -(5225) - -
  • all entries, displaying -(5356) -
  • creator of entry defined -(5346) -
  • creator of entry, displaying -(5312) -
  • files constituting -(4022) -
  • group entry, creating -(5254) -
  • group entry, deleting -(5301) -
  • group entry, displaying -(5310) -
  • group members, adding -(5242) -
  • group members, removing -(5388) -
  • group membership, displaying -(5381) -
  • group memberships, displaying number -(5315) -
  • group-creation quota defined -(5348) -
  • group-creation quota, displaying -(5314) -
  • group-creation quota, setting -(5401) -
  • groups owned, displaying -(5373) -
  • machine entry, creating -(5277) -
  • machine entry, deleting -(5300) -
  • machine entry, displaying -(5309) -
  • max group id counter, displaying -(5366) -
  • max group id counter, setting -(5416) -
  • max user id counter, displaying -(5365) -
  • max user id counter, setting -(5415) -
  • membership count defined -(5347) -
  • membership count, displaying -(5340) -
  • name of entry, changing -(5392) -
  • owner of entry defined -(5344) -
  • owner of entry, changing -(5249) -
  • owner of entry, displaying -(5311) -
  • owner of entry, setting initial -(5266) -
  • privacy flags, displaying -(5313) -
  • privacy flags, setting -(5400) -
  • status, verifying -(5219) -
  • user entry, creating -(5276) -
  • user entry, creating with uss -(5526) -
  • user entry, deleting -(5299) -
  • user entry, deleting with uss -(5550) -
  • user entry, displaying -(5308) -
  • -
  • protection group - -
  • see entry: group -(5224) -
  • -
  • Protection Server -(5226) - -
  • listed in client CellServDB file -(3915) -
  • listed in server CellServDB file -(3923) -
  • starting -(5419) -
  • -
  • pts commands - -
  • adduser -(5235) -
  • apropos -(5244) -
  • chown -(5247) -
  • common options -(5228) -
  • creategroup -(5252) -
  • createuser -(5274) -
  • delete -(5293) -
  • examine -(5303) -
  • help -(5350) -
  • listentries -(5353) -
  • listmax -(5359) -
  • listowned -(5367) -
  • membership -(5374) -
  • privilege requirements -(5230) -
  • removeuser -(5382) -
  • rename -(5390) -
  • setfields -(5396) -
  • setmax -(5409) -
  • -
  • ptserver command -(5417) -
  • ptserver process - -
  • creating with bos create command -(4493) -
  • -
  • -Q - -
  • quitting - -
  • backup interactive mode -(4384) -
  • kas interactive mode -(5128) -
  • -
  • quota - -
  • (see entry: volume quota) -(5623) -
  • see entry: group-creation quota -(5260) -
  • -
  • -R - -
  • RClone field in volume header -(5676), (5752) -
  • rcp command (AFS version) -(5422) -
  • read shorthand notation for ACL permissions -(4943) -
  • read-only extension on volume name - -
  • added by vos release command -(5804) -
  • -
  • read-only volume - -
  • creating -(5788) -
  • defining site in VLDB -(5591) -
  • dumping -(5647) -
  • forcing Cache Manager to see new release -(4741) -
  • ID number -(5636) -
  • ID number in volume header -(5670), (5746) -
  • moving -(5773) -
  • name, changing -(5827) -
  • need for all-or-nothing release -(5796) -
  • removing -(5811) -
  • site, removing mistakenly defined -(5817) -
  • -
  • read/write mount point -(4900) -
  • read/write volume - -
  • cloning for backup version -(5598) -
  • cloning for replication -(5791) -
  • cloning multiple for backup version -(5607) -
  • creating -(5624) -
  • dumping -(5646) -
  • ID number -(5635) -
  • ID number in volume header -(5669), (5745) -
  • moving -(5771) -
  • name, changing -(5826) -
  • removing -(5809) -
  • -
  • regular expression - -
  • Backup System -(4253) -
  • -
  • regular group - -
  • see entry: group -(5265) -
  • -
  • regular mount point -(4898) -
  • release - -
  • status flags on site definitions in VLDB entry -(5689), (5723) -
  • -
  • ReleaseClone -(5798) -
  • ReleaseClone volume - -
  • ID number in volume header -(5672), (5748) -
  • -
  • releasing read-only volume - -
  • forcing Cache Manager to see -(4745) -
  • with vos release command -(5797) -
  • -
  • remote - -
  • command execution with bos exec -(4515) -
  • file copy with rcp command (AFS version) -(5425) -
  • shell with rsh command (AFS version) -(5431) -
  • -
  • removing - -
  • .BAK version of binary file -(4576) -
  • .OLD version of binary file -(4577) -
  • ACL entry -(4931) -
  • core file from /usr/afs/logs directory -(4580) -
  • database server machine from CellServDB file (server) -(4589) -
  • mount point -(4919) -
  • obsolete AFS UIDs from ACL -(4749) -
  • privileged users from UserList file -(4598) -
  • see also entry: deleting -(4274) -
  • server encryption key from KeyFile file -(4593) -
  • user from group -(5384) -
  • volume -(5808) -
  • volume entry from volume set in Backup Database -(4290) -
  • volume from site, without changing VLDB -(5865) -
  • volume site mistakenly defined -(5815) -
  • -
  • renaming - -
  • volume -(5821) -
  • -
  • replacing binary file - -
  • see entry: uninstalling -(4673) -
  • -
  • replication -(5784) - -
  • determining success of -(5792) -
  • forcing creation of new clone -(5803) -
  • need for all-or-nothing release -(5794) -
  • role of ReleaseClone in -(5799) -
  • -
  • restart times for BOS Server - -
  • displaying -(4536) -
  • setting -(4630) -
  • -
  • restarting - -
  • server process -(4606) -
  • -
  • restoring - -
  • internal consistency in file system (salvaging) -(4613) -
  • synchrony of VLDB and volume headers -(5843), (5852) -
  • volume, all in volume set (Backup System) -(4434) -
  • volume, all on partition (Backup System) -(4298) -
  • volume, single (Backup System) -(4425) -
  • volumes with vos command -(5832) -
  • -
  • ROnly field in volume header -(5674), (5750) -
  • rsh command (AFS version) -(5428) -
  • runntp command -(5433) -
  • runntp process - -
  • creating with bos create command -(4495) -
  • -
  • RWrite field in volume header -(5673), (5749) -
  • Rx - -
  • tracing activity -(5442) -
  • -
  • rxdebug command -(5440) -
  • -S - -
  • S instruction - -
  • package configuration file -(4077) -
  • uss template file -(4150) -
  • -
  • SALVAGE.fs file -(3967) -
  • SalvageLog file -(3972) -
  • salvager process - -
  • command for invoking manually -(5445) -
  • log file -(3974) -
  • part of fs entry in BosConfig file -(3890) -
  • SALVAGE.fs file as trigger -(3969) -
  • -
  • salvaging volume - -
  • with bos salvage command -(4612) -
  • with salvager command -(5444) -
  • -
  • savevolume instruction in uss bulk input file -(4109) -
  • scanning - -
  • Backup System tape -(4405) -
  • -
  • scout - -
  • command syntax for -(5447) -
  • disk usage -(5467) -
  • outages, monitoring -(5454) -
  • statistics available -(5457) -
  • -
  • server - -
  • see entry: server process -(4441) -
  • -
  • server argument - -
  • on bos commands -(4448) -
  • on vos commands -(5583) -
  • -
  • server encryption key -(3936) - -
  • adding to KeyFile file -(4459) -
  • displaying from Authentication Database -(5090) -
  • in Authentication Database -(5103) -
  • listing from KeyFile file -(4564) -
  • removing from KeyFile file -(4594) -
  • -
  • server machine - -
  • cell membership -(3983) -
  • checking status with fs checkservers command -(4730) -
  • displaying Cache Manager preference ranks -(4847) -
  • maintaining clock with NTPD -(5439) -
  • restart times, displaying -(4542) -
  • restart times, setting -(4633) -
  • setting authorization checking requirements -(4619) -
  • setting Cache Manager preference ranks -(4974) -
  • -
  • server partition - -
  • FORCESALVAGE file -(3933) -
  • Vvol_ID.vol files -(3992) -
  • -
  • server portion of Update Server - -
  • see entry: upserver process -(5506) -
  • -
  • server process -(4438) - -
  • BosConfig file entry -(3882) -
  • creating in BosConfig file -(4477) -
  • creating ticket (tokens) for -(5179) -
  • deleting from BosConfig file -(4508) -
  • displaying BosConfig entry -(4658) -
  • displaying log file -(4531) -
  • listing run status -(4657) -
  • listing time stamp on binary file -(4518) -
  • restarting -(4604) -
  • starting -(4650) -
  • starting (changing status flag in BosConfig) -(4642) -
  • starting on server -(4478) -
  • stopping (changing BosConfig status flag) -(4663) -
  • stopping (no change to BosConfig status flag) -(4636) -
  • stopping and immediately restarting -(4605) -
  • types -(3885) -
  • uninstalling binary file -(4675) -
  • -
  • server tickets - -
  • discarding -(5106) -
  • -
  • servers argument - -
  • on kas commands -(5069) -
  • -
  • setting - -
  • ACL -(4929) -
  • ACL with uss -(4128), (4180) -
  • AFS GID for group -(5270) -
  • AFS UID for user -(5289) -
  • Authentication Database entry flags and expiration dates -(5132) -
  • authorization checking requirements on server machine -(4618) -
  • BOS Server -(4632) -
  • Cache Manager preference ranks -(4976) -
  • cell name in CellServDB file -(4627) -
  • cell name in ThisCell file -(4626) -
  • client interfaces not registered with File Server, in NetInfo file -(3958) -
  • client interfaces registered with File Server -(4965) -
  • client interfaces registered with File Server, in NetInfo file -(3947) -
  • data cache size -(4948) -
  • expiration date on existing Backup System dump level -(4411) -
  • expiration date on new dump level (Backup System) -(4228) -
  • File Server interfaces not registered in VLDB, in NetRestrict file -(3963) -
  • File Server interfaces registered in VLDB, in NetInfo file -(3952) -
  • group-creation quota -(5399) -
  • initial owner for group -(5272) -
  • key field in Authentication Database, using password -(5149) -
  • key version number in KeyFile file -(4462) -
  • max group id counter in Protection Database -(5413) -
  • max user id counter in Protection Database -(5414) -
  • password in Authentication Database -(5192) -
  • privacy flags on Protection Database entry -(5398) -
  • setuid status -(4957) -
  • status flag in BOS Server memory to NotRun -(4669) -
  • status flag in BOS Server memory to Run -(4648), (4654) -
  • status flag in BosConfig file -(4482) -
  • status flag in BosConfig file to NotRun -(4668) -
  • status flag in BosConfig file to Run -(4647) -
  • system type of client machine -(4992) -
  • volume ACL, default at creation -(5629) -
  • volume quota -(4966), (4978) -
  • volume quota with uss -(4177) -
  • volume quota, default at creation -(5630) -
  • -
  • setuid privilege - -
  • controlling -(4958) -
  • displaying -(4838) -
  • -
  • shell - -
  • opening remotely with rsh command (AFS version) -(5432) -
  • -
  • shorthand notation for ACL permissions -(4940) -
  • shutting down - -
  • server process -(4638) -
  • -
  • simple process - -
  • creating with bos create command -(4503) -
  • recorded in BosConfig file -(3891) -
  • -
  • site - -
  • count in VLDB -(5685), (5719) -
  • -
  • size - -
  • displaying from Backup System tape label -(4392) -
  • partition, displaying with space available -(5781) -
  • recording on Backup System tape label -(4353) -
  • tape device filemark, determining -(4714) -
  • -
  • skipauth flag - -
  • on uss commands -(5514) -
  • -
  • socket - -
  • defining with package -(4081) -
  • -
  • starting - -
  • Backup Server -(4688) -
  • client portion of Update Server -(5501) -
  • NTPD, with runntp -(5438) -
  • process on server (changing status flag in BosConfig) -(4643) -
  • process on server (no change to status flag in BosConfig) -(4651) -
  • Protection Server -(5420) -
  • Salvager by hand -(5446) -
  • server portion of Update Server -(5507) -
  • server process -(4480) -
  • Tape Coordinator -(4694) -
  • -
  • statistics - -
  • Authentication Server -(5160) -
  • available in scout -(5458) -
  • -
  • status - -
  • displaying for server machine -(4733) -
  • listing for server process -(4661) -
  • Volume Server, displaying -(5835) -
  • -
  • status flag - -
  • for process in BOS Server memory, about -(3896) -
  • for process in BosConfig file, about -(3892) -
  • in Authentication Database, displaying -(5087) -
  • in Authentication Database, setting -(5134) -
  • release, on site definitions in VLDB entry -(5691), (5725) -
  • setting to NotRun for process, in BosConfig file -(4666) -
  • setting to NotRun for process, in BOS Server memory -(4639), (4667) -
  • setting to Run for process, in BOS Server memory -(4646), (4653) -
  • setting to Run for process, in BosConfig file -(4481), (4645) -
  • -
  • status flags in volume header -(5665), (5741) -
  • stopping - -
  • server process (changing status flag in BosConfig) -(4664) -
  • server process (no change to BosConfig status flag) -(4637) -
  • -
  • storing statistic in scout -(5461) -
  • symbolic link - -
  • creating with uss -(4159) -
  • defining with package -(4074) -
  • overwriting with uss -(5535) -
  • -
  • synchrony of VLDB and volume headers - -
  • maintained by VL and Volume Servers -(5574) -
  • restoring -(5842), (5848), (5851) -
  • -
  • sys (@sys) variable in pathnames -(4999), (5473) -
  • sys command -(5468) -
  • sysid file -(4023) -
  • sysname -(4996) -
  • system outages, reducing -(4683) -
  • system type - -
  • AFS system names -(4995) -
  • client machine -(4994) -
  • -
  • -T - -
  • tape (Backup System) - -
  • capacity on label, setting -(4350) -
  • capacity, determining -(4708) -
  • capacity, displaying from label -(4389) -
  • label, displaying -(4388) -
  • labeling -(4349) -
  • reading dump records -(4404) -
  • -
  • Tape Coordinator - -
  • Backup Database entry, creating -(4231) -
  • Backup Database entry, deleting -(4282) -
  • Backup Database entry, displaying -(4368) -
  • CFG_device_name file -(3903) -
  • configuration file for all devices -(4029) -
  • configuration file for specific device (CFG) -(3902) -
  • filemark size, determining -(4707) -
  • initializing -(4693) -
  • port offset number, assigning in Backup Database -(4232) -
  • port offset number, displaying from Backup Database -(4367) -
  • status, displaying -(4414) -
  • -
  • tape device (Backup System) - -
  • see entry: Tape Coordinator -(4238) -
  • -
  • tape name - -
  • see entry: tape (Backup System) -(4356) -
  • -
  • tapeconfig file -(4027) -
  • template file in uss - -
  • see entry: uss template file -(4111) -
  • -
  • terminal type - -
  • setting for afsmonitor -(4201) -
  • -
  • testing - -
  • package files -(5212) -
  • -
  • ThisCell file (client version) -(3975) -
  • ThisCell file (client) - -
  • displaying contents with fs wscell command -(5015) -
  • -
  • ThisCell file (server version) -(3980) -
  • ThisCell file (server) - -
  • creating with bos setcellname command -(4624) -
  • -
  • ticket lifetime - -
  • displaying from Authentication Database -(5093) -
  • setting in Authentication Database -(5136) -
  • -
  • tickets -(3941) - -
  • creating for server process -(5180) -
  • discarding -(5489) -
  • displaying for issuer of command -(5119) -
  • listing for user -(5480) -
  • see entry: server tickets -(5107) -
  • -
  • time stamp - -
  • listing for binary file -(4523) -
  • -
  • tokens - -
  • command -(5477) -
  • creating for server process -(5181) -
  • discarding -(5491) -
  • listing for user -(5476) -
  • -
  • tokens command -(5475) -
  • translate_et command -(5481) -
  • translating - -
  • AFS ID to user/group name -(5322) -
  • directory/file name to volume ID number -(4777) -
  • directory/file name to volume location -(5004) -
  • directory/file name to volume name -(4765), (4776), (4874) -
  • directory/file name to volume quota -(4778), (4875) -
  • directory/file name to volume quota percent used -(4917) -
  • user/group name to AFS ID -(5321) -
  • volume ID number from location -(5737) -
  • volume location from volume name/ID number -(5714) -
  • volume location to ID number -(5736) -
  • volume name to volume ID number -(5661) -
  • volume name/ID number to volume location -(5713) -
  • -
  • type flag for volume - -
  • VLDB entry -(5687), (5721) -
  • volume header -(5664), (5740) -
  • -
  • types of AFS server processes -(3884) -
  • -U - -
  • Ubik - -
  • tracing -(5486) -
  • -
  • udebug command -(5484) -
  • UID - -
  • see entry: AFS GID -(5324) -
  • see entry: AFS UID -(5323) -
  • see entry: UNIX UID -(5343) -
  • -
  • unauthenticating - -
  • while in kas interactive mode -(5122) -
  • with unlog command -(5492) -
  • -
  • undef statement - -
  • package configuration file -(4088) -
  • -
  • uninstalling - -
  • binary file -(4672) -
  • -
  • UNIX commands - -
  • ftpd (AFS version) -(5046) -
  • inetd (AFS version) -(5051) -
  • rcp (AFS version) -(5424) -
  • rsh (AFS version) -(5430) -
  • -
  • UNIX UID - -
  • functional difference from AFS UID -(5342) -
  • -
  • unlocking - -
  • volume entries (multiple) in VLDB -(5861) -
  • volume entry in VLDB -(5857) -
  • -
  • unlog command -(5487) -
  • UNMOUNT instruction in CFG_device_name file -(3911) -
  • unmounting volume -(4921) -
  • up command -(5493) -
  • upclient command -(5496) -
  • upclient process -(5497) - -
  • creating with bos create command -(4497) -
  • -
  • update date - -
  • recorded in volume header -(5681), (5757) -
  • -
  • Update Server - -
  • starting client portion -(5499) -
  • starting server portion -(5505) -
  • -
  • updating - -
  • Cache Manager mapping of volume names to IDs -(4740) -
  • -
  • upserver command -(5502) -
  • upserver process -(5503) - -
  • creating with bos create command -(4499) -
  • -
  • user - -
  • account (see entry: user account) -(5519) -
  • adding to group -(5239) -
  • AFS UID, setting -(5281), (5287) -
  • group memberships, displaying number -(5336) -
  • group-creation quota, setting in Protection Database -(5405) -
  • groups belonged to, displaying -(5379) -
  • groups owned, displaying -(5372) -
  • mapping name to AFS UID -(5327) -
  • name, assigning -(5283) -
  • name, assigning in uss -(5529) -
  • name, changing in Protection Database -(5394) -
  • name, rules for format -(5282) -
  • privacy flags on Protection Database entry, displaying -(5339) -
  • privacy flags on Protection Database entry, setting -(5406) -
  • Protection Database entries, display all -(5358) -
  • Protection Database entry, creating -(5280) -
  • Protection Database entry, deleting -(5297) -
  • removing from group -(5386) -
  • -
  • user account - -
  • creating multiple -(5542) -
  • creating with uss -(5521) -
  • deleting with uss -(5547) -
  • -
  • UserList file -(3985) - -
  • adding user with bos adduser command -(4469) -
  • displaying users with bos listusers command -(4572) -
  • removing user with bos removeuser command -(4600) -
  • -
  • usr/afs/bin directory - -
  • checking time stamps on files -(4525) -
  • removing .BAK files -(4585) -
  • removing .OLD files -(4586) -
  • -
  • usr/afs/logs directory - -
  • displaying log files -(4534) -
  • removing core files -(4587) -
  • -
  • uss - -
  • bulk input file (see entry: uss bulk input file) -(4099) -
  • creating directory -(4122) -
  • creating directory for even distribution -(4144) -
  • creating file by echoing -(4132) -
  • creating file from prototype -(4138) -
  • creating hard link -(4151) -
  • creating symbolic link -(4157) -
  • creating volume -(4163) -
  • improving password/login security -(4114) -
  • mounting volume -(4164) -
  • overwriting behavior -(5530) -
  • running command -(4182) -
  • setting ACL -(4130), (4166) -
  • setting volume quota -(4165) -
  • template file (see entry: uss template file) -(4110) -
  • -
  • uss bulk input file -(4101) - -
  • add instruction -(4102) -
  • delete instruction -(4104) -
  • delvolume instruction -(4106) -
  • savevolume instruction -(4108) -
  • -
  • uss commands - -
  • add -(5517) -
  • apropos -(5536) -
  • bulk -(5539) -
  • common options -(5509) -
  • delete -(5545) -
  • help -(5554) -
  • privilege requirements -(5516) -
  • -
  • uss template file -(4112) - -
  • A instruction -(4113), (4116) -
  • creating directory -(4123) -
  • creating directory for even distribution -(4148) -
  • creating file -(4136), (4142) -
  • creating hard link -(4155) -
  • creating mount point -(4174) -
  • creating symbolic link -(4161) -
  • creating volume -(4173) -
  • D instruction -(4124) -
  • D line -(4121) -
  • E instruction -(4135) -
  • F instruction -(4141) -
  • G line -(4147) -
  • improving password/login security -(4115) -
  • L instruction -(4154) -
  • S instruction -(4160) -
  • setting ACL -(4129), (4176) -
  • setting volume quota -(4175) -
  • V instruction -(4172) -
  • X instruction -(4183) -
  • zero length -(4178) -
  • -
  • -V - -
  • V instruction - -
  • uss template file -(4162) -
  • -
  • Vn file -(3987) -
  • Vvol_ID.vol file -(3990) -
  • variables - -
  • @sys in pathnames -(5000), (5474) -
  • -
  • verbose flag - -
  • on vos commands -(5584) -
  • -
  • VL Database - -
  • status, verifying -(5559) -
  • -
  • VL Server -(5571) - -
  • displaying Cache Manager preference ranks -(4849) -
  • listed in client CellServDB file -(3916) -
  • listed in server CellServDB file -(3924) -
  • setting Cache Manager preference ranks -(4975) -
  • starting -(5562) -
  • -
  • VLDB - -
  • deleting entry (but not volume header) -(5640) -
  • displaying file server machine interfaces -(5702) -
  • displaying volume entry and volume header -(5657) -
  • examining volume entry -(5712) -
  • files constituting -(4034) -
  • read-only site for volume, defining -(5592) -
  • read-only site for volume, removing mistakenly defined -(5818) -
  • release status flags in volume entry -(5690), (5724) -
  • server machine interfaces not registered - -
  • setting in NetRestrict file -(3962) -
  • -
  • server machine interfaces registered - -
  • listed in sysid file -(4026) -
  • setting in NetInfo file -(3951) -
  • -
  • site count for volume -(5686), (5720) -
  • synchronizing with volume headers -(5844), (5853) -
  • volume entry, creating -(5631) -
  • volume entry, locking -(5764) -
  • volume entry, unlocking -(5858) -
  • volume entry, unlocking multiple -(5862) -
  • volume type flags -(5688), (5722) -
  • -
  • vldb.DB0 file -(4030) -
  • vldb.DBSYS1 file -(4032) -
  • vldb_check command -(5557) -
  • VLLog file -(3994) -
  • vlserver command -(5560) -
  • vlserver process - -
  • creating with bos create command -(4501) -
  • -
  • volinfo command -(5564) -
  • VolserLog file -(3997) -
  • volserver command -(5566) -
  • volserver process - -
  • part of fs entry in BosConfig file -(3889) -
  • -
  • volume - -
  • backup (see entry: backup volume) -(5601) -
  • Cache Manager -(4738) -
  • counter in header for number of accesses -(5684), (5760) -
  • creating -(5619) -
  • creating mount point -(4895) -
  • creating with uss -(4169), (5525) -
  • Creation date in volume header -(5680), (5756) -
  • deleting with uss -(5553) -
  • displaying mount point -(4886) -
  • dump history, displaying -(4419) -
  • dumping using Backup System -(4305) -
  • dumping with vos dump command -(5645) -
  • flushing from data cache -(4822) -
  • header, displaying -(5732), (5733) -
  • header, displaying with VLDB entry -(5659) -
  • header, synchronizing with VLDB entry -(5840), (5849) -
  • host partition size, listing -(4772) -
  • ID number (see entry: volume ber) -(5633) -
  • ID number from name, translating -(5663) -
  • ID number, allocating -(5620) -
  • ID number, learning from volume location -(5739) -
  • ID number, translating to location -(5716) -
  • Last Update date in volume header -(5682), (5758) -
  • location, translating from name/ID number -(5717) -
  • location, translating to volume ID number -(5738) -
  • message associated with, creating -(4980) -
  • messages associated with, examining -(4791) -
  • moving -(5769) -
  • name to ID number, translating -(5662) -
  • name, assigning -(5618) -
  • name, changing -(5823) -
  • name, learning given directory/file name -(4785) -
  • name, translating to location -(5715) -
  • partition percent use, listing -(4871) -
  • percent use, listing -(4873) -
  • quota (see entry: volume quota) -(5622) -
  • read-only (see entry: read-only volume) -(5787) -
  • read-only site, removing mistakenly defined -(5816) -
  • read/write (see entry: read/write volume) -(5621) -
  • removing -(5807) -
  • removing mount point for -(4920) -
  • removing without changing VLDB -(5866) -
  • renaming -(5822) -
  • replicating -(5786) -
  • restoring all in volume set with Backup System -(4430) -
  • restoring single with Backup System -(4424) -
  • restoring with vos command -(5831) -
  • salvaging -(4609) -
  • size, listing -(4773), (4872) -
  • VLDB entry, displaying -(5718) -
  • VLDB entry, displaying with header -(5660) -
  • VLDB entry, locking -(5765) -
  • VLDB entry, synchronizing with header -(5841), (5850) -
  • volume ID number (see entry: volume ber) -(5634) -
  • -
  • volume entry (Backup System) - -
  • adding to volume set -(4241), (4248) -
  • displaying from volume set -(4377) -
  • removing from volume set -(4287) -
  • -
  • volume header - -
  • see entry: Vvol_ID.vol file -(3993) -
  • -
  • volume ID number - -
  • Cache Manager -(4744) -
  • defined -(5632) -
  • learning given directory/file name -(4789) -
  • -
  • volume location - -
  • learning given directory/file name -(5001) -
  • -
  • Volume Location Database - -
  • see entry: VLDB -(4035) -
  • -
  • Volume Location Server - -
  • log file -(3996) -
  • see entry: VL Server -(5563) -
  • -
  • volume name - -
  • Cache Manager -(4742) -
  • Cache Manager forced to see change to -(4743) -
  • learning given directory/file name -(4768), (4881) -
  • -
  • volume quota - -
  • allowing users to exceed -(4704) -
  • displaying percent used -(4915) -
  • displaying with volume & partition info. -(4790) -
  • displaying with volume size -(4883) -
  • recorded in volume header -(5677), (5753) -
  • setting -(4968), (4979) -
  • setting default for new volume -(5626) -
  • setting with uss -(4171) -
  • -
  • Volume Server -(5570) - -
  • log file -(3999) -
  • starting -(5568) -
  • status, displaying -(5837) -
  • -
  • volume set (Backup System) - -
  • creating -(4257) -
  • deleting -(4293) -
  • displaying -(4376) -
  • restoring -(4432) -
  • volume entry, adding -(4242), (4249) -
  • volume entry, removing -(4288) -
  • -
  • VolumeItems file -(4000) -
  • vos commands - -
  • addsite -(5587) -
  • apropos -(5593) -
  • backup -(5596) -
  • backupsys -(5605) -
  • changeaddr -(5612) -
  • common options -(5577) -
  • create -(5614) -
  • delentry -(5638) -
  • dump -(5642) -
  • examine -(5653) -
  • help -(5695) -
  • idempotency -(5573) -
  • listaddrs -(5698) -
  • listpart -(5703) -
  • listvldb -(5708) -
  • listvol -(5729) -
  • lock -(5761) -
  • move -(5766) -
  • partinfo -(5775) -
  • privilege requirements -(5586) -
  • release -(5782) -
  • remove -(5805) -
  • remsite -(5813) -
  • rename -(5819) -
  • restore -(5829) -
  • status -(5833) -
  • syncserv -(5838) -
  • syncvldb -(5846) -
  • unlock -(5855) -
  • unlockvldb -(5859) -
  • volinfo (see entry: vos examine) -(5654) -
  • zap -(5863) -
  • -
  • -W - -
  • weekly restart time for BOS Server - -
  • see entry: restart times for BOS Server -(4539) -
  • -
  • wildcard - -
  • volume entry definition (Backup System) -(4244), (4251) -
  • -
  • workstations statistic in scout -(5464) -
  • write shorthand notation for ACL permissions -(4945) -
  • -X - -
  • X instruction - -
  • uss template file -(4181) -
  • -
  • xfs_size_check command -(5867) -
  • xstat as requirement for running afsmonitor -(4199) -
  • xstat_cm_test command -(5869) -
  • xstat_fs_test command -(5871) -
  • -

    [Return to Library] [Contents] [Previous Topic] [Top of Topic]

    - -


    -
    © IBM Corporation 2000. All Rights Reserved -
    - - - diff --git a/doc/html/QuickStartUnix/auqbg005.htm b/doc/html/QuickStartUnix/auqbg005.htm index 0b2fe5f57..729a9869d 100644 --- a/doc/html/QuickStartUnix/auqbg005.htm +++ b/doc/html/QuickStartUnix/auqbg005.htm @@ -597,12 +597,13 @@ as you copy the script.

  • Copy the AFS kernel module to the local /usr/sys/BINARY directory. -

    If the machine's kernel supports NFS server functionality: +

    If the machine's kernel supports NFS server functionality and is to be +used as an NFS translator:

      
        # cp bin/libafs.o /usr/sys/BINARY/afs.mod   
     
    -

    If the machine's kernel does not support NFS server -functionality: +

    If the machine's kernel does not support NFS server functionality +or is not to be used as an NFS translator:

      
        # cp bin/libafs.nonfs.o /usr/sys/BINARY/afs.mod
        
    @@ -823,12 +824,14 @@ you copy the file.
     

  • Copy the AFS kernel module to the local /usr/conf/lib directory. -

    If the machine's kernel supports NFS server functionality: +

    If the machine's kernel supports NFS server functionality and is to be +used as an NFS translator:

       
        # cp bin/libafs.a /usr/conf/lib   
     
    -

    If the machine's kernel does not support NFS server functionality, -change the file's name as you copy it: +

    If the machine's kernel does not support NFS server functionality +or is not to be used as an NFS translator, change the file's name as +you copy it:

       
        # cp bin/libafs.nonfs.a /usr/conf/lib/libafs.a
        
    @@ -1205,18 +1208,20 @@ AFS kernel library file.
     IPxx portion of the library file name must match the value
     previously returned by the uname -m command. Also choose the
     file appropriate to whether the machine's kernel supports NFS server
    -functionality (NFS must be supported for the machine to act as an NFS/AFS
    +functionality and is to be used as an NFS translator (NFS must be 
    +supported for the machine to act as an NFS/AFS
     Translator). Single- and multiprocessor machines use the same library
     file. 
     

    (You can choose to copy all of the kernel library files into the /usr/vice/etc/sgiload directory, but they require a significant amount of space.) -

    If the machine's kernel supports NFS server functionality: +

    If the machine's kernel supports NFS server functionality and is to be +used as an NFS translator:

       
        # cp -p  usr/vice/etc/sgiload/libafs.IPxx.o  /usr/vice/etc/sgiload   
     
    -

    If the machine's kernel does not support NFS server -functionality: +

    If the machine's kernel does not support NFS server functionality +or is not to be used as an NFS translator:

       
        # cp -p  usr/vice/etc/sgiload/libafs.IPxx.nonfs.o   \
                        /usr/vice/etc/sgiload
    @@ -1266,15 +1271,17 @@ directory.
     /var/sysgen/boot/afs.a; the IPxx
     portion of the library file name must match the value previously returned by
     the uname -m command. Also choose the file appropriate to
    -whether the machine's kernel supports NFS server functionality (NFS must
    -be supported for the machine to act as an NFS/AFS Translator). Single-
    +whether the machine's kernel supports NFS server functionality and is 
    +to be used as an NFS translator (NFS must be supported for the machine
    +to act as an NFS/AFS Translator). Single-
     and multiprocessor machines use the same library file. 
    -

    If the machine's kernel supports NFS server functionality: +

    If the machine's kernel supports NFS server functionality and is to be +used as an NFS translator:

       
        # cp -p   bin/libafs.IPxx.a   /var/sysgen/boot/afs.a   
     
    -

    If the machine's kernel does not support NFS server -functionality: +

    If the machine's kernel does not support NFS server functionality +or is not to be used as an NFS translator:

       
        # cp -p  bin/libafs.IPxx.nonfs.a  /var/sysgen/boot/afs.a
        
    @@ -1686,26 +1693,25 @@ you copy the script.
     

  • Copy the appropriate AFS kernel library file to the local file /kernel/fs/afs.

    If the machine is running Solaris 2.6 or the 32-bit version of -Solaris 7, its kernel supports NFS server functionality, and the -nfsd process is running: +Solaris 7, its kernel supports NFS server functionality and is to be +used as an NFS translator, and the nfsd process is running:

       
        # cp -p modload/libafs.o /kernel/fs/afs   
     

    If the machine is running Solaris 2.6 or the 32-bit version of -Solaris 7, and its kernel does not support NFS server functionality or the -nfsd process is not running: +Solaris 7, and its kernel does not support NFS server functionality, is +not to be used as an NFS translator, or the nfsd process is not running:

       
        # cp -p modload/libafs.nonfs.o /kernel/fs/afs   
     

    If the machine is running the 64-bit version of Solaris 7, its kernel -supports NFS server functionality, and the nfsd process is +supports NFS server functionality and is to be used as an NFS translator, and the nfsd process is running:

       
        # cp -p modload/libafs64.o /kernel/fs/sparcv9/afs   
     

    If the machine is running the 64-bit version of Solaris 7, and its -kernel does not support NFS server functionality or the nfsd -process is not running: +kernel does not support NFS server functionality, is not to be used as an NFS translator or the nfsd process is not running:

       
        # cp -p modload/libafs64.nonfs.o /kernel/fs/sparcv9/afs
        
    diff --git a/doc/html/index.htm b/doc/html/index.htm
    index ea72e1e3f..522c39b6e 100644
    --- a/doc/html/index.htm
    +++ b/doc/html/index.htm
    @@ -24,7 +24,6 @@ Documentation

    Included:

    AFS Administrator's Guide -
    AFS Administration Reference
    AFS Quick Start Guide for UNIX
    AFS Quick Start Guide for Windows NT/2000
    AFS User's Guide diff --git a/doc/man-pages/NTMakefile b/doc/man-pages/NTMakefile new file mode 100644 index 000000000..040e44366 --- /dev/null +++ b/doc/man-pages/NTMakefile @@ -0,0 +1,36 @@ +# Copyright 2008, Secure Endpoints Inc. +# All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# - Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# - Neither the name of Secure Endpoints Inc. nor the names of its contributors +# may be used to endorse or promote products derived from this software without +# specific prior written permission from Secure Endpoints Inc.. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +!INCLUDE ..\..\src\config\NTMakefile.$(SYS_NAME) + +install: + @echo Building man pages in HTML format + perl generate-html + +clean:: + $(CD) html + $(DEL) /s *.html diff --git a/doc/man-pages/README b/doc/man-pages/README index 164340f29..0f86c651e 100644 --- a/doc/man-pages/README +++ b/doc/man-pages/README @@ -107,9 +107,10 @@ Formatting Standards own copyright and a statement that the man page is released under the IBM Public License Version 1.0, or under some other license that is sufficiently compatible that we can use your work. If you use another - license and that license isn't "public domain," you have to give the - full license text in the man page; please don't use a license so long - that this is annoying. + license and that license isn't "public domain" or one of the ones + already listed in our LICENSE file, you have to give the full license + text in the man page; please don't use a license so long that this is + annoying. The SYNOPSIS section should start with the full command name and the full names of all options, and then have a second section showing the @@ -147,6 +148,35 @@ Formatting Standards surrounding the variable. For consistency in formatting, references to those variables should be formatted the same in following text. +Man Page Sections + + The section of a man page is determined by which directory it's in. + pod1 will be section 1 man pages, pod5 will be section 5, and pod8 will + be section 8. + + The breakdown between section 1 and section 8 is fuzzy and it's hard to + get right. The current layout balances the following goals: + + * In general, section 1 is used for commands that can be executed by any + user and section 8 is used for commands that can only be meaningfully + issued as root. If a command can be run with AFS privileged + credentials but still as a regular user on the local system, the + preference is for it to be in section 1, although some pages of that + type are in section 8. + + * All the commands for a given suite should be kept together. So, for + example, there are fs commands that can only be issued as root, but + since most of the suite is available to any user, all of the fs + commands are in section 1. + + * The sections of the man pages should roughly correspond to the + installation paths of the binaries. Binaries installed in bin should + have man pages in section 1 and binaries installed in sbin should have + man pages in section 8. + + Section 5 should be used for all documentation of configuration files + and file formats. + How You Can Help The OpenAFS man page project is just starting, and a lot of work remains @@ -201,20 +231,27 @@ Known Problems * The following installed commands have no man pages: + compile_et.afs copyauth fs cscpolicy + fs getfid fs memdump fs monitor fs rxstatpeer fs rxstatproc fs setcbaddr + fs trace + klog.krb + krb.conf + pagsh.krb restorevol rmtsysd - vldb_convert - vos clone + tokens.krb vos setfields vsys + * Add -noresolve to the documentation of all the vos commands. + * klog.krb, pagsh.krb, and tokens.krb need to be listed as alternative names in the NAME line of the non-.krb man pages, links should be installed on man page installation, and the behavior of pagsh.krb @@ -229,9 +266,6 @@ Known Problems * bos addkey should be marked deprecated in favor of using asetkey with a keytab. - * I'm fairly sure that the fileserver man page no longer documents all - of the fileserver options. - * The package man page should probably mention the (pointless) package apropos and package help commands, or they could be removed. There used to be separate man pages for them, but that seemed rather diff --git a/doc/man-pages/generate-html b/doc/man-pages/generate-html index e4ccd1366..e905231a9 100755 --- a/doc/man-pages/generate-html +++ b/doc/man-pages/generate-html @@ -7,6 +7,28 @@ use vars qw(@ISA); use Pod::Simple::Search; @ISA = qw(Pod::Simple::HTML); +# Add a link back to the index page to the top and bottom of each generated +# page. +# +# The hideous approach we have to use is because, unless we create a +# Pod::Simple::HTML object and then rebless it, the html_header_after_title +# and html_footer subs are placed in the OpenAFS::HTML package. That means we +# can't override them in a subclass and still call the SUPER version since +# we'll be overwriting the SUPER version, and there aren't other good +# opportunities to change the default values that I can see. +sub new { + my $class = shift; + my $self = Pod::Simple::HTML->new (@_); + bless ($self, 'OpenAFS::HTML'); + my $link = '' . "\n"; + my $after = $self->html_header_after_title; + $self->html_header_after_title ($after . $link); + my $end = $self->html_footer; + $self->html_footer ($link . $end); + return $self; +} + sub do_man_link { my ($self, $token) = @_; my $page = $token->attr ('to'); @@ -37,6 +59,24 @@ $Pod::Simple::HTML::Tagmap{'/item-bullet'} = '

  • '; $Pod::Simple::HTML::Tagmap{'item-number'} = '
  • '; $Pod::Simple::HTML::Tagmap{'/item-number'} = '

  • '; +# This horrific hack is required because Pod::Simple::HTMLBatch has no way +# of setting search options and we have to set laborious to true in order +# to pick up man pages like krb.conf(5). +package OpenAFS::Search; + +use strict; +use vars qw(@ISA); + +use Pod::Simple::Search; +@ISA = qw(Pod::Simple::HTML); + +sub new { + my $class = shift; + my $object = Pod::Simple::Search->new; + $object->laborious (1); + return $object; +} + package main; use strict; @@ -44,6 +84,9 @@ use strict; use File::Copy; use Pod::Simple::HTMLBatch; +# Override the search class to set laborious. +$Pod::Simple::HTMLBatch::SEARCH_CLASS = 'OpenAFS::Search'; + our $HEADER = <<'EOH'; @@ -78,6 +121,10 @@ sub scan_names { unless ($name) { warn "$dir/$file: cannot find NAME section, skipping\n"; } + $name =~ s/^(backup|bos|fs|fstrace|kas|pts|symlink|uss|vos)_/$1 /; + if ($section eq '5') { + $name =~ s/_/ /g; + } my $page = $file; $page =~ s/\.pod$//; push (@index, [ $section, $name, $page, $desc ]); diff --git a/doc/man-pages/man1/afs.1 b/doc/man-pages/man1/afs.1 index a043c0dd6..966f19c3f 100644 --- a/doc/man-pages/man1/afs.1 +++ b/doc/man-pages/man1/afs.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH AFS 1 "OpenAFS" "27/Feb/2006" "AFS Command Reference" +.TH AFS 1 "OpenAFS" "27/Jun/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -205,7 +205,7 @@ Manager, and other miscellaneous file system functions. Interface for tracing Cache Manager operations when debugging problems. .Ip "kas" 4 Interface to the Authentication Server for administering security and -authentication information. +authentication information. This aspect of OpenAFS has been deprecated. .Ip "pts" 4 Interface to the Protection Server for administering \s-1AFS\s0 \s-1ID\s0 and group membership information. @@ -450,7 +450,7 @@ Partitions that house \s-1AFS\s0 volumes must have names of the form \fI/vicep\fIx\fR\fR or \fI/vicep\fIxx\fR\fR, where the variable final portion is one or two lowercase letters. By convention, the first server partition created on a file server machine is called \fI/vicepa\fR, the second -\fI/vicepb\fR, and so on. The \fI\s-1IBM\s0 \s-1AFS\s0 Quick Beginnings\fR explains how to +\fI/vicepb\fR, and so on. The \fIOpenAFS QuickStart Guide\fR explains how to configure and name a file server machine's partitions in preparation for storing \s-1AFS\s0 volumes on them. .PP @@ -472,6 +472,8 @@ and so on through .Vb 1 \& /vicepiv = vicepiv = iv = 255 .Ve +\fI/vicepiv\fR is the last permissible \s-1AFS\s0 partition name. In practice it +will not work well; stopping with \fI/vicepiu\fR is highly recommended. A cell's full name usually matches its Internet domain name (such as \fBstateu.edu\fR for the State University or \f(CWabc.com\fR for \s-1ABC\s0 Corporation). Some \s-1AFS\s0 commands accept unambiguous shortened forms, diff --git a/doc/man-pages/man1/aklog.1 b/doc/man-pages/man1/aklog.1 index 74477a4cf..58b00a842 100644 --- a/doc/man-pages/man1/aklog.1 +++ b/doc/man-pages/man1/aklog.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH AKLOG 1 "OpenAFS" "9/Nov/2006" "AFS Command Reference" +.TH AKLOG 1 "OpenAFS" "5/Jun/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -198,19 +198,29 @@ aklog \- Obtain tokens for authentication to AFS [\fB\-force\fR] [\fB\-524\fR] [\fB\-setpag\fR] [\fB\-path\fR | \fB\-p\fR] <\fIpath\fR>+ .SH "DESCRIPTION" The \fBaklog\fR program authenticates to a cell in AFS by obtaining AFS -tokens. If \fBaklog\fR is invoked with no command-line arguments, it will -obtain tokens for the workstation's local cell. It may be invoked with an -arbitrary number of cells and pathnames to obtain tokens for multiple -cells. \fBaklog\fR knows how to expand cell name abbreviations, so cells can -be referred to by enough letters to make the cell name unique among the -cells the workstation knows about. +tokens using a Kerberos 5 ticket. If \fBaklog\fR is invoked with no +command-line arguments, it will obtain tokens for the workstation's local +cell. It may be invoked with an arbitrary number of cells and pathnames +to obtain tokens for multiple cells. \fBaklog\fR knows how to expand cell +name abbreviations, so cells can be referred to by enough letters to make +the cell name unique among the cells the workstation knows about. .PP \fBaklog\fR obtains tokens by obtaining a Kerberos service ticket for the AFS service and then storing it as a token. By default, it obtains that -ticket from the realm corresponding to that cell (the upcase version of +ticket from the realm corresponding to that cell (the uppercase version of the cell name), but a different realm for a particular cell can be specified with \fB\-k\fR. \fB\-k\fR cannot be used in \fB\-path\fR mode (see below). .PP +When a Kerberos 5 cross-realm trust is used, \fBaklog\fR looks up the AFS ID +corresponding to the name (Kerberos principal) of the person invoking the +command, and if the user doesn't exist and the +system:authuser@FOREIGN.REALM PTS group exists, then it attempts automatic +registration of the user with the foreign cell. The user is then added to +the system:authuser@FOREIGN.REALM PTS group if registration is successful. +Automatic registration in the foreign cell will fail if the group quota +for the system:authuser@FOREIGN.REALM group is less than one. Each +automatic registration decrements the group quota by one. +.PP When using \fBaklog\fR, be aware that AFS uses the Kerberos v4 principal naming format, not the Kerberos v5 format, when referring to principals in PTS ACLs, \fIUserList\fR, and similar locations. AFS will internally map @@ -240,11 +250,11 @@ for general users. Normally, aklog will not replace tokens with new tokens that appear to be identical. If this flag is given, it will skip that check. .Ip "\fB\-hosts\fR" 4 -Prints all the server addresses which may act as a single point of -failure in accessing the specified directory path. Each element of the -path is examined, and as new volumes are traversed, if they are not -replicated, the server's \s-1IP\s0 address containing the volume will be -displayed. The output is of the form: +Prints all the server addresses which may act as a single point of failure +in accessing the specified directory path. Each element of the path is +examined, and as new volumes are traversed, if they are not replicated, +the server's \s-1IP\s0 address containing the volume will be displayed. The +output is of the form: .Sp .Vb 1 \& host: @@ -264,11 +274,13 @@ Don't actually authenticate, just do everything else \fBaklog\fR does up to setting tokens. .Ip "\fB\-noprdb\fR" 4 Ordinarily, \fBaklog\fR looks up the \s-1AFS\s0 \s-1ID\s0 corresponding to the name of the -person invoking the command, and if the user doesn't exist and the cell is -a foreign one, attempts automatic registration of the user with the remote -cell. Specifying this flag turns off this functionality. This may be -desirable if the protection database is unavailable for some reason and -tokens are desired anyway, or if one wants to disable user registration. +person invoking the command, and if the user doesn't exist, the cell is a +foreign one, the system:authuser@\s-1FOREIGN\s0.\s-1REALM\s0 \s-1PTS\s0 group exists, and has a +positive group quota, then it attempts automatic registration of the user +with the foreign cell. Specifying this flag turns off this functionality. +This may be desirable if the protection database is unavailable for some +reason and tokens are desired anyway, or if one wants to disable user +registration. .Ip "\fB\-path\fR <\fIpathname\fR>, \fB\-p\fR <\fIpathname\fR>" 4 This flag tells \fBaklog\fR that the next argument is a path in \s-1AFS\s0. \fBaklog\fR will walk that path and obtain tokens for every cell needed to diff --git a/doc/man-pages/man1/fs_diskfree.1 b/doc/man-pages/man1/fs_diskfree.1 index 951333b51..33861f769 100644 --- a/doc/man-pages/man1/fs_diskfree.1 +++ b/doc/man-pages/man1/fs_diskfree.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_DISKFREE 1 "OpenAFS" "11/Nov/2007" "AFS Command Reference" +.TH FS_DISKFREE 1 "OpenAFS" "12/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -255,10 +255,10 @@ volumes \f(CWuser.smith\fR and \f(CWsun4x_56.bin\fR: \& sun4x_56.bin 4423680 3174500 1249180 72% .Ve .SH "PRIVILEGE REQUIRED" -The issuer must have the \f(CWl\fR (lookup) permission on the ACL of the root +The issuer must have the \f(CWr\fR (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -\fB\-path\fR argument, and on the ACL of each directory that precedes it in -the pathname. +\fB\-path\fR argument, and \f(CWl\fR (list) permission on the ACL of each +directory that precedes it in the pathname. .SH "SEE ALSO" the \fIfs_examine(1)\fR manpage .SH "COPYRIGHT" diff --git a/doc/man-pages/man1/fs_examine.1 b/doc/man-pages/man1/fs_examine.1 index 68e2ed395..a7e453250 100644 --- a/doc/man-pages/man1/fs_examine.1 +++ b/doc/man-pages/man1/fs_examine.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_EXAMINE 1 "OpenAFS" "11/Nov/2007" "AFS Command Reference" +.TH FS_EXAMINE 1 "OpenAFS" "12/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -262,10 +262,10 @@ the partition housing it: \& The partition has 336662 blocks available out of 4177920 .Ve .SH "PRIVILEGE REQUIRED" -The issuer must have the \f(CWl\fR (lookup) permission on the ACL of the root +The issuer must have the \f(CWr\fR (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -\fB\-path\fR argument, and on the ACL of each directory that precedes it in -the pathname. +\fB\-path\fR argument, and \f(CWl\fR (list) permission on the ACL of each +directory that precedes it in the pathname. .SH "SEE ALSO" the \fIfs_listquota(1)\fR manpage, the \fIfs_quota(1)\fR manpage, diff --git a/doc/man-pages/man1/fs_listquota.1 b/doc/man-pages/man1/fs_listquota.1 index 328ee179b..dfcd020ef 100644 --- a/doc/man-pages/man1/fs_listquota.1 +++ b/doc/man-pages/man1/fs_listquota.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_LISTQUOTA 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH FS_LISTQUOTA 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -206,14 +206,7 @@ examine\fR command. .PP To set volume quota, use the \fBfs setquota\fR or \fBfs setvol\fR command. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-path\fR <\fIdir/file path\fR>+" 4 Names a file or directory that resides in the volume about which to @@ -251,10 +244,10 @@ The following example shows the output for the volume \f(CWuser.smith\fR: \& user.smith 15000 5071 34% 86% .Ve .SH "PRIVILEGE REQUIRED" -The issuer must have the \f(CWl\fR (lookup) permission on the ACL of the root +The issuer must have the \f(CWr\fR (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -\fB\-path\fR argument, and on the ACL of each directory that precedes it in -the pathname. +\fB\-path\fR argument, and \f(CWl\fR (list) permission on the ACL of each +directory that precedes it in the pathname. .SH "SEE ALSO" the \fIfs_diskfree(1)\fR manpage, the \fIfs_examine(1)\fR manpage, diff --git a/doc/man-pages/man1/fs_minidump.1 b/doc/man-pages/man1/fs_minidump.1 index 899cc6872..223462388 100644 --- a/doc/man-pages/man1/fs_minidump.1 +++ b/doc/man-pages/man1/fs_minidump.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_MINIDUMP 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH FS_MINIDUMP 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -196,6 +196,16 @@ fs_minidump \- Generate a minidump from the current afsd service of the afsd_service.exe process. This output can be very helpful when debugging the AFS Client Service when it is unresponsive to SMB/CIFS requests. +.PP +If the AFS Client Service becomes unresponsive to any form of +communication there may be a serious error that can only be diagnosed +by someone with access to the source code and a debugger. The \*(L"fs +minidump\*(R" command can be used to force the generation of a MiniDump +file containing the state of all of the threads in the AFS Client +Service process. +.PP +The \*(L"MiniDumpType\*(R" registry value can be used to adjust the scope of the +process information included within the dump file. .SH "CAUTIONS" This command is only available in OpenAFS for Windows version 1.4 and later. .SH "OPTIONS" diff --git a/doc/man-pages/man1/fs_quota.1 b/doc/man-pages/man1/fs_quota.1 index 627c853f5..4f27d404f 100644 --- a/doc/man-pages/man1/fs_quota.1 +++ b/doc/man-pages/man1/fs_quota.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_QUOTA 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH FS_QUOTA 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -202,14 +202,7 @@ resides on, use the \fBfs examine\fR and \fBfs listquota\fR commands. .PP To set volume quota, use the \fBfs setquota\fR or \fBfs setvol\fR command. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-path\fR <\fIdir/file path\fR>" 4 Names each file or directory for which to display the quota consumed in @@ -244,10 +237,10 @@ housing the directory \fI/afs/abc.com/usr/smith\fR: \& 92% of quota used. .Ve .SH "PRIVILEGE REQUIRED" -The issuer must have the \f(CWl\fR (lookup) permission on the ACL of the root +The issuer must have the \f(CWr\fR (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -\fB\-path\fR argument, and on the ACL of each directory that precedes it in -the pathname. +\fB\-path\fR argument, and \f(CWl\fR (list) permission on the ACL of each +directory that precedes it in the pathname. .SH "SEE ALSO" the \fIfs_examine(1)\fR manpage, the \fIfs_listquota(1)\fR manpage, diff --git a/doc/man-pages/man1/fs_setquota.1 b/doc/man-pages/man1/fs_setquota.1 index daa7b53cf..63f510aa2 100644 --- a/doc/man-pages/man1/fs_setquota.1 +++ b/doc/man-pages/man1/fs_setquota.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_SETQUOTA 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH FS_SETQUOTA 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -207,14 +207,7 @@ setvol\fR command. To display a volume's quota, use the \fBfs examine\fR, \fBfs listquota\fR, or \fBfs quota\fR command. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-path\fR <\fIdir/file path\fR>" 4 Names the directory or file for which to set the host volume's diff --git a/doc/man-pages/man1/fs_setvol.1 b/doc/man-pages/man1/fs_setvol.1 index a89db7915..bdb912ed4 100644 --- a/doc/man-pages/man1/fs_setvol.1 +++ b/doc/man-pages/man1/fs_setvol.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FS_SETVOL 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH FS_SETVOL 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -214,14 +214,7 @@ and the \fBfs quota\fR command the percent of quota used. .PP To set quota on one volume at a time, use the \fBfs setquota\fR command. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-path\fR <\fIdir/file path\fR>+" 4 Names each file or directory for which to set the host volume's quota and diff --git a/doc/man-pages/man1/klog.krb5.1 b/doc/man-pages/man1/klog.krb5.1 new file mode 100644 index 000000000..87b72945a --- /dev/null +++ b/doc/man-pages/man1/klog.krb5.1 @@ -0,0 +1,468 @@ +.rn '' }` +''' $RCSfile$$Revision$$Date$ +''' +''' $Log$ +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH KLOG.KRB5 1 "OpenAFS" "28/Jun/2008" "AFS Command Reference" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +klog.krb5 \- Authenticates to Kerberos and obtains a token +.SH "SYNOPSIS" +\fBklog.krb5\fR [\fB\-x\fR] <<\ [\fB\-principal\fR\ <\fIuser\ name\fR] >>> + [\-password <\fIuser's password\fR>] <<\ [\fB\-cell\fR\ <\fIcell\ name\fR] >>> + <<\ [\fB\-k\fR\ <\fIrealm\fR] >>> [\fB\-pipe\fR] [\fB\-silent\fR] + <<\ [\fB\-lifetime\fR\ <\fIticket\ lifetime\ in\ hh[:mm[:ss]]\fR] >>> + [\fB\-setpag\fR] [\fB\-tmp\fR] [\fB\-noprdb\fR] [\fB\-unwrap\fR] [\fB\-help\fR] +.PP +\fBklog.krb5\fR [\fB\-x\fR] <<\ [\fB\-pr\fR\ <\fIuser\ name\fR] >>> + <<\ [\fB\-pa\fR\ <\fIuser's\ password\fR] >>> + <<\ [\fB\-c\fR\ <\fIcell\ name\fR] >>> + \fB<< [\fB\-k\fR <\fIrealm\fR\fR] >>> [\fB\-pi\fR] [\fB\-si\fR] + <<\ [\fB\-l\fR\ <\fIticket\ lifetime\ in\ hh[:mm[:ss]]\fR] >>> + [\fB\-se\fR] [\fB\-t\fR] [\fB\-n\fR] [\fB\-u\fR] [\fB\-h\fR] +.SH "DESCRIPTION" +The \fBklog.krb5\fR command obtains a Kerberos v5 ticket from a Kerberos +KDC and, from the ticket, an AFS token and then stores it in the Cache +Manager. The Cache Manager keeps the token in kernel memory and uses it +when obtaining authenticated access to the AFS filespace. This command +does not affect the issuer's identity (UNIX UID) on the local file system. +.PP +By default, the command interpreter obtains a token for the AFS user name +that matches the issuer's local user name. To specify an alternate user, +include the \fB\-principal\fR argument. The user named by the \fB\-principal\fR +argument does not have to appear in the local password file (the +\fI/etc/passwd\fR file or equivalent). +.PP +By default, the command interpreter obtains a token for the local cell, as +defined by the AFSCELL environment variable set in the command shell or by +the \fI/usr/vice/etc/ThisCell\fR file on the local machine. To specify an +alternate cell, include the \fB\-cell\fR argument. A user can have tokens in +multiple cells simultaneously, but only one token per cell per connection +to the client machine. If the user's credential structure already +contains a token for the requested cell, the token resulting from this +command replaces it. +.PP +By default, the command interpreter obtains a Kerberos ticket for the +local realm. To specify a different Kerberos realm, include the \fB\-k\fR +argument. The Kerberos realm name need not match the AFS cell name. +\fBklog.krb5\fR will request a ticket for the principal \f(CWafs/\fIcell\fR\fR where +\fIcell\fR is the cell name for which the user is requesting tokens, falling +back on the principal \f(CWafs\fR if that principal does not work. +.PP +The lifetime of the token resulting from this command is the smallest of +the following: +.Ip "\(bu" 4 +The lifetime specified by the issuer with the \fB\-lifetime\fR argument if +that argument was given. +.Ip "\(bu" 4 +The maximum ticket lifetime recorded for the \f(CWafs/\fIcell\fR\fR principal in +thet Kerberos database. +.Ip "\(bu" 4 +The maximum ticket lifetime recorded in the specified user's Kerberos +database entry. +.SH "CAUTIONS" +By default, this command does not create a new process authentication +group (PAG); see the description of the \fBpagsh\fR command to learn about +PAGs. If a cell does not use an AFS\-modified login utility, users must +include \fB\-setpag\fR option to this command, or issue the \fBpagsh\fR command +before this one, to have their tokens stored in a credential structure +that is identified by PAG rather than by local UID. Users should be aware +that \fB\-setpag\fR will not work on some systems, most notably recent Linux +systems, and using \fBpagsh\fR is preferrable and more reliable. +.PP +When a credential structure is identified by local UID, the potential +security exposure is that the local superuser \f(CWroot\fR can use the UNIX +\fBsu\fR command to assume any other identity and automatically inherit the +tokens associated with that UID. Identifying the credential structure by +PAG makes it more difficult (but not impossible) for the local superuser +to obtain tokens of other users. +.PP +If the \fB\-password\fR argument is used, the specified password cannot begin +with a hyphen, because it is interpreted as another option name. Use of +the \fB\-password\fR argument is not recommended in any case. +.PP +By default, it is possible to issue this command on a properly configured +NFS client machine that is accessing AFS via the NFS/AFS Translator, +assuming that the NFS client machine is a supported system type. However, +if the translator machine's administrator has enabled UID checking by +including the \fB\-uidcheck on\fR argument to the \fBfs exportafs\fR command, the +command fails with an error message similar to the following: +.PP +.Vb 2 +\& Warning: Remote pioctl to has failed (err=8). . . +\& Unable to authenticate to AFS because a pioctl failed. +.Ve +Enabling UID checking means that the credential structure in which tokens +are stored on the translator machine must be identified by a UID that +matches the local UID of the process that is placing the tokens in the +credential structure. After the \fBklog.krb5\fR command interpreter obtains +the token on the NFS client, it passes it to the remote executor daemon on +the translator machine, which makes the system call that stores the token +in a credential structure on the translator machine. The remote executor +generally runs as the local superuser \f(CWroot\fR, so in most cases its local +UID (normally zero) does not match the local UID of the user who issued +the \fBklog.krb5\fR command on the NFS client machine. +.PP +Issuing the \fBklog.krb5\fR command on an NFS client machine creates a +security exposure: the command interpreter passes the token across the +network to the remote executor daemon in clear text mode. +.SH "OPTIONS" +.Ip "\fB\-x\fR" 4 +Appears only for backwards compatibility. Its former function is now the +default behavior of this command. +.Ip "\fB\-principal\fR <\fIuser name\fR>" 4 +Specifies the user name to authenticate. If this argument is omitted, the +default value is the local user name. +.Ip "\fB\-password\fR <\fIuser's password\fR>" 4 +Specifies the issuer's password (or that of the alternate user identified +by the \fB\-principal\fR argument). Omit this argument to have the command +interpreter prompt for the password, in which case it does not echo +visibly in the command shell. +.Ip "\fB\-cell\fR <\fIcell name\fR>" 4 +Specifies the cell for which to obtain a token. During a single login +session on a given machine, a user can be authenticated in multiple cells +simultaneously, but can have only one token at a time for each of them +(that is, can only authenticate under one identity per cell per session on +a machine). It is acceptable to abbreviate the cell name to the shortest +form that distinguishes it from the other cells listed in the +\fI/usr/vice/etc/CellServDB\fR file on the client machine on which the +command is issued. +.Sp +If this argument is omitted, the command is executed in the local cell, as +defined +.Ip "\(bu" 8 +First, by the value of the environment variable \s-1AFSCELL\s0. +.Ip "\(bu" 8 +Second, in the \fI/usr/vice/etc/ThisCell\fR file on the client machine on +which the command is issued. +.Ip "\fB\-k\fR <\fIrealm\fR>" 4 +Obtain tickets and tokens from the <\fIrealm\fR> Kerberos realm. If this +option is not given, \fBklog.krb5\fR defaults to using the default local +realm. The Kerberos realm name need not match the \s-1AFS\s0 cell name. +.Ip "\fB\-pipe\fR" 4 +Suppresses all output to the standard output stream, including prompts and +error messages. The \fBklog.krb5\fR command interpreter expects to receive +the password from the standard input stream. Do not use this argument; it +is designed for use by application programs rather than human users. +.Ip "\fB\-silent\fR" 4 +Suppresses some of the trace messages that the \fBklog.krb5\fR command +produces on the standard output stream by default. It still reports on +major problems encountered. +.Ip "\fB\-lifetime\fR <\fIticket lifetime\fR" 4 +Requests a specific lifetime for the token. Provide a number of hours and +optionally minutes and seconds in the format \fIhh\fR[\fB:\fR\fImm\fR[\fB:\fR\fIss\fR]]. +.Ip "\fB\-setpag\fR" 4 +Creates a process authentication group (\s-1PAG\s0) prior to requesting +authentication. The token is associated with the newly created \s-1PAG\s0. +.Ip "\fB\-tmp\fR" 4 +Creates a Kerberos-style ticket file rather than only obtaining tokens. +The ticket file will be stored in the default Kerberos ticket cache +location, which is usually in the \fI/tmp\fR directory of the local machine +(but depends on the Kerberos implementation used). +.Ip "\fB\-noprdb\fR" 4 +By default, \fBklog.krb5\fR looks up the user's \s-1AFS\s0 \s-1ID\s0 in the Protection +Server and associates the token with that \s-1AFS\s0 \s-1ID\s0. This is helpful when +looking at the output of commands like \fBtokens\fR but is not required. If +this option is given, this behavior is suppressed and \fBklog.krb5\fR will +store the token under a generic name. You may wish this if, for example, +you have problems contacting the Protection Server for an \s-1AFS\s0 cell for +some reason. +.Ip "\fB\-unwrap\fR" 4 +Normally, \fBklog.krb5\fR uses the Kerberos service ticket for the \s-1AFS\s0 +principal as the \s-1AFS\s0 token. If this option is given, \fBklog.krb5\fR creates +a different, simplified \s-1AFS\s0 token form based on the service ticket (the +so-called \*(L"rxkad 2b\*(R" token). Normally, this is not necessary. However, +if you are using older OpenAFS software that cannot handle large ticket +sizes in conjunction with Active Directory as the Kerberos server, using +\fB\-unwrap\fR can shrink the \s-1AFS\s0 token size so that older software can handle +it more easily. +.Ip "\fB\-help\fR" 4 +Prints the online help for this command. All other valid options are +ignored. +.SH "OUTPUT" +If the \fB\-tmp\fR flag is included, the following message confirms that a +Kerberos ticket cache was created: +.PP +.Vb 1 +\& Wrote ticket file to /tmp/krb5cc_1000_rENJoZ +.Ve +The path to the cache will vary, of course. +.SH "EXAMPLES" +Most often, this command is issued without arguments. The appropriate +password is for the person currently logged into the local system. The +ticket's lifetime is calculated as described in the \fIDESCRIPTION\fR manpage. +.PP +.Vb 2 +\& % klog.krb5 +\& Password for user@EXAMPLE.ORG: +.Ve +The following example authenticates the user as admin in the ABC +Corporation's test cell: +.PP +.Vb 2 +\& % klog.krb5 -principal admin -cell test.abc.com +\& Password for admin@ABC.COM: +.Ve +In the following, the issuer requests a ticket lifetime of 104 hours 30 +minutes (4 days 8 hours 30 minutes). +.PP +.Vb 2 +\& % klog.krb5 -lifetime 104:30 +\& Password for user@EXAMPLE.ORG: +.Ve +.SH "PRIVILEGE REQUIRED" +None +.SH "SEE ALSO" +the \fIaklog(1)\fR manpage, +the \fIfs_exportafs(1)\fR manpage, +the \fIpagsh(1)\fR manpage, +the \fItokens(1)\fR manpage +.SH "COPYRIGHT" +IBM Corporation 2000. All Rights Reserved. +.PP +This documentation is covered by the IBM Public License Version 1.0. It +was converted from HTML to POD by software written by Chas Williams and +Russ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. + +.rn }` '' +.IX Title "KLOG.KRB5 1" +.IX Name "klog.krb5 - Authenticates to Kerberos and obtains a token" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Header "CAUTIONS" + +.IX Header "OPTIONS" + +.IX Item "\fB\-x\fR" + +.IX Item "\fB\-principal\fR <\fIuser name\fR>" + +.IX Item "\fB\-password\fR <\fIuser's password\fR>" + +.IX Item "\fB\-cell\fR <\fIcell name\fR>" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\fB\-k\fR <\fIrealm\fR>" + +.IX Item "\fB\-pipe\fR" + +.IX Item "\fB\-silent\fR" + +.IX Item "\fB\-lifetime\fR <\fIticket lifetime\fR" + +.IX Item "\fB\-setpag\fR" + +.IX Item "\fB\-tmp\fR" + +.IX Item "\fB\-noprdb\fR" + +.IX Item "\fB\-unwrap\fR" + +.IX Item "\fB\-help\fR" + +.IX Header "OUTPUT" + +.IX Header "EXAMPLES" + +.IX Header "PRIVILEGE REQUIRED" + +.IX Header "SEE ALSO" + +.IX Header "COPYRIGHT" + diff --git a/doc/man-pages/man1/pts_examine.1 b/doc/man-pages/man1/pts_examine.1 index cbed8240c..4727994ef 100644 --- a/doc/man-pages/man1/pts_examine.1 +++ b/doc/man-pages/man1/pts_examine.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH PTS_EXAMINE 1 "OpenAFS" "4/Feb/2008" "AFS Command Reference" +.TH PTS_EXAMINE 1 "OpenAFS" "5/Jun/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -192,16 +192,16 @@ pts_examine \- Displays a Protection Database entry .SH "SYNOPSIS" \fBpts examine\fR <<\ \fB\-nameorid\fR\ <\fIuser\ or\ group\ name\ or\ id\fR+ >>> <<\ [\fB\-cell\fR\ <\fIcell\ name\fR] >>> [\fB\-noauth\fR] [\fB\-localauth\fR] - [\fB\-force\fR] [\fB\-help\fR] + [\fB\-force\fR] [\fB\-auth\fR] [\fB\-help\fR] .PP \fBpts e\fR <<\ \fB\-na\fR\ <\fIuser\ or\ group\ name\ or\ id\fR+ >>> <<\ [\fB\-c\fR\ <\fIcell\ name\fR] >>> - [\fB\-no\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-h\fR] + [\fB\-no\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-a\fR] [\fB\-h\fR] .PP \fBpts check\fR <<\ \fB\-na\fR\ <\fIuser\ or\ group\ name\ or\ id\fR+ >>> <<\ [\fB\-c\fR\ <\fIcell\ name\fR] >>> - [\fB\-no\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-h\fR] + [\fB\-no\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-a\fR] [\fB\-h\fR] .PP \fBpts che\fR <<\ \fB\-na\fR\ <\fIuser\ or\ group\ name\ or\ id\fR+ >>> <<\ [\fB\-c\fR\ <\fIcell\ name\fR] >>> - [\fB\-no\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-h\fR] + [\fB\-no\fR] [\fB\-l\fR] [\fB\-f\fR] [\fB\-a\fR] [\fB\-h\fR] .SH "DESCRIPTION" The \fBpts examine\fR command displays information from the Protection Database entry of each user, machine or group specified by the @@ -227,6 +227,9 @@ Constructs a server ticket using a key from the local .Ip "\fB\-force\fR" 4 Enables the command to continue executing as far as possible when errors or other problems occur, rather than halting execution at the first error. +.Ip "\fB\-auth\fR" 4 +Run using the user's current authentication. This is the default unless +the \fB\-noauth\fR or \fB\-localauth\fR options are used. .Ip "\fB\-help\fR" 4 Prints the online help for this command. All other valid options are ignored. @@ -314,14 +317,23 @@ group and the entry's owner (as well as the user for a user entry). The default privacy flags for group entries are \f(CWS-M--\fR, meaning that all users can display the entry and the members of the group, but only the entry owner and members of the system:administrators group can perform -other functions. +other functions. The defaults for the privacy flags may be changed by +running \fBptserver\fR with the \fB\-default_access\fR option. See the \fIptserver(8)\fR manpage +for more discussion of the \fB\-default_access\fR option. .Ip "group quota" 4 The number of additional groups the user is allowed to create. The \fBpts createuser\fR command sets it to 20 for both users and machines, but it has no meaningful interpretation for a machine, because it is not possible to authenticate as a machine. Similarly, it has no meaning in group entries -and the \fBpts creategroup\fR command sets it to 0 (zero); do not change this -value. +that only deal with the local cell and the \fBpts creategroup\fR command sets +it to 0 (zero); do not change this value. +.Sp +When using cross-realm authentication, a special group of the form +system:authuser@\s-1FOREIGN\s0.\s-1REALM\s0 is created by an administrator and used. If +the group quota for this special group is greater than zero, then aklog +will automatically register foreign users in the local \s-1PTS\s0 database, add +the foreign user to the system:authuser@\s-1FOREIGN\s0.\s-1REALM\s0, and decrement the +group quota by one. .SH "EXAMPLES" The following example displays the user entry for \f(CWterry\fR and the machine entry \f(CW158.12.105.44\fR. @@ -394,6 +406,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\fB\-force\fR" +.IX Item "\fB\-auth\fR" + .IX Item "\fB\-help\fR" .IX Header "OUTPUT" diff --git a/doc/man-pages/man1/vos.1 b/doc/man-pages/man1/vos.1 index e3f06dc0e..e9212e860 100644 --- a/doc/man-pages/man1/vos.1 +++ b/doc/man-pages/man1/vos.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS 1 "OpenAFS" "19/Jan/2008" "AFS Command Reference" +.TH VOS 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -254,14 +254,7 @@ A command to report Volume Server status: \fBvos status\fR. .Ip "\(bu" 4 Commands to obtain help: \fBvos apropos\fR and \fBvos help\fR. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" The following arguments and flags are available on many commands in the \fBbos\fR suite. The reference page for each command also lists them, but @@ -378,6 +371,7 @@ the \fIvos_backup(1)\fR manpage, the \fIvos_backupsys(1)\fR manpage, the \fIvos_changeaddr(1)\fR manpage, the \fIvos_convertROtoRW(1)\fR manpage, +the \fIvos_clone(1)\fR manpage, the \fIvos_copy(1)\fR manpage, the \fIvos_create(1)\fR manpage, the \fIvos_delentry(1)\fR manpage, @@ -396,6 +390,7 @@ the \fIvos_remove(1)\fR manpage, the \fIvos_remsite(1)\fR manpage, the \fIvos_rename(1)\fR manpage, the \fIvos_restore(1)\fR manpage, +the \fIvos_shadow(1)\fR manpage, the \fIvos_size(1)\fR manpage, the \fIvos_status(1)\fR manpage, the \fIvos_syncserv(1)\fR manpage, diff --git a/doc/man-pages/man1/vos_clone.1 b/doc/man-pages/man1/vos_clone.1 new file mode 100644 index 000000000..505bb9714 --- /dev/null +++ b/doc/man-pages/man1/vos_clone.1 @@ -0,0 +1,341 @@ +.rn '' }` +''' $RCSfile$$Revision$$Date$ +''' +''' $Log$ +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH VOS_CLONE 1 "OpenAFS" "27/Jun/2008" "AFS Command Reference" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +vos_clone \- Creates a shared-space copy of a volume on a partition +.SH "SYNOPSIS" +\fBvos clone\fR <<\ [\fB\-id\fR]\ <\fIvolume\ name\ or\ ID\fR >>> + <<\ [\fB\-server\fR]\ <\fIserver\ name\fR >>> + <<\ [\fB\-partition\fR]\ <\fIpartition\ name\fR >>> + <<\ [\fB\-toname\fR\ <\fIvolume\ name\ on\ destination\fR] >>> + <<\ [\fB\-toid\fR\ <\fIvolume\ ID\ on\ destination\fR] >>> [\fB\-offline\fR] [\fB\-readonly\fR] + <<\ [\fB\-cell\fR\ <\fIcell\ name\fR] >>> [\fB\-noauth\fR] + [\fB\-localauth\fR] [\fB\-verbose\fR] [\fB\-encrypt\fR] [\fB\-help\fR] +.SH "DESCRIPTION" +The \fBvos clone\fR command creates a copy-on-write copy of a volume on the +same partition and server ass the parent volume. +.PP +A clone is a copy of a volume that does only stores the changes from the +parent volume. Cloning is a primitive operation that is used by the \fBvos +move\fR, \fBvos backup\fR, and \fBvos release\fR commands. A clone functions using +the same mechanism as a backup volume, but it is persistent. Clone volumes +can be used as point-in-time copies of the parent vollume, but they must be +used with care. +.SH "CAUTIONS" +This command is not used during normal OpenAFS administration and may +have adverse effects on the VLDB if not used properly! This command +should only be used by an expert. +.PP +Deleting or moving the parent volume makes the clone volume inaccessible, +but the clone volume remains in the VLDB and on disk, and it needs to be +cleaned up manually. +.PP +There is a maximum limitation of 7 clones when using the namei +fileserver. You may safely create up to 4 clones using the \fBvos clone\fR +command. The other three clone slots are used by the backup volume, a +read-only replica and the temporary clone that is created when executing a +\fBvos move\fR, \fBvos dump\fR, or other \fBvos\fR commands. +.PP +Some commands do not work properly on clone volumes. \fBvos move\fR is one +such command. +.PP +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). +.SH "OPTIONS" +.Ip "[\fB\-id\fR] <\fIvolume name or \s-1ID\s0\fR>" 4 +Specifies either the complete name or volume \s-1ID\s0 number of a read/write +volume. +.Ip "[\fB\-server\fR] <\fImachine name\fR>" 4 +Identifies the file server machine where the source volume resides. Provide +the machine's \s-1IP\s0 address or its host name (either fully qualified or using +an unambiguous abbreviation). For details, see the \fIvos(1)\fR manpage. +.Ip "[\fB\-partition\fR] <\fIpartition name\fR>" 4 +Names the partition where the source volume resides. Provide the full +partition name (for, example, \fB/vicepa\fR) or one of the abbreviated forms +described in the \fIvos(1)\fR manpage. +.Ip "\fB\-toname\fR <\fIvolume name for new copy\fR>" 4 +The complete name of the new volume to create. +.Ip "\fB\-toid\fR <\fIvolume id for new copy\fR>" 4 +The complete id of the new volume to create. +.Ip "\fB\-offline\fR" 4 +Leaves the new volume flagged as off-line in the volume database. +.Ip "\fB\-readonly\fR" 4 +Flags the new volume as read-only in the volume database. +.Ip "\fB\-cell\fR <\fIcell name\fR>" 4 +Names the cell in which to run the command. Do not combine this argument +with the \fB\-localauth\fR flag. For more details, see the \fIvos(1)\fR manpage. +.Ip "\fB\-noauth\fR" 4 +Assigns the unprivileged identity \f(CWanonymous\fR to the issuer. Do not +combine this flag with the \fB\-localauth\fR flag. For more details, see +the \fIvos(1)\fR manpage. +.Ip "\fB\-localauth\fR" 4 +Constructs a server ticket using a key from the local +\fI/usr/afs/etc/KeyFile\fR file. The \fBvos\fR command interpreter presents +it to the Volume Server and Volume Location Server during mutual +authentication. Do not combine this flag with the \fB\-cell\fR argument or +\fB\-noauth\fR flag. For more details, see the \fIvos(1)\fR manpage. +.Ip "\fB\-verbose\fR" 4 +Produces on the standard output stream a detailed trace of the command's +execution. If this argument is omitted, only warnings and error messages +appear. +.Ip "\fB\-encrypt\fR" 4 +Encrypts the command so that the operation's results are not transmitted +across the network in clear text. +.Ip "\fB\-help\fR" 4 +Prints the online help for this command. All other valid options are +ignored. +.SH "OUTPUT" +This command has no output unless \f(CW-verbose\fR is specified or there is +an error. +.SH "PRIVILEGE REQUIRED" +The issuer must be listed in the \fI/usr/afs/etc/UserList\fR file on the +machines specified with the \fB\-toserver\fR and \fB\-fromserver\fR arguments and +on each database server machine. If the \fB\-localauth\fR flag is included, +the issuer must instead be logged on to a server machine as the local +superuser \f(CWroot\fR. +.SH "SEE ALSO" +the \fIvos(1)\fR manpage, +the \fIvos_backup(1)\fR manpage, +the \fIvos_copy(1)\fR manpage, +the \fIvos_move(1)\fR manpage, +the \fIvos_shadow(1)\fR manpage +.SH "COPYRIGHT" +Copyright 2008 Jason Edgecombe +.PP +This documentation is covered by the BSD License as written in the +doc/LICENSE file. This man page was written by Jason Edgecombe for +OpenAFS. + +.rn }` '' +.IX Title "VOS_CLONE 1" +.IX Name "vos_clone - Creates a shared-space copy of a volume on a partition" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Header "CAUTIONS" + +.IX Header "OPTIONS" + +.IX Item "[\fB\-id\fR] <\fIvolume name or \s-1ID\s0\fR>" + +.IX Item "[\fB\-server\fR] <\fImachine name\fR>" + +.IX Item "[\fB\-partition\fR] <\fIpartition name\fR>" + +.IX Item "\fB\-toname\fR <\fIvolume name for new copy\fR>" + +.IX Item "\fB\-toid\fR <\fIvolume id for new copy\fR>" + +.IX Item "\fB\-offline\fR" + +.IX Item "\fB\-readonly\fR" + +.IX Item "\fB\-cell\fR <\fIcell name\fR>" + +.IX Item "\fB\-noauth\fR" + +.IX Item "\fB\-localauth\fR" + +.IX Item "\fB\-verbose\fR" + +.IX Item "\fB\-encrypt\fR" + +.IX Item "\fB\-help\fR" + +.IX Header "OUTPUT" + +.IX Header "PRIVILEGE REQUIRED" + +.IX Header "SEE ALSO" + +.IX Header "COPYRIGHT" + diff --git a/doc/man-pages/man1/vos_convertROtoRW.1 b/doc/man-pages/man1/vos_convertROtoRW.1 index d61abe25d..e9ce5e068 100644 --- a/doc/man-pages/man1/vos_convertROtoRW.1 +++ b/doc/man-pages/man1/vos_convertROtoRW.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS_CONVERTROTORW 1 "OpenAFS" "25/Dec/2007" "AFS Command Reference" +.TH VOS_CONVERTROTORW 1 "OpenAFS" "30/Jun/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -201,9 +201,6 @@ when the original Read/Write volume is no longer available. It's normal use is to recover the Read/Write volume from a replica after a failed disk, failed server, or accidental deletion. .SH "CAUTIONS" -This command can only be used with namei AFS file servers. If used on an -inode AFS file server, it will fail with an error. -.PP The command name is case-sensitive. It must be issued with the capital \*(L"RO\*(R" and \*(L"RW\*(R". .SH "OPTIONS" diff --git a/doc/man-pages/man1/vos_copy.1 b/doc/man-pages/man1/vos_copy.1 index 7afb4701f..1cc55b18c 100644 --- a/doc/man-pages/man1/vos_copy.1 +++ b/doc/man-pages/man1/vos_copy.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS_COPY 1 "OpenAFS" "19/Jan/2008" "AFS Command Reference" +.TH VOS_COPY 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -203,14 +203,7 @@ The \fBvos copy\fR command makes a copy of a volume with a new name. It is equivalent to \fBvos dump\fR followed by \fBvos restore\fR, but doesn't require the volume be stored locally by the client. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "[\fB\-id\fR] <\fIvolume name or \s-1ID\s0\fR>" 4 Specifies either the complete name or volume \s-1ID\s0 number of a read/write diff --git a/doc/man-pages/man1/vos_create.1 b/doc/man-pages/man1/vos_create.1 index 09c19710c..a39106e9d 100644 --- a/doc/man-pages/man1/vos_create.1 +++ b/doc/man-pages/man1/vos_create.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS_CREATE 1 "OpenAFS" "19/Jan/2008" "AFS Command Reference" +.TH VOS_CREATE 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -228,14 +228,7 @@ with the \fBfs mkmount\fR command. The volume is empty when created. To access it via the Cache Manager, mount it in the file space by using the \fBfs mkmount\fR command. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-server\fR <\fIserver name\fR>" 4 Identifies the file server machine on which to create the read/write diff --git a/doc/man-pages/man1/vos_examine.1 b/doc/man-pages/man1/vos_examine.1 index dec7dac9b..c5f7267bb 100644 --- a/doc/man-pages/man1/vos_examine.1 +++ b/doc/man-pages/man1/vos_examine.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS_EXAMINE 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH VOS_EXAMINE 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -210,14 +210,7 @@ specified by the \fB\-id\fR argument. To display the volume header only, use the \fBvos listvol\fR command. To display information from the VLDB only, use the \fBvos listvldb\fR command. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-id\fR <\fIvolume name or \s-1ID\s0\fR>" 4 Specifies either the complete name or volume \s-1ID\s0 number of the volume, diff --git a/doc/man-pages/man1/vos_move.1 b/doc/man-pages/man1/vos_move.1 index 4075c662c..070069bb5 100644 --- a/doc/man-pages/man1/vos_move.1 +++ b/doc/man-pages/man1/vos_move.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS_MOVE 1 "OpenAFS" "19/Jan/2008" "AFS Command Reference" +.TH VOS_MOVE 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -255,14 +255,7 @@ confirmation of the kill signal: To confirm termination of the operation, press Ctrl-C a second time; press any other key to continue the operation. .PP -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-id\fR <\fIvolume name or \s-1ID\s0\fR>" 4 Specifies either the complete name or volume \s-1ID\s0 number of a read/write diff --git a/doc/man-pages/man1/vos_partinfo.1 b/doc/man-pages/man1/vos_partinfo.1 index 3a65475b5..a9d03b53d 100644 --- a/doc/man-pages/man1/vos_partinfo.1 +++ b/doc/man-pages/man1/vos_partinfo.1 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VOS_PARTINFO 1 "OpenAFS" "19/Feb/2008" "AFS Command Reference" +.TH VOS_PARTINFO 1 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -203,14 +203,7 @@ size on either all of the partitions on the indicated file server machine that file server machine. The Volume Location Database (VLDB) is not consulted. .SH "CAUTIONS" -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). .SH "OPTIONS" .Ip "\fB\-server\fR <\fIserver name\fR>" 4 Identifies the file server machine for which to display partition diff --git a/doc/man-pages/man5/AuthLog.5 b/doc/man-pages/man5/AuthLog.5 index 0de572b2e..d6528937c 100644 --- a/doc/man-pages/man5/AuthLog.5 +++ b/doc/man-pages/man5/AuthLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH AuthLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH AuthLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/AuthLog.dir.5 b/doc/man-pages/man5/AuthLog.dir.5 index f3634fb70..fb630dcd8 100644 --- a/doc/man-pages/man5/AuthLog.dir.5 +++ b/doc/man-pages/man5/AuthLog.dir.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH AuthLog.dir 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH AuthLog.dir 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/BackupLog.5 b/doc/man-pages/man5/BackupLog.5 index af04cddd8..2eb67a3dc 100644 --- a/doc/man-pages/man5/BackupLog.5 +++ b/doc/man-pages/man5/BackupLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH BackupLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH BackupLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/BosConfig.5 b/doc/man-pages/man5/BosConfig.5 index cba8e856c..605921b16 100644 --- a/doc/man-pages/man5/BosConfig.5 +++ b/doc/man-pages/man5/BosConfig.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH BosConfig 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH BosConfig 5 "OpenAFS" "20/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/BosLog.5 b/doc/man-pages/man5/BosLog.5 index 0db56356b..df1a5bc80 100644 --- a/doc/man-pages/man5/BosLog.5 +++ b/doc/man-pages/man5/BosLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH BosLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH BosLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/CellServDB.5 b/doc/man-pages/man5/CellServDB.5 index e0eea0cc8..b0cf042b1 100644 --- a/doc/man-pages/man5/CellServDB.5 +++ b/doc/man-pages/man5/CellServDB.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH CellServDB 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH CellServDB 5 "OpenAFS" "13/Jul/2008" "AFS File Reference" .UC .if n .hy 0 .if n .na @@ -196,13 +196,13 @@ database server machines in the local cell and any foreign cell that is to be accessible from the local client machine. The other version is used on servers and lists only the database servers in the local cell. .Sh "Client CellServDB" -The client version of the CellServDB file lists the database server -machines in the local cell and any foreign cell that is to be accessible -from the local client machine. Database server machines run the -Authentication Server, Backup Server, Protection Server, and Volume -Location (\s-1VL\s0) Server (the \fBkaserver\fR, \fBbuserver\fR, \fBptserver\fR, and -\fBvlserver\fR) processes, which maintain the cell's administrative \s-1AFS\s0 -databases. +Along with \s-1AFSDB\s0 entries in \s-1DNS\s0, the client version of the CellServDB file +lists the database server machines in the local cell and any foreign cell +that is to be accessible from the local client machine. Database server +machines run the Authentication Server (optional), Backup Server, +Protection Server, and Volume Location (\s-1VL\s0) Server (the \fBkaserver\fR, +\fBbuserver\fR, \fBptserver\fR, and \fBvlserver\fR) processes, which maintain the +cell's administrative \s-1AFS\s0 databases. .PP The Cache Manager and other processes running on a client machine use the list of a cell's database server machines when performing several common @@ -221,11 +221,12 @@ Protection Server when users create protection groups or request information from the Protection Database. .PP The Cache Manager reads the CellServDB file into kernel memory as it -initializes, and not again until the machine next reboots. To enable users -on the local machine to continue accessing the cell correctly, update the -file whenever a database server machine is added to or removed from a -cell. To update the kernel-resident list of database server machines -without rebooting, use the \fBfs newcell\fR command. +initializes, and not again until the machine next reboots or the client +service restarts. To enable users on the local machine to continue +accessing the cell correctly, update the file whenever a database server +machine is added to or removed from a cell. To update the kernel-resident +list of database server machines without rebooting, use the \fBfs newcell\fR +command. .PP The \fICellServDB\fR file is in \s-1ASCII\s0 format and must reside in the \fI/usr/vice/etc\fR directory on each \s-1AFS\s0 client machine. Use a text editor @@ -239,15 +240,16 @@ to access, whereas the server version lists only the local cell's database server machines. .Sh "Server CellServDB" The server version of the \fICellServDB\fR file lists the local cell's -database server machines. These machines run the Authentication Server, -Backup Server, Protection Server, and Volume Location (\s-1VL\s0) Server (the -\fBkaserver\fR, \fBbuserver\fR, \fBptserver\fR, and \fBvlserver\fR) processes, which -maintain the cell's administrative \s-1AFS\s0 databases. The initial version of -the file is created with the \fBbos setcellname\fR command during the -installation of the cell's server machine, which is automatically recorded -as the cell's first database server machine. When adding or removing -database server machines, be sure to update this file appropriately. It -must reside in the \fI/usr/afs/etc\fR directory on each \s-1AFS\s0 server machine. +database server machines. These machines run the Authentication Server +(optional), Backup Server, Protection Server, and Volume Location (\s-1VL\s0) +Server (the \fBkaserver\fR, \fBbuserver\fR, \fBptserver\fR, and \fBvlserver\fR) +processes, which maintain the cell's administrative \s-1AFS\s0 databases. The +initial version of the file is created with the \fBbos setcellname\fR command +during the installation of the cell's server machine, which is +automatically recorded as the cell's first database server machine. When +adding or removing database server machines, be sure to update this file +appropriately. It must reside in the \fI/usr/afs/etc\fR directory on each \s-1AFS\s0 +server machine. .PP The database server processes consult the \fICellServDB\fR file to learn about their peers, with which they must maintain constant connections in @@ -271,7 +273,7 @@ In cells that use the Update Server to distribute the contents of the \fI/usr/afs/etc\fR directory, it is customary to edit only the copy of the file stored on the system control machine. Otherwise, edit the file on each server machine individually. For instructions on adding and removing -database server machine, see the \fI\s-1IBM\s0 \s-1AFS\s0 Quick Beginnings\fR chapter on +database server machine, see the \fIOpenAFS Quick Start\fR chapter on installing additional server machines. .Sh "CellServDB Format" Both \fICellServDB\fR files have the same format: @@ -318,6 +320,7 @@ The following example shows entries for two cells in a client \& 192.12.108.55 #testdb2.abc.com .Ve .SH "SEE ALSO" +the \fIafsd(8)\fR manpage, the \fIbos_addhost(8)\fR manpage, the \fIbos_listhosts(8)\fR manpage, the \fIbos_removehost(8)\fR manpage, @@ -331,7 +334,7 @@ the \fIvlserver(8)\fR manpage, the \fIupclient(8)\fR manpage, the \fIupserver(8)\fR manpage .PP -\fIIBM AFS Quick Beginnings\fR +\fIOpenAFS Quick Start\fR .SH "COPYRIGHT" IBM Corporation 2000. All Rights Reserved. .PP diff --git a/doc/man-pages/man5/FORCESALVAGE.5 b/doc/man-pages/man5/FORCESALVAGE.5 index 1dbf9d1e6..5821e1e4d 100644 --- a/doc/man-pages/man5/FORCESALVAGE.5 +++ b/doc/man-pages/man5/FORCESALVAGE.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FORCESALVAGE 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH FORCESALVAGE 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/FileLog.5 b/doc/man-pages/man5/FileLog.5 index 5588c7277..e758c5921 100644 --- a/doc/man-pages/man5/FileLog.5 +++ b/doc/man-pages/man5/FileLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH FileLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH FileLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/KeyFile.5 b/doc/man-pages/man5/KeyFile.5 index 796238700..3bd1c6d16 100644 --- a/doc/man-pages/man5/KeyFile.5 +++ b/doc/man-pages/man5/KeyFile.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH KeyFile 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH KeyFile 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/NoAuth.5 b/doc/man-pages/man5/NoAuth.5 index be279f265..0021b53d4 100644 --- a/doc/man-pages/man5/NoAuth.5 +++ b/doc/man-pages/man5/NoAuth.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH NoAuth 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH NoAuth 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/SALVAGE.fs.5 b/doc/man-pages/man5/SALVAGE.fs.5 index 6529ccb52..3f8c88ef4 100644 --- a/doc/man-pages/man5/SALVAGE.fs.5 +++ b/doc/man-pages/man5/SALVAGE.fs.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH SALVAGE.fs 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH SALVAGE.fs 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/SalvageLog.5 b/doc/man-pages/man5/SalvageLog.5 index 6ab0679ec..9b757c62e 100644 --- a/doc/man-pages/man5/SalvageLog.5 +++ b/doc/man-pages/man5/SalvageLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH SalvageLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH SalvageLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/ThisCell.5 b/doc/man-pages/man5/ThisCell.5 index fea0c0ecc..e4bcc7718 100644 --- a/doc/man-pages/man5/ThisCell.5 +++ b/doc/man-pages/man5/ThisCell.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH ThisCell 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH ThisCell 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/UserList.5 b/doc/man-pages/man5/UserList.5 index 91a0e10dc..d1c218e7a 100644 --- a/doc/man-pages/man5/UserList.5 +++ b/doc/man-pages/man5/UserList.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH UserList 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH UserList 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/VLLog.5 b/doc/man-pages/man5/VLLog.5 index db32524b0..39089e451 100644 --- a/doc/man-pages/man5/VLLog.5 +++ b/doc/man-pages/man5/VLLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VLLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH VLLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/VolserLog.5 b/doc/man-pages/man5/VolserLog.5 index d942040e0..6d86db238 100644 --- a/doc/man-pages/man5/VolserLog.5 +++ b/doc/man-pages/man5/VolserLog.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH VolserLog 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH VolserLog 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/afs.5 b/doc/man-pages/man5/afs.5 index 7e537b90a..6b1d9b149 100644 --- a/doc/man-pages/man5/afs.5 +++ b/doc/man-pages/man5/afs.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH afs 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH afs 5 "OpenAFS" "13/Jul/2008" "AFS File Reference" .UC .if n .hy 0 .if n .na @@ -229,6 +229,7 @@ Configuration files: .Ip "the \fIThisCell(5)\fR manpage" 4 .Ip "the \fIbutc(5)\fR manpage" 4 .Ip "the \fIcacheinfo(5)\fR manpage" 4 +.Ip "the \fIkrb.conf(5)\fR manpage" 4 .Ip "the \fIpackage(5)\fR manpage" 4 .Ip "the \fIsysid(5)\fR manpage" 4 .Ip "the \fItapeconfig(5)\fR manpage" 4 @@ -313,6 +314,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "the \fIcacheinfo(5)\fR manpage" +.IX Item "the \fIkrb.conf(5)\fR manpage" + .IX Item "the \fIpackage(5)\fR manpage" .IX Item "the \fIsysid(5)\fR manpage" diff --git a/doc/man-pages/man5/afs_cache.5 b/doc/man-pages/man5/afs_cache.5 index 072d6633b..8e7c1ad8f 100644 --- a/doc/man-pages/man5/afs_cache.5 +++ b/doc/man-pages/man5/afs_cache.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH afs_cache 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH afs_cache 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/afs_volume_header.5 b/doc/man-pages/man5/afs_volume_header.5 index 99ffe2204..204b37056 100644 --- a/doc/man-pages/man5/afs_volume_header.5 +++ b/doc/man-pages/man5/afs_volume_header.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH afs_volume_header 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH afs_volume_header 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/afsmonitor.5 b/doc/man-pages/man5/afsmonitor.5 index cc8e6c04f..377778e7c 100644 --- a/doc/man-pages/man5/afsmonitor.5 +++ b/doc/man-pages/man5/afsmonitor.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH afsmonitor 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH afsmonitor 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/afszcm.cat.5 b/doc/man-pages/man5/afszcm.cat.5 index 64bc16d62..49feb88fa 100644 --- a/doc/man-pages/man5/afszcm.cat.5 +++ b/doc/man-pages/man5/afszcm.cat.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH afszcm.cat 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH afszcm.cat 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/bdb.DB0.5 b/doc/man-pages/man5/bdb.DB0.5 index 23bd62ad3..62c6e4ba9 100644 --- a/doc/man-pages/man5/bdb.DB0.5 +++ b/doc/man-pages/man5/bdb.DB0.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH bdb.DB0 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH bdb.DB0 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/butc.5 b/doc/man-pages/man5/butc.5 index aafb7ce16..f7298f32b 100644 --- a/doc/man-pages/man5/butc.5 +++ b/doc/man-pages/man5/butc.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH butc 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH butc 5 "OpenAFS" "20/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/butc_logs.5 b/doc/man-pages/man5/butc_logs.5 index 20120f144..f90f0e266 100644 --- a/doc/man-pages/man5/butc_logs.5 +++ b/doc/man-pages/man5/butc_logs.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH butc_logs 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH butc_logs 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/fms.log.5 b/doc/man-pages/man5/fms.log.5 index 59d67380e..be85a6691 100644 --- a/doc/man-pages/man5/fms.log.5 +++ b/doc/man-pages/man5/fms.log.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH fms.log 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH fms.log 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/kaserver.DB0.5 b/doc/man-pages/man5/kaserver.DB0.5 index 6a6771494..082be944c 100644 --- a/doc/man-pages/man5/kaserver.DB0.5 +++ b/doc/man-pages/man5/kaserver.DB0.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH kaserver.DB0 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH kaserver.DB0 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/kaserverauxdb.5 b/doc/man-pages/man5/kaserverauxdb.5 index 882cfab6d..14a9b84a1 100644 --- a/doc/man-pages/man5/kaserverauxdb.5 +++ b/doc/man-pages/man5/kaserverauxdb.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH kaserverauxdb 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH kaserverauxdb 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/krb.conf.5 b/doc/man-pages/man5/krb.conf.5 new file mode 100644 index 000000000..ddfa97586 --- /dev/null +++ b/doc/man-pages/man5/krb.conf.5 @@ -0,0 +1,216 @@ +.rn '' }` +''' $RCSfile$$Revision$$Date$ +''' +''' $Log$ +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH krb.conf 5 "OpenAFS" "13/Jul/2008" "AFS File Reference" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +krb.conf \- Configures the kerberos realm to AFS cell mapping +.SH "DESCRIPTION" +/usr/vice/etc/krb.conf is an optional file that resides on an OpenAFS +server and is used to specify which Kerberos5 realms are trusted to +authenticate to the local AFS cell. The format of the file is one realm +per line. If the Kerberos5 realm matches the AFS cell name +(case-insensitive), then this file can be omitted. krb.conf is only needed +when the Kerberos5 realm does not match the cell name or multiple +Kerberos5 realms authenticate to the same AFS cell. +.SH "COPYRIGHT" +Copyright 2008 Jason Edgecombe +.PP +This documentation is covered by the BSD License as written in the +doc/LICENSE file. This man page was written by Jason Edgecombe for +OpenAFS. + +.rn }` '' +.IX Title "krb.conf 5" +.IX Name "krb.conf - Configures the kerberos realm to AFS cell mapping" + +.IX Header "NAME" + +.IX Header "DESCRIPTION" + +.IX Header "COPYRIGHT" + diff --git a/doc/man-pages/man5/package.5 b/doc/man-pages/man5/package.5 index e05053d23..b731dd26b 100644 --- a/doc/man-pages/man5/package.5 +++ b/doc/man-pages/man5/package.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH package 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH package 5 "OpenAFS" "20/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/salvage.lock.5 b/doc/man-pages/man5/salvage.lock.5 index cc3185288..fe4c0675a 100644 --- a/doc/man-pages/man5/salvage.lock.5 +++ b/doc/man-pages/man5/salvage.lock.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH salvage.lock 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH salvage.lock 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/sysid.5 b/doc/man-pages/man5/sysid.5 index 6c6172c72..7967e86f2 100644 --- a/doc/man-pages/man5/sysid.5 +++ b/doc/man-pages/man5/sysid.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH sysid 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH sysid 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/tapeconfig.5 b/doc/man-pages/man5/tapeconfig.5 index 02d228ec5..4ff52fdc0 100644 --- a/doc/man-pages/man5/tapeconfig.5 +++ b/doc/man-pages/man5/tapeconfig.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH tapeconfig 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH tapeconfig 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/uss.5 b/doc/man-pages/man5/uss.5 index 8f28d0729..177cd2457 100644 --- a/doc/man-pages/man5/uss.5 +++ b/doc/man-pages/man5/uss.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH uss 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH uss 5 "OpenAFS" "20/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/uss_bulk.5 b/doc/man-pages/man5/uss_bulk.5 index da78542a1..1c4fe0f61 100644 --- a/doc/man-pages/man5/uss_bulk.5 +++ b/doc/man-pages/man5/uss_bulk.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH uss_bulk 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH uss_bulk 5 "OpenAFS" "20/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man5/vldb.DB0.5 b/doc/man-pages/man5/vldb.DB0.5 index 53ce08fcb..aa5762e52 100644 --- a/doc/man-pages/man5/vldb.DB0.5 +++ b/doc/man-pages/man5/vldb.DB0.5 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH vldb.DB0 5 "OpenAFS" "5/Jan/2006" "AFS File Reference" +.TH vldb.DB0 5 "OpenAFS" "13/Dec/2005" "AFS File Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/asetkey.8 b/doc/man-pages/man8/asetkey.8 index 52fe3389a..9748e23c1 100644 --- a/doc/man-pages/man8/asetkey.8 +++ b/doc/man-pages/man8/asetkey.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH asetkey 8 "OpenAFS" "3/Apr/2006" "AFS Command Reference" +.TH asetkey 8 "OpenAFS" "29/Mar/2006" "AFS Command Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/backup.8 b/doc/man-pages/man8/backup.8 index c1a27a677..37f96f508 100644 --- a/doc/man-pages/man8/backup.8 +++ b/doc/man-pages/man8/backup.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH backup 8 "OpenAFS" "5/Jan/2006" "AFS Command Reference" +.TH backup 8 "OpenAFS" "13/Dec/2005" "AFS Command Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/bos.8 b/doc/man-pages/man8/bos.8 index 8a3571b79..d4658d519 100644 --- a/doc/man-pages/man8/bos.8 +++ b/doc/man-pages/man8/bos.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH bos 8 "OpenAFS" "5/Jan/2006" "AFS Command Reference" +.TH bos 8 "OpenAFS" "13/Dec/2005" "AFS Command Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/bos_create.8 b/doc/man-pages/man8/bos_create.8 index 91cc6b488..0bd826341 100644 --- a/doc/man-pages/man8/bos_create.8 +++ b/doc/man-pages/man8/bos_create.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH bos_create 8 "OpenAFS" "11/Nov/2007" "AFS Command Reference" +.TH bos_create 8 "OpenAFS" "14/Mar/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -216,10 +216,15 @@ fully-qualified or abbreviated unambiguously). For details, see the \fIbos(8)\fR .Ip "\fB\-instance\fR <\fIserver process name\fR>" 4 Names the process to define and start. Any name is acceptable, but for the sake of simplicity it is best to use the last element of the process's -binary file pathname, and to use the same name on every server -machine. The conventional names, as used in all \s-1AFS\s0 documentation, are: +binary file pathname (or the instance type for \fBfs\fR and \fBdafs\fR), and to +use the same name on every server machine. The conventional names, as used +in all \s-1AFS\s0 documentation, are: .Ip "buserver" 8 The Backup Server process. +.Ip "dafs" 8 +The process that combines the Demand Attach File Server, Volume Server, +Salvageserver and Salvager processes (\fBfileserver\fR, \fBvolserver\fR, +\fBsalvageserver\fR, and \fBsalvager\fR). .Ip "fs" 8 The process that combines the File Server, Volume Server, and Salvager processes (\fBfileserver\fR, \fBvolserver\fR, and \fBsalvager\fR). @@ -228,7 +233,7 @@ The Authentication Server process. .Ip "ptserver" 8 The Protection Server process. .Ip "runntp" 8 -The controller process for the Network Time Protocol Daemon. +The controller process for the Network Time Protocol Daemon (obsolete). .Ip "upclientbin" 8 The client portion of the Update Server process that retrieves binary files from the \fI/usr/afs/bin\fR directory of the binary distribution @@ -253,6 +258,12 @@ process has terminated. \s-1AFS\s0 does not define any such processes by default but makes this value available for administrator use. Define the time for command execution as part of the \fB\-cmd\fR argument to the \fBbos create\fR command. +.Ip "dafs" 8 +Use this value only for the dafs process, which combines the File Server, +Volume Server, Salvageserver, and Salvager processes in order to operate +as a Demand Attach File Server. If one of the component processes +terminates, the \s-1BOS\s0 Server shuts down and restarts the process in the +appropriate order. .Ip "fs" 8 Use this value only for the fs process, which combines the File Server, Volume Server and Salvager processes. If one of the component processes @@ -260,9 +271,9 @@ terminates, the \s-1BOS\s0 Server shuts down and restarts the processes in the appropriate order. .Ip "simple" 8 Use this value for all processes listed as acceptable values to the -\fB\-instance\fR argument, except for the \fBfs\fR process. There are no -interdependencies between simple processes, so the \s-1BOS\s0 Server can stop and -start them independently as necessary. +\fB\-instance\fR argument, except for the \fBfs\fR and \fBdafs\fR processes. +There are no interdependencies between simple processes, so the +\s-1BOS\s0 Server can stop and start them independently as necessary. .Ip "\fB\-cmd\fR <\fIcommand lines\fR>+" 4 Specifies each command the \s-1BOS\s0 Server runs to start the process. Specify no more than six commands (which can include the command's options, in @@ -356,6 +367,14 @@ The following command creates the fs process fs on the machine \& -cmd /usr/afs/bin/fileserver /usr/afs/bin/volserver \e \& /usr/afs/bin/salvager .Ve +The following command creates the dafs process dafs on the machine +\f(CWfs4.abc.com\fR. Type the command on a single line. +.PP +.Vb 3 +\& % bos create -server fs4.abc.com -instance dafs -type dafs \e +\& -cmd /usr/afs/bin/fileserver /usr/afs/bin/volserver \e +\& /usr/afs/bin/salvageserver /usr/afs/bin/salvager +.Ve The following command creates a cron process called \f(CWuserbackup\fR on the machine \f(CWfs5.abc.com\fR, so that the BOS Server issues the indicated \fBvos backupsys\fR command each day at 3:00 a.m. (the command creates a backup @@ -482,6 +501,7 @@ the \fIfileserver(8)\fR manpage, the \fIkaserver(8)\fR manpage, the \fIptserver(8)\fR manpage, the \fIsalvager(8)\fR manpage, +the \fIsalvageserver(8)\fR manpage, the \fIupclient(8)\fR manpage, the \fIupserver(8)\fR manpage, the \fIvlserver(8)\fR manpage, @@ -512,6 +532,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "buserver" +.IX Item "dafs" + .IX Item "fs" .IX Item "kaserver" @@ -532,6 +554,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "cron" +.IX Item "dafs" + .IX Item "fs" .IX Item "simple" diff --git a/doc/man-pages/man8/bos_salvage.8 b/doc/man-pages/man8/bos_salvage.8 index 0265869c7..d88b3eeb4 100644 --- a/doc/man-pages/man8/bos_salvage.8 +++ b/doc/man-pages/man8/bos_salvage.8 @@ -197,6 +197,7 @@ bos_salvage \- Restores internal consistency to a file system or volume <<\ [\fB\-parallel\fR\ <\fI#\ of\ max\ parallel\ partition\ salvaging\fR] >>> <<\ [\fB\-tmpdir\fR\ <\fIdirectory\ to\ place\ tmp\ files\fR] >>> <<\ [\fB\-orphans\fR\ (ignore\ |\ remove\ |\ attach)]\ >> <<\ [\fB\-cell\fR\ <\fIcell\ name\fR] >>> + <<\ [\fB\-forceDAFS\fR]\ >> [\fB\-noauth\fR] [\fB\-localauth\fR] [\fB\-help\fR] .PP \fBbos sa\fR <<\ \fB\-se\fR\ <\fImachine\ name\fR >>> <<\ [\fB\-part\fR\ <\fIsalvage\ partition\fR] >>> @@ -205,6 +206,7 @@ bos_salvage \- Restores internal consistency to a file system or volume [<\-para> <\fI# of max parallel partition salvaging\fR>] <<\ [\fB\-t\fR\ <\fIdirectory\ to\ place\ tmp\ files\fR] >>> <<\ [\fB\-o\fR\ (ignore\ |\ remove\ |\ attach)]\ >> <<\ [\fB\-c\fR\ <\fIcell\ name\fR] >>> [\fB\-n\fR] + <<\ [\fB\-force\fR]\ >> [\fB\-l\fR] [\fB\-h\fR] .SH "DESCRIPTION" The \fBbos salvage\fR command salvages (restores internal consistency to) one @@ -390,6 +392,9 @@ where \fIindex\fR is a two-digit number that uniquely identifies each object. The orphans are charged against the volume's quota and appear in the output of the \fBls\fR command issued against the volume's root directory. +.Ip "\fB\-forceDAFS\fR" 4 +If the fileserver is a Demand Attach File Server, then the \fB\-forceDAFS\fR +flag must be provided in order for the \fBsalvager\fR to run. .Ip "\fB\-cell\fR <\fIcell name\fR>" 4 Names the cell in which to run the command. Do not combine this argument with the \fB\-localauth\fR flag. For more details, see the \fIbos(8)\fR manpage. @@ -437,6 +442,7 @@ the \fISalvageLog(5)\fR manpage, the \fIUserList(5)\fR manpage, the \fIbos(8)\fR manpage, the \fIsalvager(8)\fR manpage, +the \fIsalvagserver(8)\fR manpage, the \fIvos_backup(1)\fR manpage, the \fIvos_release(1)\fR manpage, the \fIvos_remove(1)\fR manpage, @@ -508,6 +514,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\(bu" +.IX Item "\fB\-forceDAFS\fR" + .IX Item "\fB\-cell\fR <\fIcell name\fR>" .IX Item "\fB\-noauth\fR" diff --git a/doc/man-pages/man8/bosserver.8 b/doc/man-pages/man8/bosserver.8 index df6a389a9..14dec6410 100644 --- a/doc/man-pages/man8/bosserver.8 +++ b/doc/man-pages/man8/bosserver.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH bosserver 8 "OpenAFS" "4/Feb/2008" "AFS Command Reference" +.TH bosserver 8 "OpenAFS" "22/Jan/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/buserver.8 b/doc/man-pages/man8/buserver.8 index a68ea95f4..aa9082e0d 100644 --- a/doc/man-pages/man8/buserver.8 +++ b/doc/man-pages/man8/buserver.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH buserver 8 "OpenAFS" "1/Mar/2006" "AFS Command Reference" +.TH buserver 8 "OpenAFS" "2/Apr/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -192,8 +192,9 @@ buserver \- Initializes the Backup Server .SH "SYNOPSIS" \fBbuserver\fR <<\ [\fB\-database\fR\ <\fIdatabase\ directory\fR] >>> <<\ [\fB\-cellservdb\fR\ <\fIcell\ configuration\ directory\fR] >>> [\fB\-resetdb\fR] - [\fB\-noauth\fR] [\fB\-smallht\fR] [\-servers <\fIlist of ubik database servers\fR>+] - [\fB\-enable_peer_stats\fR] [\-enable_process_stats] [\fB\-help\fR] + [\fB\-noauth\fR] [\fB\-smallht\fR] [\fB\-servers\fR <\fIlist of ubik database servers\fR>+] + [\fB\-enable_peer_stats\fR] [\fB\-enable_process_stats\fR] [\fB\-rxbind\fR] + [\fB\-p\fR <\fInumber of threads\fR>] [\fB\-help\fR] .SH "DESCRIPTION" The \fBbuserver\fR command initializes the Backup Server, which runs on database server machines and maintains the Backup Database. In the @@ -271,6 +272,12 @@ storage. A separate record is kept for each type of \s-1RPC\s0 (FetchFile, GetStatus, and so on) sent or received, aggregated over all connections to other machines. To display or otherwise access the records, use the Rx Monitoring \s-1API\s0. +.Ip "\fB\-rxbind\fR" 4 +Bind the Rx socket to the primary interface only. (If not specified, the +Rx socket will listen on all interfaces.) +.Ip "\fB\-p\fR <\fInumber of threads\fR>" 4 +Sets the number of server lightweight processes (LWPs or pthreads) to run. +Provide a positive integer from the range 3 to 16. The default value is 3. .Ip "\fB\-help\fR" 4 Prints the online help for this command. All other valid options are ignored. @@ -333,6 +340,10 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\fB\-enable_process_stats\fR" +.IX Item "\fB\-rxbind\fR" + +.IX Item "\fB\-p\fR <\fInumber of threads\fR>" + .IX Item "\fB\-help\fR" .IX Header "EXAMPLES" diff --git a/doc/man-pages/man8/fileserver.8 b/doc/man-pages/man8/fileserver.8 index 0343ee9ac..44f0ea392 100644 --- a/doc/man-pages/man8/fileserver.8 +++ b/doc/man-pages/man8/fileserver.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH fileserver 8 "OpenAFS" "4/Feb/2008" "AFS Command Reference" +.TH fileserver 8 "OpenAFS" "13/Jul/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -194,25 +194,51 @@ fileserver \- Initializes the File Server component of the fs process <<\ [\fB\-d\fR\ <\fIdebug\ level\fR] >>> <<\ [\fB\-p\fR\ <\fInumber\ of\ processes\fR] >>> <<\ [\fB\-spare\fR\ <\fInumber\ of\ spare\ blocks\fR] >>> - <<\ [\fB\-pctspare\fR\ <\fIpercentage\ spare\fR] >>> <<\ [\fB\-b\fR\ <\fIbuffers\fR] >>> - <<\ [\fB\-l\fR\ <\fIlarge\ vnodes\fR] >>> <<\ [\fB\-s\fR\ <\fIsmall\ vnodes\fR] >>> - <<\ [\fB\-vc\fR\ <\fIvolume\ cachesize\fR] >>> <<\ [\fB\-w\fR\ <\fIcall\ back\ wait\ interval\fR] >>> - <<\ [\fB\-cb\fR\ <\fInumber\ of\ call\ backs\fR] >>> [\fB\-banner\fR] [\fB\-novbc\fR] - <<\ [\fB\-implicit\fR\ <\fIadmin\ mode\ bits:\ rlidwka\fR] >>> [\fB\-readonly\fR] + <<\ [\fB\-pctspare\fR\ <\fIpercentage\ spare\fR] >>> + <<\ [\fB\-b\fR\ <\fIbuffers\fR] >>> + <<\ [\fB\-l\fR\ <\fIlarge\ vnodes\fR] >>> + <<\ [\fB\-s\fR\ <\fIsmall\ vnodes\fR] >>> + <<\ [\fB\-vc\fR\ <\fIvolume\ cachesize\fR] >>> + <<\ [\fB\-w\fR\ <\fIcall\ back\ wait\ interval\fR] >>> + <<\ [\fB\-cb\fR\ <\fInumber\ of\ call\ backs\fR] >>> + <<\ [\fB\-banner\fR]\ >> + <<\ [\fB\-novbc\fR]\ >> + <<\ [\fB\-implicit\fR\ <\fIadmin\ mode\ bits:\ rlidwka\fR] >>> + <<\ [\fB\-readonly\fR]\ >> <<\ [\fB\-hr\fR\ <\fInumber\ of\ hours\ between\ refreshing\ the\ host\ cps\fR] >>> <<\ [\fB\-busyat\fR\ <\fI<\ redirect\ clients\ when\ queue\ \fR\ n\ >>] >>> - [\fB\-nobusy\fR] <<\ [\fB\-rxpck\fR\ <\fInumber\ of\ rx\ extra\ packets\fR] >>> - [\fB\-rxdbg\fR] [\fB\-rxdbge\fR] <<\ [\fB\-rxmaxmtu\fR\ <\fIbytes\fR] >>> - [\fB\-allow-dotted-principal\fR] - <<\ [\fB\-rxbind\fR\ <\fIaddress\ to\ bind\ the\ Rx\ socket\ to\fR] >>> - <<\ [\fB\-vattachpar\fR\ <\fInumber\ of\ volume\ attach\ threads\fR] >>> - <<\ [\fB\-m\fR\ <\fImin\ percentage\ spare\ in\ partition\fR] >>> - [\fB\-lock\fR] [\fB\-L\fR] [\fB\-S\fR] <<\ [\fB\-k\fR\ <\fIstack\ size\fR] >>> + <<\ [\fB\-nobusy\fR]\ >> + <<\ [\fB\-rxpck\fR\ <\fInumber\ of\ rx\ extra\ packets\fR] >>> + <<\ [\fB\-rxdbg\fR]\ >> + <<\ [\fB\-rxdbge\fR]\ >> + <<\ [\fB\-rxmaxmtu\fR\ <\fIbytes\fR] >>> + <<\ [\fB\-nojumbo\fR\ >> + <<\ [\fB\-rxbind\fR\ >> + <<\ [\fB\-allow-dotted-principals\fR]\ >> + <<\ [\fB\-L\fR]\ >> + <<\ [\fB\-S\fR]\ >> + <<\ [\fB\-k\fR\ <\fIstack\ size\fR] >>> <<\ [\fB\-realm\fR\ <\fIKerberos\ realm\ name\fR] >>> <<\ [\fB\-udpsize\fR\ <\fIsize\ of\ socket\ buffer\ in\ bytes\fR] >>> <<\ [\fB\-sendsize\fR\ <\fIsize\ of\ send\ buffer\ in\ bytes\fR] >>> <<\ [\fB\-abortthreshold\fR\ <\fIabort\ threshold\fR] >>> - [\fB\-enable_peer_stats\fR] [\fB\-enable_process_stats\fR] [\fB\-help\fR] + <<\ [\fB\-enable_peer_stats\fR]\ >> + <<\ [\fB\-enable_process_stats\fR]\ >> + <<\ [\fB\-syslog\fR\ [<\fI\ loglevel\ \fR]] >>> + <<\ [\fB\-mrafslogs\fR]\ >> + <<\ [\fB\-saneacls\fR]\ >> + <<\ [\fB\-help\fR]\ >> + <<\ [\fB\-fs-state-dont-save\fR]\ >> + <<\ [\fB\-fs-state-dont-restore\fR]\ >> + <<\ [\fB\-fs-state-verify\fR]\ (none\ |\ save\ |\ restore\ |\ both)]\ >> + <<\ [\fB\-vhashsize\fR\ <\fIlog(2)\ of\ number\ of\ volume\ hash\ buckets\fR] >>> + <<\ [\fB\-vlrudisable\fR]\ >> + <<\ [\fB\-vlruthresh\fR\ <\fIminutes\ before\ unused\ volumes\ become\ eligible\ for\ soft\ detach\fR] >>> + <<\ [\fB\-vlruinterval\fR\ <\fIseconds\ between\ VLRU\ scans\fR] >>> + <<\ [\fB\-vlrumax\fR\ <\fImax\ volumes\ to\ soft\ detach\ in\ one\ VLRU\ scan\fR] >>> + <<\ [\fB\-vattachpar\fR\ <\fInumber\ of\ volume\ attach\ threads\fR] >>> + <<\ [\fB\-m\fR\ <\fImin\ percentage\ spare\ in\ partition\fR] >>> + <<\ [\fB\-lock\fR]\ >> .SH "DESCRIPTION" The \fBfileserver\fR command initializes the File Server component of the \f(CWfs\fR process. In the conventional configuration, its binary file is @@ -240,9 +266,10 @@ corresponding argument for which the \fBfileserver\fR command sets default values, and the table below summarizes the setting for each of the three machine sizes. .Ip "\(bu" 4 -The maximum number of lightweight processes (LWPs) the File Server uses to -handle requests for data; corresponds to the \fB\-p\fR argument. The File -Server always uses a minimum of 32 \s-1KB\s0 of memory for these processes. +The maximum number of lightweight processes (LWPs) or pthreads +the File Server uses to handle requests for data; corresponds to the +\fB\-p\fR argument. The File Server always uses a minimum of 32 \s-1KB\s0 of +memory for these processes. .Ip "\(bu" 4 The maximum number of directory blocks the File Server caches in memory; corresponds to the \fB\-b\fR argument. Each cached directory block (buffer) @@ -356,13 +383,9 @@ and \fB\-lock\fR options, appear in the output generated by the \fB\-help\fR option only on the relevant system type. .PP Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -\fBvos partinfo\fR or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +and the maximum size of a /vicepX partition on a fileserver is 2^64 +kilobytes. (The maximum partition size in releases 1.5.34 and earlier +is 2^31 kilobytes.) .PP The maximum number of directory entries is 64,000 if all of the entries have names that are 15 characters or less in length. A name @@ -384,11 +407,11 @@ Sets the detail level for the debugging trace written to the of which produces an increasingly detailed trace: \f(CW0\fR, \f(CW1\fR, \f(CW5\fR, \f(CW25\fR, and \f(CW125\fR. The default value of \f(CW0\fR produces only a few messages. .Ip "\fB\-p\fR <\fInumber of processes\fR>" 4 -Sets the number of threads to run. Provide a positive integer. The File -Server creates and uses five threads for special purposes, in addition to -the number specified (but if this argument specifies the maximum possible -number, the File Server automatically uses five of the threads for its own -purposes). +Sets the number of threads (or LWPs) to run. Provide a positive integer. +The File Server creates and uses five threads for special purposes, +in addition to the number specified (but if this argument specifies +the maximum possible number, the File Server automatically uses five +of the threads for its own purposes). .Sp The maximum number of threads can differ in each release of \s-1AFS\s0. Consult the \fI\s-1IBM\s0 \s-1AFS\s0 Release Notes\fR for the current release. @@ -439,6 +462,8 @@ permission letters (\f(CWrlidwka\fR) and auxiliary permission letters (\f(CWABCDEFGH\fR), or one of the shorthand notations for groups of permissions (\f(CWall\fR, \f(CWnone\fR, \f(CWread\fR, and \f(CWwrite\fR). To review the meaning of the permissions, see the \fBfs setacl\fR reference page. +.Ip "\fB\-readonly\fR" 4 +Don't allow writes to this fileserver. .Ip "\fB\-hr\fR <\fInumber of hours between refreshing the host cps\fR>" 4 Specifies how often the File Server refreshes its knowledge of the machines that belong to protection groups (refreshes the host CPSs for @@ -461,25 +486,23 @@ integer. .Ip "\fB\-rxdbg\fR" 4 Writes a trace of the File Server's operations on Rx packets to the file \fI/usr/afs/logs/rx_dbg\fR. -.Ip "\fI\-rxdbge\fR" 4 +.Ip "\fB\-rxdbge\fR" 4 Writes a trace of the File Server's operations on Rx events (such as retransmissions) to the file \fI/usr/afs/logs/rx_dbg\fR. +.Ip "\fB\-rxmaxmtu\fR <\fIbytes\fR>" 4 +Defines the maximum size of an \s-1MTU\s0. The value must be between the +minimum and maximum packet data sizes for Rx. +.Ip "\fB\-nojumbo\fR" 4 +Do not send, and do not accept, jumbograms. +.Ip "\fB\-rxbind\fR" 4 +Force the fileserver to only bind to one \s-1IP\s0 address. .Ip "\fB\-allow-dotted-principal\fR" 4 By default, the \s-1RXKAD\s0 security layer will disallow access by Kerberos principals with a dot in the first component of their name. This is to avoid the confusion where principals user/admin and user.admin are both mapped to the user.admin \s-1PTS\s0 entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server +between principal names may disable this check by starting the server with this option. -.Ip "\fI\-m\fR <\fImin percentage spare in partition\fR>" 4 -Specifies the percentage of each \s-1AFS\s0 server partition that the \s-1AIX\s0 version -of the File Server creates as a reserve. Specify an integer value between -\f(CW0\fR and \f(CW30\fR; the default is 8%. A value of \f(CW0\fR means that the -partition can become completely full, which can have serious negative -consequences. -.Ip "\fB\-lock\fR" 4 -Prevents any portion of the fileserver binary from being paged (swapped) -out of memory on a file server machine running the \s-1IRIX\s0 operating system. .Ip "\fB\-L\fR" 4 Sets values for many arguments in a manner suitable for a large file server machine. Combine this flag with any option except the \fB\-S\fR flag; @@ -500,18 +523,8 @@ listed in the local \fI/usr/afs/etc/ThisCell\fR file. .Ip "\fB\-udpsize\fR <\fIsize of socket buffer in bytes\fR>" 4 Sets the size of the \s-1UDP\s0 buffer, which is 64 \s-1KB\s0 by default. Provide a positive integer, preferably larger than the default. -.Ip "\fB\-enable_peer_stats\fR" 4 -Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific \s-1UDP\s0 port on another machine, -a separate record is kept for each type of \s-1RPC\s0 (FetchFile, GetStatus, and -so on) sent or received. To display or otherwise access the records, use -the Rx Monitoring \s-1API\s0. -.Ip "\fB\-enable_process_stats\fR" 4 -Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of \s-1RPC\s0 (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring \s-1API\s0. +.Ip "\fB\-sendsize\fR <\fIsize of send buffer in bytes\fR>" 4 +Sets the size of the send buffer, which is 16384 bytes by default. .Ip "\fB\-abortthreshold\fR <\fIabort threshold\fR>" 4 Sets the abort threshold, which is triggered when an \s-1AFS\s0 client sends a number of FetchStatus requests in a row and all of them fail due to @@ -528,9 +541,89 @@ time instead of in bulk like the Unix Open \s-1AFS\s0 client. .Sp Setting the threshold to 0 disables the throttling behavior. This option is available in OpenAFS versions 1.4.1 and later. +.Ip "\fB\-enable_peer_stats\fR" 4 +Activates the collection of Rx statistics and allocates memory for their +storage. For each connection with a specific \s-1UDP\s0 port on another machine, +a separate record is kept for each type of \s-1RPC\s0 (FetchFile, GetStatus, and +so on) sent or received. To display or otherwise access the records, use +the Rx Monitoring \s-1API\s0. +.Ip "\fB\-enable_process_stats\fR" 4 +Activates the collection of Rx statistics and allocates memory for their +storage. A separate record is kept for each type of \s-1RPC\s0 (FetchFile, +GetStatus, and so on) sent or received, aggregated over all connections to +other machines. To display or otherwise access the records, use the Rx +Monitoring \s-1API\s0. +.Ip "\fB\-syslog [ instead of the +default \s-1LOG_USER\s0. +.Ip "\fB\-mrafslogs\fR" 4 +Use \s-1MR\s0\-\s-1AFS\s0 (Multi-Resident) style logging. This option is deprecated. +.Ip "\fB\-saneacls\fR" 4 +Offer the \s-1SANEACLS\s0 capability for the fileserver. This option is +currently unimplemented. .Ip "\fB\-help\fR" 4 Prints the online help for this command. All other valid options are ignored. +.Ip "\fB\-fs-state-dont-save\fR" 4 +When present, fileserver state will not be saved during shutdown. Default +is to save state. +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-fs-state-dont-restore\fR" 4 +When present, fileserver state will not be restored during startup. +Default is to restore state on startup. +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-fs-state-verify\fR (none | save | restore | both)" 4 +This argument controls the behavior of the state verification mechanism. +A value of \f(CWnone\fR turns off all verification. A value of \f(CWsave\fR only +performs the verification steps prior to saving state to disk. A value +of \f(CWrestore\fR only performs the verification steps after restoring state +from disk. A value of \f(CWboth\fR performs all verifications steps both +prior to save and following a restore. +.Sp +The default is \f(CWboth\fR. +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-vhashsize <\fIsize\fR\fR" 4 +The \fIlog\fR\|(2) number of of volume hash buckets. Default is 8 (i.e., by +default, there are 2^8 = 256 volume hash buckets). +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-vlruthresh <\fIminutes\fR\fR" 4 +The number of minutes of inactivity before a volume is eligible for soft +detachment. Default is 120 minutes. +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-vlruinterval <\fIseconds\fR\fR" 4 +The number of seconds between \s-1VLRU\s0 candidate queue scan. The default is +120 seconds. +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-vlrumax <\fIpositive integer\fR\fR" 4 +The maximum number of volumes which can be soft detached in a single pass +of the scanner. Default is 8 volumes. +.Sp +This option is only supported by the demand-attach file server. +.Ip "\fB\-vattachpar\fR <\fInumber of volume attach threads\fR>" 4 +The number of threads assigned to attach and detach volumes. The default +is 1. Warning: many of the I/O parallism features of Demand-Attach +Fileserver are turned off when the number of volume attach threads is only +1. +.Sp +This option is only meaningful for a file server built with pthreads +support. +.Ip "\fB\-m\fR <\fImin percentage spare in partition\fR>" 4 +Specifies the percentage of each \s-1AFS\s0 server partition that the \s-1AIX\s0 version +of the File Server creates as a reserve. Specify an integer value between +\f(CW0\fR and \f(CW30\fR; the default is 8%. A value of \f(CW0\fR means that the +partition can become completely full, which can have serious negative +consequences. This option is not supported on platforms other than \s-1AIX\s0. +.Ip "\fB\-lock\fR" 4 +Prevents any portion of the fileserver binary from being paged (swapped) +out of memory on a file server machine running the \s-1IRIX\s0 operating system. +This option is not supported on platforms other than \s-1IRIX\s0. .SH "EXAMPLES" The following \fBbos create\fR command creates an fs process on the file server machine \f(CWfs2.abc.com\fR that uses the large configuration size, and @@ -790,6 +883,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\fB\-implicit\fR <\fIadmin mode bits\fR>" +.IX Item "\fB\-readonly\fR" + .IX Item "\fB\-hr\fR <\fInumber of hours between refreshing the host cps\fR>" .IX Item "\fB\-busyat\fR <\fI< redirect clients when queue \fR n >>>" @@ -798,13 +893,15 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\fB\-rxdbg\fR" -.IX Item "\fI\-rxdbge\fR" +.IX Item "\fB\-rxdbge\fR" -.IX Item "\fB\-allow-dotted-principal\fR" +.IX Item "\fB\-rxmaxmtu\fR <\fIbytes\fR>" -.IX Item "\fI\-m\fR <\fImin percentage spare in partition\fR>" +.IX Item "\fB\-nojumbo\fR" -.IX Item "\fB\-lock\fR" +.IX Item "\fB\-rxbind\fR" + +.IX Item "\fB\-allow-dotted-principal\fR" .IX Item "\fB\-L\fR" @@ -816,14 +913,42 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\fB\-udpsize\fR <\fIsize of socket buffer in bytes\fR>" +.IX Item "\fB\-sendsize\fR <\fIsize of send buffer in bytes\fR>" + +.IX Item "\fB\-abortthreshold\fR <\fIabort threshold\fR>" + .IX Item "\fB\-enable_peer_stats\fR" .IX Item "\fB\-enable_process_stats\fR" -.IX Item "\fB\-abortthreshold\fR <\fIabort threshold\fR>" +.IX Item "\fB\-syslog [" + +.IX Item "\fB\-m\fR <\fImin percentage spare in partition\fR>" + +.IX Item "\fB\-lock\fR" + .IX Header "EXAMPLES" .IX Header "TROUBLESHOOTING" diff --git a/doc/man-pages/man8/fstrace.8 b/doc/man-pages/man8/fstrace.8 index 7e83bc9c9..f43e5d280 100644 --- a/doc/man-pages/man8/fstrace.8 +++ b/doc/man-pages/man8/fstrace.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH fstrace 8 "OpenAFS" "5/Jan/2006" "AFS Command Reference" +.TH fstrace 8 "OpenAFS" "13/Dec/2005" "AFS Command Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/kas.8 b/doc/man-pages/man8/kas.8 index 75e38916f..a9eccdca5 100644 --- a/doc/man-pages/man8/kas.8 +++ b/doc/man-pages/man8/kas.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH kas 8 "OpenAFS" "5/Jan/2006" "AFS Command Reference" +.TH kas 8 "OpenAFS" "13/Dec/2005" "AFS Command Reference" .UC .if n .hy 0 .if n .na diff --git a/doc/man-pages/man8/ptserver.8 b/doc/man-pages/man8/ptserver.8 index 546f75aee..ac389d294 100644 --- a/doc/man-pages/man8/ptserver.8 +++ b/doc/man-pages/man8/ptserver.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH ptserver 8 "OpenAFS" "4/Feb/2008" "AFS Command Reference" +.TH ptserver 8 "OpenAFS" "5/Jun/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -190,9 +190,14 @@ .SH "NAME" ptserver \- Initializes the Protection Server .SH "SYNOPSIS" -\fBptserver\fR <<\ [\fB\-database\fR\ <\fIdb\ path\fR] >>> <<\ [\fB\-p\fR\ <\fInumber\ of\ processes\fR] >>> - [\fB\-rebuildDB\fR] [\fB\-enable_peer_stats\fR] [\fB\-enable_process_stats\fR] - [\fB\-allow-dotted-principal\fR] [\fB\-help\fR] +\fBptserver\fR <<\ [\fB\-database\fR\ |\ \fB\-db\fR\ <\fIdb\ path\fR] >>> <<\ [\fB\-p\fR\ <\fInumber\ of\ threads\fR] >>> + [\fB\-rebuildDB\fR] <<\ [\fB\-groupdepth\fR\ <\fI#\ of\ nested\ groups\fR] >>> + <<\ [\fB\-default_access\fR\ <\fIuser\ access\ mask\fR <\fIgroup access mask\fR>] >>> + [\fB\-restricted\fR] [\fB\-enable_peer_stats\fR] + [\fB\-enable_process_stats\fR] [\fB\-allow-dotted-principal\fR] + [\fB\-rxbind\fR] <<\ [\fB\-auditlog\fR\ <\fIfile\ path\fR] >>> + <<\ [\fB\-syslog\fR[=<\fIFACILITY\fR]] >>> <<\ [\fB\-rxmaxmtu\fR\ <\fIbytes\fR] >>> + [\fB\-help\fR] .SH "DESCRIPTION" The \fBptserver\fR command initializes the Protection Server, which must run on every database server machine. In the conventional configuration, its @@ -216,22 +221,43 @@ to the corresponding name. Generates a current protection subgroup (\s-1CPS\s0) at the File Server's request. The \s-1CPS\s0 lists all groups to which a user or machine belongs. .PP +When using Kerberos 5, cross-realm authentication is possible. If the +special pts group system:authuser@\s-1FOREIGN\s0.\s-1REALM\s0 exists and its group quota +is greater than zero, \fBaklog\fR will automatically create an entry for the +foreign user in the local \s-1PTS\s0 database and add the foreign user to the +system:authuser@\s-1FOREIGN\s0.\s-1REALM\s0 \s-1PTS\s0 group. Each time a foreign user is +created in the local \s-1PTS\s0 database, the group quota for the +system:authuser@\s-1FOREIGN\s0.\s-1REALM\s0 \s-1PTS\s0 group is decremented by one. +.PP This command does not use the syntax conventions of the \s-1AFS\s0 command suites. Provide the command name and all option names in full. .SH "OPTIONS" -.Ip "\fB\-database\fR <\fIdb path\fR>" 4 +.Ip "\fB\-database\fR <\fIdb path\fR>, \fB\-db\fR <\fIdb path\fR>" 4 Specifies the pathname of an alternate directory in which the Protection Database files reside. Provide the complete pathname, ending in the base filename to which the \f(CW.DB0\fR and \f(CW.DBSYS1\fR extensions are appended. For example, the appropriate value for the default database files is \fI/usr/afs/db/prdb\fR. -.Ip "\fB\-p\fR <\fInumber of processes\fR>" 4 -Sets the number of server lightweight processes (LWPs) to run. Provide a -positive integer from the range \f(CW3\fR to \f(CW16\fR. The default value is \f(CW3\fR. +.Ip "\fB\-p\fR <\fInumber of threads\fR>" 4 +Sets the number of server lightweight processes (LWPs or pthreads) to run. +Provide a positive integer from the range \f(CW3\fR to \f(CW16\fR. The default +value is \f(CW3\fR. .Ip "\fB\-rebuildDB\fR" 4 Rebuilds the Protection Database at the beginning of Protection Server initialization. Use this argument only in consultation with \s-1AFS\s0 Development or Product Support. +.Ip "\fB\-groupdepth\fR <\fI# of nested groups\fR>, \fB\-depth\fR <\fI# of nested groups\fR>" 4 +Specifies the group depth for nested groups when \fBptserver\fR is compiled +with the \s-1SUPERGROUPS\s0 option enabled. The default depth for nested groups +is 5. This option may be shortened to \fB\-depth\fR. +.Ip "\fB\-default_access\fR <\fIuser access\fR> <\fIgroup access\fR>" 4 +Specifies the default user and group privacy flags to apply to each +entry. Provide a string of five characters, one for each of the +permissions. See the \fIpts_examine(1)\fR manpage or the \fIpts_setfields(1)\fR manpage for more +information on the flags. +.Ip "\fB\-restricted\fR" 4 +Run the \s-1PT\s0 Server in restricted mode. While in restricted mode, only +members of the system:administrators \s-1PTS\s0 group may make any \s-1PTS\s0 changes. .Ip "\fB\-enable_peer_stats\fR" 4 Activates the collection of Rx statistics and allocates memory for their storage. For each connection with a specific \s-1UDP\s0 port on another machine, @@ -246,11 +272,23 @@ other machines. To display or otherwise access the records, use the Rx Monitoring \s-1API\s0. .Ip "\fB\-allow-dotted-principal\fR" 4 By default, the \s-1RXKAD\s0 security layer will disallow access by Kerberos -principals with a dot in the first component of their name. This is to avoid -the confusion where principals user/admin and user.admin are both mapped to the -user.admin \s-1PTS\s0 entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server -with this option. +principals with a dot in the first component of their name. This is to +avoid the confusion where principals user/admin and user.admin are both +mapped to the user.admin \s-1PTS\s0 entry. Sites whose Kerberos realms don't have +these collisions between principal names may disable this check by +starting the server with this option. +.Ip "\fB\-rxbind\fR" 4 +Bind the Rx socket to the primary interface only. (If not specified, the +Rx socket will listen on all interfaces.) +.Ip "\fB\-syslog\fR[=<\fIsyslog facility\fR>]" 4 +Specifies that logging output should go to syslog instead of the normal +log file. \fB\-syslog\fR=\fI\s-1FACILITY\s0\fR can be used to specify to which facility +the log message should be sent. Logging message sent to syslog are tagged +with the string \*(L"ptserver\*(R". +.Ip "\fB\-auditlog\fR <\fIfile path\fR>" 4 +Specifies the full pathname for the \fBAuditLog\fR file. +.Ip "\fB\-rxmaxmtu\fR <\fIbytes\fR>" 4 +Sets the maximum transmission unit for the \s-1RX\s0 protocol. .Ip "\fB\-help\fR" 4 Prints the online help for this command. All other valid options are ignored. @@ -299,18 +337,32 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Header "OPTIONS" -.IX Item "\fB\-database\fR <\fIdb path\fR>" +.IX Item "\fB\-database\fR <\fIdb path\fR>, \fB\-db\fR <\fIdb path\fR>" -.IX Item "\fB\-p\fR <\fInumber of processes\fR>" +.IX Item "\fB\-p\fR <\fInumber of threads\fR>" .IX Item "\fB\-rebuildDB\fR" +.IX Item "\fB\-groupdepth\fR <\fI# of nested groups\fR>, \fB\-depth\fR <\fI# of nested groups\fR>" + +.IX Item "\fB\-default_access\fR <\fIuser access\fR> <\fIgroup access\fR>" + +.IX Item "\fB\-restricted\fR" + .IX Item "\fB\-enable_peer_stats\fR" .IX Item "\fB\-enable_process_stats\fR" .IX Item "\fB\-allow-dotted-principal\fR" +.IX Item "\fB\-rxbind\fR" + +.IX Item "\fB\-syslog\fR[=<\fIsyslog facility\fR>]" + +.IX Item "\fB\-auditlog\fR <\fIfile path\fR>" + +.IX Item "\fB\-rxmaxmtu\fR <\fIbytes\fR>" + .IX Item "\fB\-help\fR" .IX Header "EXAMPLES" diff --git a/doc/man-pages/man8/salvageserver.8 b/doc/man-pages/man8/salvageserver.8 new file mode 100644 index 000000000..e926a8796 --- /dev/null +++ b/doc/man-pages/man8/salvageserver.8 @@ -0,0 +1,498 @@ +.rn '' }` +''' $RCSfile$$Revision$$Date$ +''' +''' $Log$ +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH salvageserver 8 "OpenAFS" "14/Mar/2008" "AFS Command Reference" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +salvageserver \- Initializes the Salvageserver component of the dafs process +.SH "SYNOPSIS" +\fBsalvageserver\fR [\fIinitcmd\fR] <<\ [\fB\-partition\fR\ <\fIname\ of\ partition\ to\ salvage\fR] >>> + <<\ [\fB\-volumeid\fR\ <\fIvolume\ id\ to\ salvage\fR] >>> [\fB\-debug\fR] [\fB\-nowrite\fR] + [\fB\-inodes\fR] [\fB\-force\fR] [\fB\-oktozap\fR] [\fB\-rootinodes\fR] + [\fB\-salvagedirs\fR] [\fB\-blockreads\fR] + <<\ [\fB\-parallel\fR\ <\fI#\ of\ max\ parallel\ partition\ salvaging\fR] >>> + <<\ [\fB\-tmpdir\fR\ <\fIname\ of\ dir\ to\ place\ tmp\ files\fR] >>> + [\fB\-showlog\fR] [\fB\-showsuid\fR] [\fB\-showmounts\fR] + <<\ [\fB\-orphans\fR\ (ignore\ |\ remove\ |\ attach)]\ >> + [\fB\-client\fR] [\fB\-help\fR] +.SH "DESCRIPTION" +In its typical mode of operation, the \fBsalvageserver\fR is a daemon process +responsible for salvaging volumes. It is a component of the \f(CWdafs\fR +process type. In the conventional configuration, its binary file is +located in the \fI/usr/afs/bin\fR directory on a file server machine. +.PP +The Salvageserver daemon is responsible for scheduling and executing +volume salvage operations on behalf of client processes. The fileserver +acts as the primary salvageserver client: any failed volume attach +operation results in a salvageserver scheduling request. The +salvageserver also accepts periodic volume activity messages in order to +update its salvage request priority queue. Other clients of the +salvageserver daemon include the \fBsalvsync-debug\fR utility, and the +salvageserver command itself by passing the \fB\-client\fR flag. +.PP +The salvage operations performed on vice partition data are nearly +identical to those performed by the standalone Salvager command. The +key differences between the two commands are: +.Ip "\(bu" 4 +The Salvageserver is a daemon process which runs concurrently with the +fileserver. In contrast, the Salvager is a stand-alone application which +is invoked when the fileserver and volserver are not running. +.Ip "\(bu" 4 +The Salvageserver is incapable of performing whole partition salvage +operations; it operates at volume group granularity. +.PP +The Salvageserver normally creates new inodes as it repairs damage. If the +partition is so full that there is no room for new inodes, use the +\fB\-nowrite\fR argument to bringing undamaged volumes online without +attempting to salvage damaged volumes. Then use the \fBvos move\fR command to +move one or more of the undamaged volumes to other partitions, freeing up +the space that the Salvageserver needs to create new inodes. +.PP +By default, multiple Salvageserver subprocesses run in parallel: one for each +volume group. By default, four concurrent salvage operations are +permitted. You may alter this default by providing a positive integer +value for the \fB\-parallel\fR argument. The maximum permitted value is 32 +concurrent salvageserver subprocesses. +.PP +By default, the salvageserver enables a heuristic which attempts to stop +disk head thrashing by concurrent salvageserver subprocesses. Unfortunately, +this heuristic significantly degrades performance in many cases. In at least +the following environments, passing the \f(CWall\fR string to the \fB\-parallel\fR +argument is strongly encouraged: +.Ip "\(bu" 4 +On \s-1NAMEI\s0 fileservers +.Ip "\(bu" 4 +When a vice partition is backed by multiple disks (e.g. \s-1RAID\s0) +.Ip "\(bu" 4 +When a vice partition is backed by \s-1SAN\s0\-attached storage, \s-1LVM\s0, or some other +form of storage virtualization which would cause unix device id numbers to +be unpredictable. +.PP +The Salvageserver creates temporary files as it runs, by default writing them +to the partition it is salvaging. The number of files can be quite large, +and if the partition is too full to accommodate them, the Salvageserver +terminates without completing the salvage operation (it always removes the +temporary files before exiting). Other Salvageserver subprocesses running at +the same time continue until they finish salvaging all other partitions +where there is enough disk space for temporary files. To complete the +interrupted salvage, reissue the command against the appropriate +partitions, adding the \fB\-tmpdir\fR argument to redirect the temporary files +to a local disk directory that has enough space. +.PP +The \fB\-orphans\fR argument controls how the Salvageserver handles orphaned files +and directories that it finds on server partitions it is salvaging. An +\fIorphaned\fR element is completely inaccessible because it is not +referenced by the vnode of any directory that can act as its parent (is +higher in the filespace). Orphaned objects occupy space on the server +partition, but do not count against the volume's quota. +.PP +To generate a list of all mount points that reside in one or more volumes, +rather than actually salvaging them, include the \fB\-showmounts\fR flag. +.PP +This command does not use the syntax conventions of the \s-1AFS\s0 command +suites. Provide the command name and all option names in full. +.SH "OPTIONS" +.Ip "[\fIinitcmd\fR]" 4 +Accommodates the command's use of the \s-1AFS\s0 command parser, and is optional. +.Ip "\fB\-partition\fR <\fIname of partition to salvage\fR>" 4 +Specifies the name of the partition to salvage. Specify the full partition +name using the form \fI/vicep\fIx\fR\fR or \fI/vicep\fIxx\fR\fR. Omit this argument to +salvage every partition on the file server machine. +.Ip "\fB\-volumeid\fR <\fIvolume id to salvage\fR>" 4 +Specifies the volume \s-1ID\s0 of a specific read/write volume to salvage. The +\fB\-partition\fR argument must be provided along with this one and specify +the volume's actual site. +.Ip "\fB\-debug\fR" 4 +This flag should be considered deprecated. Its primary purpose was to disable +forking and parallelization of the Salvager so that log messages were not +interleaved. Due to the manner in which \fI/usr/afs/logs/SalSrvLog\fR is +written, log messages from subprocesses are never interleaved; the entire log +for a volume group salvage is appended to the master log as one atomic +transaction. +.Ip "\fB\-nowrite\fR" 4 +Brings all undamaged volumes online without attempting to salvage any +damaged volumes. +.Ip "\fB\-inodes\fR" 4 +Records in the \fI/usr/afs/logs/SalSrvLog\fR file a list of all \s-1AFS\s0 inodes +that the Salvageserver modified. +.Ip "\fB\-force\fR" 4 +Inspects all volumes for corruption, not just those that are marked as +having been active when a crash occurred. +.Ip "\fB\-oktozap\fR" 4 +Removes a volume that is so damaged that even issuing the \fBvos zap\fR +command with the \fB\-force\fR flag is ineffective. Use this argument only in +consultation with \s-1AFS\s0 Development or Product Support. Combine it with the +\fB\-partition\fR and \fB\-volumeid\fR arguments to identify the volume to remove. +.Ip "\fB\-rootinodes\fR" 4 +Records in the \fI/usr/afs/logs/SalSrvLog\fR file a list of all \s-1AFS\s0 inodes +owned by the local superuser \f(CWroot\fR. +.Ip "\fB\-salvagedirs\fR" 4 +Salvages entire directory structures, even if they do not appear to be +damaged. By default, the Salvageserver salvages a directory only if it is +flagged as corrupted. +.Ip "\fB\-blockreads\fR" 4 +Forces the Salvageserver to read a partition one disk block (512 bytes) at a +time and to skip any blocks that are too badly damaged to be salvaged. +This allows it to salvage as many volumes as possible. By default, the +Salvageserver reads large disk blocks, which can cause it to exit prematurely +if it encounters disk errors. Use this flag if the partition to be +salvaged has disk errors. +.Ip "\fB\-parallel\fR <\fI# of max parallel partition salvaging\fR>" 4 +Specifies the maximum number of Salvageserver subprocesses to run in parallel. +Provide one of three values: +.Ip "\(bu" 8 +An integer from the range \f(CW1\fR to \f(CW32\fR. A value of \f(CW1\fR means that a +single Salvageserver subprocess salvages the volume groups sequentially. +The disk partition heuristic (see above) based upon unix device ids is +enabled. +.Ip "\(bu" 8 +The disk partition heuristic (see above) based upon unix device ids is +disabled. +.Ip "\(bu" 8 +The string \f(CWall\fR followed immediately (with no intervening space) by an +integer from the range \f(CW1\fR to \f(CW32\fR, to run the specified number of +Salvageserver subprocesses in parallel on volume groups. The disk partition +heuristic (see above) based upon unix device ids is disabled. +.Sp +If this argument is omitted, up to four Salvageserver subprocesses run +in parallel. +.Ip "\fB\-tmpdir\fR <\fIname of dir to place tmp files\fR>" 4 +Names a local disk directory in which the Salvageserver places the temporary +files it creates during a salvage operation, instead of writing them to +the partition being salvaged (the default). If the Salvageserver cannot write +to the specified directory, it attempts to write to the partition being +salvaged. +.Ip "\fB\-showlog\fR" 4 +Displays on the standard output stream all log data that is being written +to the \fI/usr/afs/logs/SalSrvLog\fR file. +.Ip "\fB\-showsuid\fR" 4 +Displays a list of the pathnames for all files that have the setuid or +setgid mode bit set. +.Ip "\fB\-showmounts\fR" 4 +Records in the \fI/usr/afs/logs/SalSrvLog\fR file all mount points found in +each volume. The Salvageserver does not repair corruption in the volumes, if +any exists. +.Ip "\fB\-orphans\fR (ignore | remove | attach)" 4 +Controls how the Salvageserver handles orphaned files and directories. Choose +one of the following three values: +.Ip "ignore" 8 +Leaves the orphaned objects on the disk, but prints a message to the +\fI/usr/afs/logs/SalSrvLog\fR file reporting how many orphans were found and +the approximate number of kilobytes they are consuming. This is the +default if the \fB\-orphans\fR argument is omitted. +.Ip "remove" 8 +Removes the orphaned objects, and prints a message to the +\fI/usr/afs/logs/SalSrvLog\fR file reporting how many orphans were removed +and the approximate number of kilobytes they were consuming. +.Ip "attach" 8 +Attaches the orphaned objects by creating a reference to them in the vnode +of the volume's root directory. Since each object's actual name is now +lost, the Salvageserver assigns each one a name of the following form: +.Ip "\f(CW__ORPHANFILE__.\fIindex\fR\fR for files." 12 +.Ip "\f(CW__ORPHANDIR__.\fIindex\fR\fR for directories." 12 +.Sp +where \fIindex\fR is a two-digit number that uniquely identifies each +object. The orphans are charged against the volume's quota and appear in +the output of the \fBls\fR command issued against the volume's root +directory. +.Ip "\fB\-client\fR" 4 +Salvageserver runs in client Mode. The requested volume on the requested +partition will be scheduled for salvaging by the Salvageserver daemon. +.Ip "\fB\-help\fR" 4 +Prints the online help for this command. All other valid options are +ignored. +.SH "EXAMPLES" +The following command instructs the Salvageserver to schedule the salvage +of the volume with volume ID 258347486 on \fI/vicepg\fR on the local machine. +.PP +.Vb 1 +\& % /usr/afs/bin/salvageserver -partition /vicepg -volumeid 258347486 -client +.Ve +.SH "PRIVILEGE REQUIRED" +To issue the command at the shell prompt, the issuer must be logged in as +the local superuser \f(CWroot\fR. +.SH "SEE ALSO" +the \fIBosConfig(5)\fR manpage, +the \fISalvageLog(5)\fR manpage, +the \fISalvager(8)\fR manpage, +the \fIbos_create(8)\fR manpage, +the \fIbos_getlog(8)\fR manpage, +the \fIbos_salvage(8)\fR manpage, +the \fIvos_move(1)\fR manpage +.SH "COPYRIGHT" +IBM Corporation 2000. All Rights Reserved. +Sine Nomine Associates 2008. All Rights Reserved. +.PP +This documentation is covered by the IBM Public License Version 1.0. It was +converted from HTML to POD by software written by Chas Williams and Russ +Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. This document +was adapted from the Salvager POD documentation. + +.rn }` '' +.IX Title "salvageserver 8" +.IX Name "salvageserver - Initializes the Salvageserver component of the dafs process" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Header "OPTIONS" + +.IX Item "[\fIinitcmd\fR]" + +.IX Item "\fB\-partition\fR <\fIname of partition to salvage\fR>" + +.IX Item "\fB\-volumeid\fR <\fIvolume id to salvage\fR>" + +.IX Item "\fB\-debug\fR" + +.IX Item "\fB\-nowrite\fR" + +.IX Item "\fB\-inodes\fR" + +.IX Item "\fB\-force\fR" + +.IX Item "\fB\-oktozap\fR" + +.IX Item "\fB\-rootinodes\fR" + +.IX Item "\fB\-salvagedirs\fR" + +.IX Item "\fB\-blockreads\fR" + +.IX Item "\fB\-parallel\fR <\fI# of max parallel partition salvaging\fR>" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\(bu" + +.IX Item "\fB\-tmpdir\fR <\fIname of dir to place tmp files\fR>" + +.IX Item "\fB\-showlog\fR" + +.IX Item "\fB\-showsuid\fR" + +.IX Item "\fB\-showmounts\fR" + +.IX Item "\fB\-orphans\fR (ignore | remove | attach)" + +.IX Item "ignore" + +.IX Item "remove" + +.IX Item "attach" + +.IX Item "\f(CW__ORPHANFILE__.\fIindex\fR\fR for files." + +.IX Item "\f(CW__ORPHANDIR__.\fIindex\fR\fR for directories." + +.IX Item "\fB\-client\fR" + +.IX Item "\fB\-help\fR" + +.IX Header "EXAMPLES" + +.IX Header "PRIVILEGE REQUIRED" + +.IX Header "SEE ALSO" + +.IX Header "COPYRIGHT" + diff --git a/doc/man-pages/man8/vldb_convert.8 b/doc/man-pages/man8/vldb_convert.8 new file mode 100644 index 000000000..1745ece36 --- /dev/null +++ b/doc/man-pages/man8/vldb_convert.8 @@ -0,0 +1,319 @@ +.rn '' }` +''' $RCSfile$$Revision$$Date$ +''' +''' $Log$ +''' +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp +.if t .sp .5v +.if n .sp +.. +.de Ip +.br +.ie \\n(.$>=3 .ne \\$3 +.el .ne 3 +.IP "\\$1" \\$2 +.. +.de Vb +.ft CW +.nf +.ne \\$1 +.. +.de Ve +.ft R + +.fi +.. +''' +''' +''' Set up \*(-- to give an unbreakable dash; +''' string Tr holds user defined translation string. +''' Bell System Logo is used as a dummy character. +''' +.tr \(*W-|\(bv\*(Tr +.ie n \{\ +.ds -- \(*W- +.ds PI pi +.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +.ds L" "" +.ds R" "" +''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of +''' \*(L" and \*(R", except that they are used on ".xx" lines, +''' such as .IP and .SH, which do another additional levels of +''' double-quote interpretation +.ds M" """ +.ds S" """ +.ds N" """"" +.ds T" """"" +.ds L' ' +.ds R' ' +.ds M' ' +.ds S' ' +.ds N' ' +.ds T' ' +'br\} +.el\{\ +.ds -- \(em\| +.tr \*(Tr +.ds L" `` +.ds R" '' +.ds M" `` +.ds S" '' +.ds N" `` +.ds T" '' +.ds L' ` +.ds R' ' +.ds M' ` +.ds S' ' +.ds N' ` +.ds T' ' +.ds PI \(*p +'br\} +.\" If the F register is turned on, we'll generate +.\" index entries out stderr for the following things: +.\" TH Title +.\" SH Header +.\" Sh Subsection +.\" Ip Item +.\" X<> Xref (embedded +.\" Of course, you have to process the output yourself +.\" in some meaninful fashion. +.if \nF \{ +.de IX +.tm Index:\\$1\t\\n%\t"\\$2" +.. +.nr % 0 +.rr F +.\} +.TH vldb_convert 8 "OpenAFS" "27/Jun/2008" "AFS Command Reference" +.UC +.if n .hy 0 +.if n .na +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.de CQ \" put $1 in typewriter font +.ft CW +'if n "\c +'if t \\&\\$1\c +'if n \\&\\$1\c +'if n \&" +\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7 +'.ft R +.. +.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2 +. \" AM - accent mark definitions +.bd B 3 +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds ? ? +. ds ! ! +. ds / +. ds q +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10' +. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#] +.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u' +.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u' +.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#] +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +.ds oe o\h'-(\w'o'u*4/10)'e +.ds Oe O\h'-(\w'O'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds v \h'-1'\o'\(aa\(ga' +. ds _ \h'-1'^ +. ds . \h'-1'. +. ds 3 3 +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +. ds oe oe +. ds Oe OE +.\} +.rm #[ #] #H #V #F C +.SH "NAME" +vldb_convert \- Convert the VLDB to/from Transarc AFS versions 3.1-3.4a +.SH "SYNOPSIS" +\fBvldb_convert\fR [\fBinitcmd\fR] <<\ [\fB\-to\fR]\ <\fIAFS\ version\ goal\fR >>> + <<\ [\fB\-from\fR]\ <\fIcurrent\ AFS\ version\fR >>> + <<\ [\fB\-path\fR]\ <\fIpath\ to\ VLDB\ file\fR >>> [\fB\-showversion\fR] + [\fB\-dumpvldb\fR] [\fB\-help\fR] +.SH "DESCRIPTION" +The \fBvldb_convert\fR command is used to convert legacy Transarc 3.1-3.4 +VLDB database files between versions. This command is not needed when +using OpenAFS except in the case of preparing to migrate a pre-3.4 version +of Transarc AFS to OpenAFS. +.PP +In order to convert the VLDB file, do the following: +.Ip "1." 4 +Shutdown the \fBvlserver\fR process on all server machines. \fBvlserver\fR is +typically run only on the Cell servers, which must be listed in +\fICellServDB\fR or \s-1DNS\s0. +.Ip "2." 4 +Backup the \s-1VLDB\s0 file \fI/usr/afs/db/vldb.\s-1DB0\s0\fR on the sync site to a safe +place. Typically, the sync site if the machine with the lowest \s-1IP\s0 address. +.Ip "3." 4 +Remove the \fI/usr/afs/db/vldb.\s-1DBSYS1\s0\fR file from all cell server machines. +.Ip "4." 4 +Remove the \fI/usr/afs/db/vldb.\s-1DB0\s0\fR file from the non-sync site server +machines. +.Ip "5." 4 +Run the \fBvldb_convert\fR command on the \s-1VLDB\s0 file using the following +command: +.Sp +.Vb 1 +\& # vldb_convert -path /usr/afs/db/vldb.DB0 +.Ve +.Ip "6." 4 +Copy the new version of the vlserver binaries to all Cell servers. +.Ip "7." 4 +Restart the vlserver process on all Cell servers. The new \s-1VLDB\s0 will be +distributed to all of the Cell servers. +.Ip "8." 4 +Confirm that all Cell servers are synchronized and that the vldb looks in +good shape. +.SH "CAUTIONS" +Backup the VLDB file to a different directory or machine before performing +the upgrade. Be sure that all vlserver processes are always running the +same version. This requires downtime, but for this conversion, all +vlserver instances must be at the same version. This restriction is +relaxed in OpenAFS. +.SH "OPTIONS" +.Ip "[\fBinitcmd\fR]" 4 +This is an optional string that does nothing. +.Ip "[\fB\-to\fR] <\fI\s-1AFS\s0 version goal\fR>" 4 +This option is required when downgrading or when upgrading to a version +less than 3.4. Specify 1, 2, 3, or 4 to choose version 3.1, 3.2, 3.3, or +3,4 respectively. This defaults to version 3.4. +.Ip "[\fB\-from\fR] <\fIcurrent \s-1AFS\s0 version\fR>" 4 +This option is required when downgrading. Specify 1, 2, 3, or 4 to choose +version 3.1, 3.2, 3.3, or 3.4 respectively. +.Ip "[\fB\-path\fR] <\fIpath to \s-1VLDB\s0 file\fR>" 4 +Specifies the path the \s-1VLDB\s0 file. This defaults to \fI/usr/afs/db/vldb.\s-1DB0\s0\fR +and only needs to be used if the \s-1VLDB\s0 file is not in the default path.. +.Ip "\fB\-showversion\fR" 4 +Shows the current version of the \s-1VLDB\s0. This option can only be used by itself. +.Ip "\fB\-dumpvldb\fR" 4 +Produces verbose debugging output during the conversion process. +.Ip "\fB\-help\fR" 4 +Prints the online help for this command. All other valid options are +ignored. +.SH "PRIVILEGE REQUIRED" +The issuer must have read and write access to the file +\fI/usr/afs/db/vldb.DB0\fR. This usually means that root access is required +on the cell server machines. +.SH "SEE ALSO" +the \fIvlserver(8)\fR manpage +.SH "COPYRIGHT" +Copyright 2008 Jason Edgecombe +.PP +This documentation is covered by the BSD License as written in the +doc/LICENSE file. This man page was written by Jason Edgecombe for +OpenAFS. + +.rn }` '' +.IX Title "vldb_convert 8" +.IX Name "vldb_convert - Convert the VLDB to/from Transarc AFS versions 3.1-3.4a" + +.IX Header "NAME" + +.IX Header "SYNOPSIS" + +.IX Header "DESCRIPTION" + +.IX Item "1." + +.IX Item "2." + +.IX Item "3." + +.IX Item "4." + +.IX Item "5." + +.IX Item "6." + +.IX Item "7." + +.IX Item "8." + +.IX Header "CAUTIONS" + +.IX Header "OPTIONS" + +.IX Item "[\fBinitcmd\fR]" + +.IX Item "[\fB\-to\fR] <\fI\s-1AFS\s0 version goal\fR>" + +.IX Item "[\fB\-from\fR] <\fIcurrent \s-1AFS\s0 version\fR>" + +.IX Item "[\fB\-path\fR] <\fIpath to \s-1VLDB\s0 file\fR>" + +.IX Item "\fB\-showversion\fR" + +.IX Item "\fB\-dumpvldb\fR" + +.IX Item "\fB\-help\fR" + +.IX Header "PRIVILEGE REQUIRED" + +.IX Header "SEE ALSO" + +.IX Header "COPYRIGHT" + diff --git a/doc/man-pages/man8/vlserver.8 b/doc/man-pages/man8/vlserver.8 index 7d8ef7a90..ad418d888 100644 --- a/doc/man-pages/man8/vlserver.8 +++ b/doc/man-pages/man8/vlserver.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH vlserver 8 "OpenAFS" "4/Feb/2008" "AFS Command Reference" +.TH vlserver 8 "OpenAFS" "2/Apr/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -190,7 +190,7 @@ .SH "NAME" vlserver \- Initializes the Volume Location Server .SH "SYNOPSIS" -\fBvlserver\fR <<\ [\fB\-p\fR\ <\fIlwp\ processes\fR] >>> [\fB\-nojumbo\fR] +\fBvlserver\fR <<\ [\fB\-p\fR\ <\fInumber\ of\ threads\fR] >>> [\fB\-nojumbo\fR] [\fB\-rxbind\fR] [\fB\-allow-dotted-principal\fR] [\fB\-enable_peer_stats\fR] [\fB\-enable_process_stats\fR] [\fB\-help\fR] .SH "DESCRIPTION" @@ -229,9 +229,9 @@ change the number, use the \fB\-p\fR argument. This command does not use the syntax conventions of the AFS command suites. Provide the command name and all option names in full. .SH "OPTIONS" -.Ip "\fB\-p\fR <\fIlwp processes\fR>" 4 -Sets the number of server lightweight processes (LWPs) to run. Provide an -integer between \f(CW4\fR and \f(CW16\fR. The default is \f(CW9\fR. +.Ip "\fB\-p\fR <\fInumber of threads\fR>" 4 +Sets the number of server lightweight processes (LWPs or pthreads) to run. +Provide an integer between \f(CW3\fR and \f(CW16\fR. The default is \f(CW9\fR. .Ip "\fB\-nojumbo\fR" 4 Prohibits the server from sending or receiving jumbograms. A jumbogram is a large-size packet composed of 2 to 4 normal Rx data packets that share @@ -255,8 +255,11 @@ By default, the \s-1RXKAD\s0 security layer will disallow access by Kerberos principals with a dot in the first component of their name. This is to avoid the confusion where principals user/admin and user.admin are both mapped to the user.admin \s-1PTS\s0 entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server +between principal names may disable this check by starting the server with this option. +.Ip "\fB\-rxbind\fR" 4 +Bind the Rx socket to the primary interface only. (If not specified, the +Rx socket will listen on all interfaces.) .Ip "\fB\-help\fR" 4 Prints the online help for this command. All other valid options are ignored. @@ -299,7 +302,7 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Header "OPTIONS" -.IX Item "\fB\-p\fR <\fIlwp processes\fR>" +.IX Item "\fB\-p\fR <\fInumber of threads\fR>" .IX Item "\fB\-nojumbo\fR" @@ -309,6 +312,8 @@ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. .IX Item "\fB\-allow-dotted-principal\fR" +.IX Item "\fB\-rxbind\fR" + .IX Item "\fB\-help\fR" .IX Header "EXAMPLES" diff --git a/doc/man-pages/man8/volserver.8 b/doc/man-pages/man8/volserver.8 index ed387ff15..487423341 100644 --- a/doc/man-pages/man8/volserver.8 +++ b/doc/man-pages/man8/volserver.8 @@ -93,7 +93,7 @@ .nr % 0 .rr F .\} -.TH volserver 8 "OpenAFS" "4/Feb/2008" "AFS Command Reference" +.TH volserver 8 "OpenAFS" "22/Jan/2008" "AFS Command Reference" .UC .if n .hy 0 .if n .na @@ -247,7 +247,7 @@ By default, the \s-1RXKAD\s0 security layer will disallow access by Kerberos principals with a dot in the first component of their name. This is to avoid the confusion where principals user/admin and user.admin are both mapped to the user.admin \s-1PTS\s0 entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server +between principal names may disable this check by starting the server with this option. .Ip "\fB\-help\fR" 4 Prints the online help for this command. All other valid options are diff --git a/doc/man-pages/pod1/afs.pod b/doc/man-pages/pod1/afs.pod index 87166bc81..764366fa1 100644 --- a/doc/man-pages/pod1/afs.pod +++ b/doc/man-pages/pod1/afs.pod @@ -31,7 +31,7 @@ Interface for tracing Cache Manager operations when debugging problems. =item kas Interface to the Authentication Server for administering security and -authentication information. +authentication information. This aspect of OpenAFS has been deprecated. =item pts @@ -391,7 +391,7 @@ Partitions that house AFS volumes must have names of the form F> or F>, where the variable final portion is one or two lowercase letters. By convention, the first server partition created on a file server machine is called F, the second -F, and so on. The I explains how to +F, and so on. The I explains how to configure and name a file server machine's partitions in preparation for storing AFS volumes on them. @@ -410,6 +410,9 @@ and so on through /vicepiv = vicepiv = iv = 255 +F is the last permissible AFS partition name. In practice it +will not work well; stopping with F is highly recommended. + =head4 Abbreviating Cell Names A cell's full name usually matches its Internet domain name (such as diff --git a/doc/man-pages/pod1/aklog.pod b/doc/man-pages/pod1/aklog.pod index 5351dd878..370939746 100644 --- a/doc/man-pages/pod1/aklog.pod +++ b/doc/man-pages/pod1/aklog.pod @@ -20,19 +20,29 @@ B [B<-d>] [B<-hosts>] [B<-zsubs>] [B<-noprdb>] [B<-noauth>] [B<-linked>] =head1 DESCRIPTION The B program authenticates to a cell in AFS by obtaining AFS -tokens. If B is invoked with no command-line arguments, it will -obtain tokens for the workstation's local cell. It may be invoked with an -arbitrary number of cells and pathnames to obtain tokens for multiple -cells. B knows how to expand cell name abbreviations, so cells can -be referred to by enough letters to make the cell name unique among the -cells the workstation knows about. +tokens using a Kerberos 5 ticket. If B is invoked with no +command-line arguments, it will obtain tokens for the workstation's local +cell. It may be invoked with an arbitrary number of cells and pathnames +to obtain tokens for multiple cells. B knows how to expand cell +name abbreviations, so cells can be referred to by enough letters to make +the cell name unique among the cells the workstation knows about. B obtains tokens by obtaining a Kerberos service ticket for the AFS service and then storing it as a token. By default, it obtains that -ticket from the realm corresponding to that cell (the upcase version of +ticket from the realm corresponding to that cell (the uppercase version of the cell name), but a different realm for a particular cell can be specified with B<-k>. B<-k> cannot be used in B<-path> mode (see below). +When a Kerberos 5 cross-realm trust is used, B looks up the AFS ID +corresponding to the name (Kerberos principal) of the person invoking the +command, and if the user doesn't exist and the +system:authuser@FOREIGN.REALM PTS group exists, then it attempts automatic +registration of the user with the foreign cell. The user is then added to +the system:authuser@FOREIGN.REALM PTS group if registration is successful. +Automatic registration in the foreign cell will fail if the group quota +for the system:authuser@FOREIGN.REALM group is less than one. Each +automatic registration decrements the group quota by one. + When using B, be aware that AFS uses the Kerberos v4 principal naming format, not the Kerberos v5 format, when referring to principals in PTS ACLs, F, and similar locations. AFS will internally map @@ -75,11 +85,11 @@ identical. If this flag is given, it will skip that check. =item B<-hosts> -Prints all the server addresses which may act as a single point of -failure in accessing the specified directory path. Each element of the -path is examined, and as new volumes are traversed, if they are not -replicated, the server's IP address containing the volume will be -displayed. The output is of the form: +Prints all the server addresses which may act as a single point of failure +in accessing the specified directory path. Each element of the path is +examined, and as new volumes are traversed, if they are not replicated, +the server's IP address containing the volume will be displayed. The +output is of the form: host: @@ -106,11 +116,13 @@ setting tokens. =item B<-noprdb> Ordinarily, B looks up the AFS ID corresponding to the name of the -person invoking the command, and if the user doesn't exist and the cell is -a foreign one, attempts automatic registration of the user with the remote -cell. Specifying this flag turns off this functionality. This may be -desirable if the protection database is unavailable for some reason and -tokens are desired anyway, or if one wants to disable user registration. +person invoking the command, and if the user doesn't exist, the cell is a +foreign one, the system:authuser@FOREIGN.REALM PTS group exists, and has a +positive group quota, then it attempts automatic registration of the user +with the foreign cell. Specifying this flag turns off this functionality. +This may be desirable if the protection database is unavailable for some +reason and tokens are desired anyway, or if one wants to disable user +registration. =item B<-path> >, B<-p> > diff --git a/doc/man-pages/pod1/fs_diskfree.pod b/doc/man-pages/pod1/fs_diskfree.pod index bb8fbdecd..f188b04eb 100644 --- a/doc/man-pages/pod1/fs_diskfree.pod +++ b/doc/man-pages/pod1/fs_diskfree.pod @@ -106,10 +106,10 @@ volumes C and C: =head1 PRIVILEGE REQUIRED -The issuer must have the C (lookup) permission on the ACL of the root +The issuer must have the C (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -B<-path> argument, and on the ACL of each directory that precedes it in -the pathname. +B<-path> argument, and C (list) permission on the ACL of each +directory that precedes it in the pathname. =head1 SEE ALSO diff --git a/doc/man-pages/pod1/fs_examine.pod b/doc/man-pages/pod1/fs_examine.pod index 26219a47d..7eaf77970 100644 --- a/doc/man-pages/pod1/fs_examine.pod +++ b/doc/man-pages/pod1/fs_examine.pod @@ -108,10 +108,10 @@ the partition housing it: =head1 PRIVILEGE REQUIRED -The issuer must have the C (lookup) permission on the ACL of the root +The issuer must have the C (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -B<-path> argument, and on the ACL of each directory that precedes it in -the pathname. +B<-path> argument, and C (list) permission on the ACL of each +directory that precedes it in the pathname. =head1 SEE ALSO diff --git a/doc/man-pages/pod1/fs_listquota.pod b/doc/man-pages/pod1/fs_listquota.pod index 117ad5f6c..84cc61492 100644 --- a/doc/man-pages/pod1/fs_listquota.pod +++ b/doc/man-pages/pod1/fs_listquota.pod @@ -30,14 +30,7 @@ To set volume quota, use the B or B command. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS @@ -102,10 +95,10 @@ The following example shows the output for the volume C: =head1 PRIVILEGE REQUIRED -The issuer must have the C (lookup) permission on the ACL of the root +The issuer must have the C (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -B<-path> argument, and on the ACL of each directory that precedes it in -the pathname. +B<-path> argument, and C (list) permission on the ACL of each +directory that precedes it in the pathname. =head1 SEE ALSO diff --git a/doc/man-pages/pod1/fs_minidump.pod b/doc/man-pages/pod1/fs_minidump.pod index 9be46e71f..be296cb88 100644 --- a/doc/man-pages/pod1/fs_minidump.pod +++ b/doc/man-pages/pod1/fs_minidump.pod @@ -19,6 +19,16 @@ of the afsd_service.exe process. This output can be very helpful when debugging the AFS Client Service when it is unresponsive to SMB/CIFS requests. +If the AFS Client Service becomes unresponsive to any form of +communication there may be a serious error that can only be diagnosed +by someone with access to the source code and a debugger. The "fs +minidump" command can be used to force the generation of a MiniDump +file containing the state of all of the threads in the AFS Client +Service process. + +The "MiniDumpType" registry value can be used to adjust the scope of the +process information included within the dump file. + =head1 CAUTIONS This command is only available in OpenAFS for Windows version 1.4 and later. diff --git a/doc/man-pages/pod1/fs_quota.pod b/doc/man-pages/pod1/fs_quota.pod index f6528772c..d5c6afa62 100644 --- a/doc/man-pages/pod1/fs_quota.pod +++ b/doc/man-pages/pod1/fs_quota.pod @@ -26,14 +26,7 @@ To set volume quota, use the B or B command. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS @@ -78,10 +71,10 @@ housing the directory F: =head1 PRIVILEGE REQUIRED -The issuer must have the C (lookup) permission on the ACL of the root +The issuer must have the C (read) permission on the ACL of the root directory of the volume that houses the file or directory named by the -B<-path> argument, and on the ACL of each directory that precedes it in -the pathname. +B<-path> argument, and C (list) permission on the ACL of each +directory that precedes it in the pathname. =head1 SEE ALSO diff --git a/doc/man-pages/pod1/fs_setquota.pod b/doc/man-pages/pod1/fs_setquota.pod index f0cd853a7..2a2af3e64 100644 --- a/doc/man-pages/pod1/fs_setquota.pod +++ b/doc/man-pages/pod1/fs_setquota.pod @@ -31,14 +31,7 @@ B command. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod1/fs_setvol.pod b/doc/man-pages/pod1/fs_setvol.pod index 8540f7b00..f09afbd3b 100644 --- a/doc/man-pages/pod1/fs_setvol.pod +++ b/doc/man-pages/pod1/fs_setvol.pod @@ -38,14 +38,7 @@ To set quota on one volume at a time, use the B command. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod1/klog.krb5.pod b/doc/man-pages/pod1/klog.krb5.pod new file mode 100644 index 000000000..96c88eb21 --- /dev/null +++ b/doc/man-pages/pod1/klog.krb5.pod @@ -0,0 +1,284 @@ +=head1 NAME + +klog.krb5 - Authenticates to Kerberos and obtains a token + +=head1 SYNOPSIS + +=for html +
    + +B [B<-x>] S<<< [B<-principal> >] >>> + [-password >] S<<< [B<-cell> >] >>> + S<<< [B<-k> >] >>> [B<-pipe>] [B<-silent>] + S<<< [B<-lifetime> >] >>> + [B<-setpag>] [B<-tmp>] [B<-noprdb>] [B<-unwrap>] [B<-help>] + +B [B<-x>] S<<< [B<-pr> >] >>> + S<<< [B<-pa> >] >>> + S<<< [B<-c> >] >>> + B<<< [B<-k> >] >>> [B<-pi>] [B<-si>] + S<<< [B<-l> >] >>> + [B<-se>] [B<-t>] [B<-n>] [B<-u>] [B<-h>] + +=for html +
    + +=head1 DESCRIPTION + +The B command obtains a Kerberos v5 ticket from a Kerberos +KDC and, from the ticket, an AFS token and then stores it in the Cache +Manager. The Cache Manager keeps the token in kernel memory and uses it +when obtaining authenticated access to the AFS filespace. This command +does not affect the issuer's identity (UNIX UID) on the local file system. + +By default, the command interpreter obtains a token for the AFS user name +that matches the issuer's local user name. To specify an alternate user, +include the B<-principal> argument. The user named by the B<-principal> +argument does not have to appear in the local password file (the +F file or equivalent). + +By default, the command interpreter obtains a token for the local cell, as +defined by the AFSCELL environment variable set in the command shell or by +the F file on the local machine. To specify an +alternate cell, include the B<-cell> argument. A user can have tokens in +multiple cells simultaneously, but only one token per cell per connection +to the client machine. If the user's credential structure already +contains a token for the requested cell, the token resulting from this +command replaces it. + +By default, the command interpreter obtains a Kerberos ticket for the +local realm. To specify a different Kerberos realm, include the B<-k> +argument. The Kerberos realm name need not match the AFS cell name. +B will request a ticket for the principal C> where +I is the cell name for which the user is requesting tokens, falling +back on the principal C if that principal does not work. + +The lifetime of the token resulting from this command is the smallest of +the following: + +=over 4 + +=item * + +The lifetime specified by the issuer with the B<-lifetime> argument if +that argument was given. + +=item * + +The maximum ticket lifetime recorded for the C> principal in +thet Kerberos database. + +=item * + +The maximum ticket lifetime recorded in the specified user's Kerberos +database entry. + +=back + +=head1 CAUTIONS + +By default, this command does not create a new process authentication +group (PAG); see the description of the B command to learn about +PAGs. If a cell does not use an AFS-modified login utility, users must +include B<-setpag> option to this command, or issue the B command +before this one, to have their tokens stored in a credential structure +that is identified by PAG rather than by local UID. Users should be aware +that B<-setpag> will not work on some systems, most notably recent Linux +systems, and using B is preferrable and more reliable. + +When a credential structure is identified by local UID, the potential +security exposure is that the local superuser C can use the UNIX +B command to assume any other identity and automatically inherit the +tokens associated with that UID. Identifying the credential structure by +PAG makes it more difficult (but not impossible) for the local superuser +to obtain tokens of other users. + +If the B<-password> argument is used, the specified password cannot begin +with a hyphen, because it is interpreted as another option name. Use of +the B<-password> argument is not recommended in any case. + +By default, it is possible to issue this command on a properly configured +NFS client machine that is accessing AFS via the NFS/AFS Translator, +assuming that the NFS client machine is a supported system type. However, +if the translator machine's administrator has enabled UID checking by +including the B<-uidcheck on> argument to the B command, the +command fails with an error message similar to the following: + + Warning: Remote pioctl to has failed (err=8). . . + Unable to authenticate to AFS because a pioctl failed. + +Enabling UID checking means that the credential structure in which tokens +are stored on the translator machine must be identified by a UID that +matches the local UID of the process that is placing the tokens in the +credential structure. After the B command interpreter obtains +the token on the NFS client, it passes it to the remote executor daemon on +the translator machine, which makes the system call that stores the token +in a credential structure on the translator machine. The remote executor +generally runs as the local superuser C, so in most cases its local +UID (normally zero) does not match the local UID of the user who issued +the B command on the NFS client machine. + +Issuing the B command on an NFS client machine creates a +security exposure: the command interpreter passes the token across the +network to the remote executor daemon in clear text mode. + +=head1 OPTIONS + +=over 4 + +=item B<-x> + +Appears only for backwards compatibility. Its former function is now the +default behavior of this command. + +=item B<-principal> > + +Specifies the user name to authenticate. If this argument is omitted, the +default value is the local user name. + +=item B<-password> > + +Specifies the issuer's password (or that of the alternate user identified +by the B<-principal> argument). Omit this argument to have the command +interpreter prompt for the password, in which case it does not echo +visibly in the command shell. + +=item B<-cell> > + +Specifies the cell for which to obtain a token. During a single login +session on a given machine, a user can be authenticated in multiple cells +simultaneously, but can have only one token at a time for each of them +(that is, can only authenticate under one identity per cell per session on +a machine). It is acceptable to abbreviate the cell name to the shortest +form that distinguishes it from the other cells listed in the +F file on the client machine on which the +command is issued. + +If this argument is omitted, the command is executed in the local cell, as +defined + +=over 4 + +=item * + +First, by the value of the environment variable AFSCELL. + +=item * + +Second, in the F file on the client machine on +which the command is issued. + +=back + +=item B<-k> > + +Obtain tickets and tokens from the > Kerberos realm. If this +option is not given, B defaults to using the default local +realm. The Kerberos realm name need not match the AFS cell name. + +=item B<-pipe> + +Suppresses all output to the standard output stream, including prompts and +error messages. The B command interpreter expects to receive +the password from the standard input stream. Do not use this argument; it +is designed for use by application programs rather than human users. + +=item B<-silent> + +Suppresses some of the trace messages that the B command +produces on the standard output stream by default. It still reports on +major problems encountered. + +=item B<-lifetime> + +Requests a specific lifetime for the token. Provide a number of hours and +optionally minutes and seconds in the format I[B<:>I[B<:>I]]. + +=item B<-setpag> + +Creates a process authentication group (PAG) prior to requesting +authentication. The token is associated with the newly created PAG. + +=item B<-tmp> + +Creates a Kerberos-style ticket file rather than only obtaining tokens. +The ticket file will be stored in the default Kerberos ticket cache +location, which is usually in the F directory of the local machine +(but depends on the Kerberos implementation used). + +=item B<-noprdb> + +By default, B looks up the user's AFS ID in the Protection +Server and associates the token with that AFS ID. This is helpful when +looking at the output of commands like B but is not required. If +this option is given, this behavior is suppressed and B will +store the token under a generic name. You may wish this if, for example, +you have problems contacting the Protection Server for an AFS cell for +some reason. + +=item B<-unwrap> + +Normally, B uses the Kerberos service ticket for the AFS +principal as the AFS token. If this option is given, B creates +a different, simplified AFS token form based on the service ticket (the +so-called "rxkad 2b" token). Normally, this is not necessary. However, +if you are using older OpenAFS software that cannot handle large ticket +sizes in conjunction with Active Directory as the Kerberos server, using +B<-unwrap> can shrink the AFS token size so that older software can handle +it more easily. + +=item B<-help> + +Prints the online help for this command. All other valid options are +ignored. + +=back + +=head1 OUTPUT + +If the B<-tmp> flag is included, the following message confirms that a +Kerberos ticket cache was created: + + Wrote ticket file to /tmp/krb5cc_1000_rENJoZ + +The path to the cache will vary, of course. + +=head1 EXAMPLES + +Most often, this command is issued without arguments. The appropriate +password is for the person currently logged into the local system. The +ticket's lifetime is calculated as described in L. + + % klog.krb5 + Password for user@EXAMPLE.ORG: + +The following example authenticates the user as admin in the ABC +Corporation's test cell: + + % klog.krb5 -principal admin -cell test.abc.com + Password for admin@ABC.COM: + +In the following, the issuer requests a ticket lifetime of 104 hours 30 +minutes (4 days 8 hours 30 minutes). + + % klog.krb5 -lifetime 104:30 + Password for user@EXAMPLE.ORG: + +=head1 PRIVILEGE REQUIRED + +None + +=head1 SEE ALSO + +L, +L, +L, +L + +=head1 COPYRIGHT + +IBM Corporation 2000. All Rights Reserved. + +This documentation is covered by the IBM Public License Version 1.0. It +was converted from HTML to POD by software written by Chas Williams and +Russ Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. diff --git a/doc/man-pages/pod1/pts_examine.pod b/doc/man-pages/pod1/pts_examine.pod index 6921d979b..7118fa8ce 100644 --- a/doc/man-pages/pod1/pts_examine.pod +++ b/doc/man-pages/pod1/pts_examine.pod @@ -9,16 +9,16 @@ pts_examine - Displays a Protection Database entry B S<<< B<-nameorid> >+ >>> S<<< [B<-cell> >] >>> [B<-noauth>] [B<-localauth>] - [B<-force>] [B<-help>] + [B<-force>] [B<-auth>] [B<-help>] B S<<< B<-na> >+ >>> S<<< [B<-c> >] >>> - [B<-no>] [B<-l>] [B<-f>] [B<-h>] + [B<-no>] [B<-l>] [B<-f>] [B<-a>] [B<-h>] B S<<< B<-na> >+ >>> S<<< [B<-c> >] >>> - [B<-no>] [B<-l>] [B<-f>] [B<-h>] + [B<-no>] [B<-l>] [B<-f>] [B<-a>] [B<-h>] B S<<< B<-na> >+ >>> S<<< [B<-c> >] >>> - [B<-no>] [B<-l>] [B<-f>] [B<-h>] + [B<-no>] [B<-l>] [B<-f>] [B<-a>] [B<-h>] =for html @@ -63,6 +63,11 @@ B<-cell> or B<-noauth> options. For more details, see L. Enables the command to continue executing as far as possible when errors or other problems occur, rather than halting execution at the first error. +=item B<-auth> + +Run using the user's current authentication. This is the default unless +the B<-noauth> or B<-localauth> options are used. + =item B<-help> Prints the online help for this command. All other valid options are @@ -203,7 +208,9 @@ group and the entry's owner (as well as the user for a user entry). The default privacy flags for group entries are C, meaning that all users can display the entry and the members of the group, but only the entry owner and members of the system:administrators group can perform -other functions. +other functions. The defaults for the privacy flags may be changed by +running B with the B<-default_access> option. See L +for more discussion of the B<-default_access> option. =item group quota @@ -211,8 +218,15 @@ The number of additional groups the user is allowed to create. The B command sets it to 20 for both users and machines, but it has no meaningful interpretation for a machine, because it is not possible to authenticate as a machine. Similarly, it has no meaning in group entries -and the B command sets it to 0 (zero); do not change this -value. +that only deal with the local cell and the B command sets +it to 0 (zero); do not change this value. + +When using cross-realm authentication, a special group of the form +system:authuser@FOREIGN.REALM is created by an administrator and used. If +the group quota for this special group is greater than zero, then aklog +will automatically register foreign users in the local PTS database, add +the foreign user to the system:authuser@FOREIGN.REALM, and decrement the +group quota by one. =back diff --git a/doc/man-pages/pod1/vos.pod b/doc/man-pages/pod1/vos.pod index d09c7bf8e..b91eaff56 100644 --- a/doc/man-pages/pod1/vos.pod +++ b/doc/man-pages/pod1/vos.pod @@ -96,14 +96,7 @@ Commands to obtain help: B and B. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS @@ -249,6 +242,7 @@ L, L, L, L, +L, L, L, L, @@ -267,6 +261,7 @@ L, L, L, L, +L, L, L, L, diff --git a/doc/man-pages/pod1/vos_clone.pod b/doc/man-pages/pod1/vos_clone.pod new file mode 100644 index 000000000..51264d152 --- /dev/null +++ b/doc/man-pages/pod1/vos_clone.pod @@ -0,0 +1,155 @@ +=head1 NAME + +vos_clone - Creates a shared-space copy of a volume on a partition + +=head1 SYNOPSIS + +=for html +
    + +B S<<< [B<-id>] > >>> + S<<< [B<-server>] > >>> + S<<< [B<-partition>] > >>> + S<<< [B<-toname> >] >>> + S<<< [B<-toid> >] >>> [B<-offline>] [B<-readonly>] + S<<< [B<-cell> >] >>> [B<-noauth>] + [B<-localauth>] [B<-verbose>] [B<-encrypt>] [B<-help>] + +=for html +
    + +=head1 DESCRIPTION + +The B command creates a copy-on-write copy of a volume on the +same partition and server ass the parent volume. + +A clone is a copy of a volume that does only stores the changes from the +parent volume. Cloning is a primitive operation that is used by the B, B, and B commands. A clone functions using +the same mechanism as a backup volume, but it is persistent. Clone volumes +can be used as point-in-time copies of the parent vollume, but they must be +used with care. + +=head1 CAUTIONS + +This command is not used during normal OpenAFS administration and may +have adverse effects on the VLDB if not used properly! This command +should only be used by an expert. + +Deleting or moving the parent volume makes the clone volume inaccessible, +but the clone volume remains in the VLDB and on disk, and it needs to be +cleaned up manually. + +There is a maximum limitation of 7 clones when using the namei +fileserver. You may safely create up to 4 clones using the B +command. The other three clone slots are used by the backup volume, a +read-only replica and the temporary clone that is created when executing a +B, B, or other B commands. + +Some commands do not work properly on clone volumes. B is one +such command. + +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). + +=head1 OPTIONS + +=over 4 + +=item [B<-id>] > + +Specifies either the complete name or volume ID number of a read/write +volume. + +=item [B<-server>] > + +Identifies the file server machine where the source volume resides. Provide +the machine's IP address or its host name (either fully qualified or using +an unambiguous abbreviation). For details, see L. + +=item [B<-partition>] > + +Names the partition where the source volume resides. Provide the full +partition name (for, example, B) or one of the abbreviated forms +described in L. + +=item B<-toname> > + +The complete name of the new volume to create. + +=item B<-toid> > + +The complete id of the new volume to create. + +=item B<-offline> + +Leaves the new volume flagged as off-line in the volume database. + +=item B<-readonly> + +Flags the new volume as read-only in the volume database. + +=item B<-cell> > + +Names the cell in which to run the command. Do not combine this argument +with the B<-localauth> flag. For more details, see L. + +=item B<-noauth> + +Assigns the unprivileged identity C to the issuer. Do not +combine this flag with the B<-localauth> flag. For more details, see +L. + +=item B<-localauth> + +Constructs a server ticket using a key from the local +F file. The B command interpreter presents +it to the Volume Server and Volume Location Server during mutual +authentication. Do not combine this flag with the B<-cell> argument or +B<-noauth> flag. For more details, see L. + +=item B<-verbose> + +Produces on the standard output stream a detailed trace of the command's +execution. If this argument is omitted, only warnings and error messages +appear. + +=item B<-encrypt> + +Encrypts the command so that the operation's results are not transmitted +across the network in clear text. + +=item B<-help> + +Prints the online help for this command. All other valid options are +ignored. + +=back + +=head1 OUTPUT + +This command has no output unless C<-verbose> is specified or there is +an error. + +=head1 PRIVILEGE REQUIRED + +The issuer must be listed in the F file on the +machines specified with the B<-toserver> and B<-fromserver> arguments and +on each database server machine. If the B<-localauth> flag is included, +the issuer must instead be logged on to a server machine as the local +superuser C. + +=head1 SEE ALSO + +L, +L, +L, +L, +L + +=head1 COPYRIGHT + +Copyright 2008 Jason Edgecombe + +This documentation is covered by the BSD License as written in the +doc/LICENSE file. This man page was written by Jason Edgecombe for +OpenAFS. diff --git a/doc/man-pages/pod1/vos_convertROtoRW.pod b/doc/man-pages/pod1/vos_convertROtoRW.pod index 17547818d..bc8b30635 100644 --- a/doc/man-pages/pod1/vos_convertROtoRW.pod +++ b/doc/man-pages/pod1/vos_convertROtoRW.pod @@ -25,9 +25,6 @@ failed server, or accidental deletion. =head1 CAUTIONS -This command can only be used with namei AFS file servers. If used on an -inode AFS file server, it will fail with an error. - The command name is case-sensitive. It must be issued with the capital "RO" and "RW". diff --git a/doc/man-pages/pod1/vos_copy.pod b/doc/man-pages/pod1/vos_copy.pod index a9cbfe606..6d291457f 100644 --- a/doc/man-pages/pod1/vos_copy.pod +++ b/doc/man-pages/pod1/vos_copy.pod @@ -27,14 +27,7 @@ the volume be stored locally by the client. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod1/vos_create.pod b/doc/man-pages/pod1/vos_create.pod index 290620563..29ea06ae4 100644 --- a/doc/man-pages/pod1/vos_create.pod +++ b/doc/man-pages/pod1/vos_create.pod @@ -62,14 +62,7 @@ mount it in the file space by using the B command. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod1/vos_examine.pod b/doc/man-pages/pod1/vos_examine.pod index d1cebcae5..0ae5082f0 100644 --- a/doc/man-pages/pod1/vos_examine.pod +++ b/doc/man-pages/pod1/vos_examine.pod @@ -34,14 +34,7 @@ display information from the VLDB only, use the B command. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod1/vos_move.pod b/doc/man-pages/pod1/vos_move.pod index 3acb3545a..fa9233317 100644 --- a/doc/man-pages/pod1/vos_move.pod +++ b/doc/man-pages/pod1/vos_move.pod @@ -86,14 +86,7 @@ confirmation of the kill signal: To confirm termination of the operation, press Ctrl-C a second time; press any other key to continue the operation. -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod1/vos_partinfo.pod b/doc/man-pages/pod1/vos_partinfo.pod index d3b436c45..543906428 100644 --- a/doc/man-pages/pod1/vos_partinfo.pod +++ b/doc/man-pages/pod1/vos_partinfo.pod @@ -27,14 +27,7 @@ consulted. =head1 CAUTIONS -Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +Currently, the maximum size of a volume is 2 terabytes (2^31 bytes). =head1 OPTIONS diff --git a/doc/man-pages/pod5/CellServDB.pod b/doc/man-pages/pod5/CellServDB.pod index 2cc7c1e8e..4e683754d 100644 --- a/doc/man-pages/pod5/CellServDB.pod +++ b/doc/man-pages/pod5/CellServDB.pod @@ -12,13 +12,13 @@ servers and lists only the database servers in the local cell. =head2 Client CellServDB -The client version of the CellServDB file lists the database server -machines in the local cell and any foreign cell that is to be accessible -from the local client machine. Database server machines run the -Authentication Server, Backup Server, Protection Server, and Volume -Location (VL) Server (the B, B, B, and -B) processes, which maintain the cell's administrative AFS -databases. +Along with AFSDB entries in DNS, the client version of the CellServDB file +lists the database server machines in the local cell and any foreign cell +that is to be accessible from the local client machine. Database server +machines run the Authentication Server (optional), Backup Server, +Protection Server, and Volume Location (VL) Server (the B, +B, B, and B) processes, which maintain the +cell's administrative AFS databases. The Cache Manager and other processes running on a client machine use the list of a cell's database server machines when performing several common @@ -47,11 +47,12 @@ information from the Protection Database. =back The Cache Manager reads the CellServDB file into kernel memory as it -initializes, and not again until the machine next reboots. To enable users -on the local machine to continue accessing the cell correctly, update the -file whenever a database server machine is added to or removed from a -cell. To update the kernel-resident list of database server machines -without rebooting, use the B command. +initializes, and not again until the machine next reboots or the client +service restarts. To enable users on the local machine to continue +accessing the cell correctly, update the file whenever a database server +machine is added to or removed from a cell. To update the kernel-resident +list of database server machines without rebooting, use the B +command. The F file is in ASCII format and must reside in the F directory on each AFS client machine. Use a text editor @@ -67,15 +68,16 @@ server machines. =head2 Server CellServDB The server version of the F file lists the local cell's -database server machines. These machines run the Authentication Server, -Backup Server, Protection Server, and Volume Location (VL) Server (the -B, B, B, and B) processes, which -maintain the cell's administrative AFS databases. The initial version of -the file is created with the B command during the -installation of the cell's server machine, which is automatically recorded -as the cell's first database server machine. When adding or removing -database server machines, be sure to update this file appropriately. It -must reside in the F directory on each AFS server machine. +database server machines. These machines run the Authentication Server +(optional), Backup Server, Protection Server, and Volume Location (VL) +Server (the B, B, B, and B) +processes, which maintain the cell's administrative AFS databases. The +initial version of the file is created with the B command +during the installation of the cell's server machine, which is +automatically recorded as the cell's first database server machine. When +adding or removing database server machines, be sure to update this file +appropriately. It must reside in the F directory on each AFS +server machine. The database server processes consult the F file to learn about their peers, with which they must maintain constant connections in @@ -109,7 +111,7 @@ In cells that use the Update Server to distribute the contents of the F directory, it is customary to edit only the copy of the file stored on the system control machine. Otherwise, edit the file on each server machine individually. For instructions on adding and removing -database server machine, see the I chapter on +database server machine, see the I chapter on installing additional server machines. =head2 CellServDB Format @@ -178,6 +180,7 @@ F file and illustrates the required format. =head1 SEE ALSO +L, L, L, L, @@ -191,7 +194,7 @@ L, L, L -I +I =head1 COPYRIGHT diff --git a/doc/man-pages/pod5/afs.pod b/doc/man-pages/pod5/afs.pod index 6d8ffb379..80fe15930 100644 --- a/doc/man-pages/pod5/afs.pod +++ b/doc/man-pages/pod5/afs.pod @@ -73,6 +73,8 @@ Configuration files: =item L +=item L + =item L =item L diff --git a/doc/man-pages/pod5/krb.conf.pod b/doc/man-pages/pod5/krb.conf.pod new file mode 100644 index 000000000..5afe29b04 --- /dev/null +++ b/doc/man-pages/pod5/krb.conf.pod @@ -0,0 +1,21 @@ +=head1 NAME + +krb.conf - Configures the kerberos realm to AFS cell mapping + +=head1 DESCRIPTION + +/usr/vice/etc/krb.conf is an optional file that resides on an OpenAFS +server and is used to specify which Kerberos5 realms are trusted to +authenticate to the local AFS cell. The format of the file is one realm +per line. If the Kerberos5 realm matches the AFS cell name +(case-insensitive), then this file can be omitted. krb.conf is only needed +when the Kerberos5 realm does not match the cell name or multiple +Kerberos5 realms authenticate to the same AFS cell. + +=head1 COPYRIGHT + +Copyright 2008 Jason Edgecombe + +This documentation is covered by the BSD License as written in the +doc/LICENSE file. This man page was written by Jason Edgecombe for +OpenAFS. diff --git a/doc/man-pages/pod8/bos_create.pod b/doc/man-pages/pod8/bos_create.pod index d4ec886d7..1f1001ad0 100644 --- a/doc/man-pages/pod8/bos_create.pod +++ b/doc/man-pages/pod8/bos_create.pod @@ -45,8 +45,9 @@ fully-qualified or abbreviated unambiguously). For details, see L. Names the process to define and start. Any name is acceptable, but for the sake of simplicity it is best to use the last element of the process's -binary file pathname, and to use the same name on every server -machine. The conventional names, as used in all AFS documentation, are: +binary file pathname (or the instance type for B and B), and to +use the same name on every server machine. The conventional names, as used +in all AFS documentation, are: =over 4 @@ -54,6 +55,12 @@ machine. The conventional names, as used in all AFS documentation, are: The Backup Server process. +=item dafs + +The process that combines the Demand Attach File Server, Volume Server, +Salvageserver and Salvager processes (B, B, +B, and B). + =item fs The process that combines the File Server, Volume Server, and Salvager @@ -69,7 +76,7 @@ The Protection Server process. =item runntp -The controller process for the Network Time Protocol Daemon. +The controller process for the Network Time Protocol Daemon (obsolete). =item upclientbin @@ -111,6 +118,14 @@ but makes this value available for administrator use. Define the time for command execution as part of the B<-cmd> argument to the B command. +=item dafs + +Use this value only for the dafs process, which combines the File Server, +Volume Server, Salvageserver, and Salvager processes in order to operate +as a Demand Attach File Server. If one of the component processes +terminates, the BOS Server shuts down and restarts the process in the +appropriate order. + =item fs Use this value only for the fs process, which combines the File Server, @@ -121,9 +136,9 @@ appropriate order. =item simple Use this value for all processes listed as acceptable values to the -B<-instance> argument, except for the B process. There are no -interdependencies between simple processes, so the BOS Server can stop and -start them independently as necessary. +B<-instance> argument, except for the B and B processes. +There are no interdependencies between simple processes, so the +BOS Server can stop and start them independently as necessary. =back @@ -250,6 +265,13 @@ C. Type the command on a single line. -cmd /usr/afs/bin/fileserver /usr/afs/bin/volserver \ /usr/afs/bin/salvager +The following command creates the dafs process dafs on the machine +C. Type the command on a single line. + + % bos create -server fs4.abc.com -instance dafs -type dafs \ + -cmd /usr/afs/bin/fileserver /usr/afs/bin/volserver \ + /usr/afs/bin/salvageserver /usr/afs/bin/salvager + The following command creates a cron process called C on the machine C, so that the BOS Server issues the indicated B command each day at 3:00 a.m. (the command creates a backup @@ -375,6 +397,7 @@ L, L, L, L, +L, L, L, L, diff --git a/doc/man-pages/pod8/bos_salvage.pod b/doc/man-pages/pod8/bos_salvage.pod index 8d497b165..c9ae4e85f 100644 --- a/doc/man-pages/pod8/bos_salvage.pod +++ b/doc/man-pages/pod8/bos_salvage.pod @@ -14,6 +14,7 @@ B S<<< B<-server> > >>> S<<< [B<-parallel> >] >>> S<<< [B<-tmpdir> >] >>> S<<< [B<-orphans> (ignore | remove | attach)] >>> S<<< [B<-cell> >] >>> + S<<< [B<-forceDAFS>] >>> [B<-noauth>] [B<-localauth>] [B<-help>] B S<<< B<-se> > >>> S<<< [B<-part> >] >>> @@ -22,6 +23,7 @@ B S<<< B<-se> > >>> S<<< [B<-part> [<-para> >] S<<< [B<-t> >] >>> S<<< [B<-o> (ignore | remove | attach)] >>> S<<< [B<-c> >] >>> [B<-n>] + S<<< [B<-force>] >>> [B<-l>] [B<-h>] =for html @@ -278,6 +280,11 @@ directory. =back +=item B<-forceDAFS> + +If the fileserver is a Demand Attach File Server, then the B<-forceDAFS> +flag must be provided in order for the B to run. + =item B<-cell> > Names the cell in which to run the command. Do not combine this argument @@ -336,6 +343,7 @@ L, L, L, L, +L, L, L, L, diff --git a/doc/man-pages/pod8/buserver.pod b/doc/man-pages/pod8/buserver.pod index 73e29a00f..be8adce42 100644 --- a/doc/man-pages/pod8/buserver.pod +++ b/doc/man-pages/pod8/buserver.pod @@ -9,8 +9,9 @@ buserver - Initializes the Backup Server B S<<< [B<-database> >] >>> S<<< [B<-cellservdb> >] >>> [B<-resetdb>] - [B<-noauth>] [B<-smallht>] [-servers >+] - [B<-enable_peer_stats>] [-enable_process_stats] [B<-help>] + [B<-noauth>] [B<-smallht>] [B<-servers> >+] + [B<-enable_peer_stats>] [B<-enable_process_stats>] [B<-rxbind>] + [B<-p> >] [B<-help>] =for html @@ -115,6 +116,16 @@ GetStatus, and so on) sent or received, aggregated over all connections to other machines. To display or otherwise access the records, use the Rx Monitoring API. +=item B<-rxbind> + +Bind the Rx socket to the primary interface only. (If not specified, the +Rx socket will listen on all interfaces.) + +=item B<-p> > + +Sets the number of server lightweight processes (LWPs or pthreads) to run. +Provide a positive integer from the range 3 to 16. The default value is 3. + =item B<-help> Prints the online help for this command. All other valid options are diff --git a/doc/man-pages/pod8/fileserver.pod b/doc/man-pages/pod8/fileserver.pod index 9a1309aea..3ab94cf8a 100644 --- a/doc/man-pages/pod8/fileserver.pod +++ b/doc/man-pages/pod8/fileserver.pod @@ -11,25 +11,51 @@ B S<<< [B<-auditlog> >] >>> S<<< [B<-d> >] >>> S<<< [B<-p> >] >>> S<<< [B<-spare> >] >>> - S<<< [B<-pctspare> >] >>> S<<< [B<-b> >] >>> - S<<< [B<-l> >] >>> S<<< [B<-s> >] >>> - S<<< [B<-vc> >] >>> S<<< [B<-w> >] >>> - S<<< [B<-cb> >] >>> [B<-banner>] [B<-novbc>] - S<<< [B<-implicit> >] >>> [B<-readonly>] + S<<< [B<-pctspare> >] >>> + S<<< [B<-b> >] >>> + S<<< [B<-l> >] >>> + S<<< [B<-s> >] >>> + S<<< [B<-vc> >] >>> + S<<< [B<-w> >] >>> + S<<< [B<-cb> >] >>> + S<<< [B<-banner>] >>> + S<<< [B<-novbc>] >>> + S<<< [B<-implicit> >] >>> + S<<< [B<-readonly>] >>> S<<< [B<-hr> >] >>> S<<< [B<-busyat> n >>>] >>> - [B<-nobusy>] S<<< [B<-rxpck> >] >>> - [B<-rxdbg>] [B<-rxdbge>] S<<< [B<-rxmaxmtu> >] >>> - [B<-allow-dotted-principal>] - S<<< [B<-rxbind> >] >>> - S<<< [B<-vattachpar> >] >>> - S<<< [B<-m> >] >>> - [B<-lock>] [B<-L>] [B<-S>] S<<< [B<-k> >] >>> + S<<< [B<-nobusy>] >>> + S<<< [B<-rxpck> >] >>> + S<<< [B<-rxdbg>] >>> + S<<< [B<-rxdbge>] >>> + S<<< [B<-rxmaxmtu> >] >>> + S<<< [B<-nojumbo> >>> + S<<< [B<-rxbind> >>> + S<<< [B<-allow-dotted-principals>] >>> + S<<< [B<-L>] >>> + S<<< [B<-S>] >>> + S<<< [B<-k> >] >>> S<<< [B<-realm> >] >>> S<<< [B<-udpsize> >] >>> S<<< [B<-sendsize> >] >>> S<<< [B<-abortthreshold> >] >>> - [B<-enable_peer_stats>] [B<-enable_process_stats>] [B<-help>] + S<<< [B<-enable_peer_stats>] >>> + S<<< [B<-enable_process_stats>] >>> + S<<< [B<-syslog> [>]] >>> + S<<< [B<-mrafslogs>] >>> + S<<< [B<-saneacls>] >>> + S<<< [B<-help>] >>> + S<<< [B<-fs-state-dont-save>] >>> + S<<< [B<-fs-state-dont-restore>] >>> + S<<< [B<-fs-state-verify>] (none | save | restore | both)] >>> + S<<< [B<-vhashsize> >] >>> + S<<< [B<-vlrudisable>] >>> + S<<< [B<-vlruthresh> >] >>> + S<<< [B<-vlruinterval> >] >>> + S<<< [B<-vlrumax> >] >>> + S<<< [B<-vattachpar> >] >>> + S<<< [B<-m> >] >>> + S<<< [B<-lock>] >>> =for html @@ -66,9 +92,10 @@ machine sizes. =item * -The maximum number of lightweight processes (LWPs) the File Server uses to -handle requests for data; corresponds to the B<-p> argument. The File -Server always uses a minimum of 32 KB of memory for these processes. +The maximum number of lightweight processes (LWPs) or pthreads +the File Server uses to handle requests for data; corresponds to the +B<-p> argument. The File Server always uses a minimum of 32 KB of +memory for these processes. =item * @@ -204,13 +231,9 @@ and B<-lock> options, appear in the output generated by the B<-help> option only on the relevant system type. Currently, the maximum size of a volume is 2 terabytes (2^31 bytes) -and the maximum size of a /vicepX partition on a fileserver is also 2 -terabytes. The fileserver will not report an error when it has access -to a partition larger than 2 terabytes, but it will probably fail if -the administrator attempts to use more than 2 terabytes of space. In -addition, there are reports of erroneous disk usage numbers when -B or other OpenAFS disk reporting tools are used with -partitions larger than 2 terabytes. +and the maximum size of a /vicepX partition on a fileserver is 2^64 +kilobytes. (The maximum partition size in releases 1.5.34 and earlier +is 2^31 kilobytes.) The maximum number of directory entries is 64,000 if all of the entries have names that are 15 characters or less in length. A name @@ -241,11 +264,11 @@ and C<125>. The default value of C<0> produces only a few messages. =item B<-p> > -Sets the number of threads to run. Provide a positive integer. The File -Server creates and uses five threads for special purposes, in addition to -the number specified (but if this argument specifies the maximum possible -number, the File Server automatically uses five of the threads for its own -purposes). +Sets the number of threads (or LWPs) to run. Provide a positive integer. +The File Server creates and uses five threads for special purposes, +in addition to the number specified (but if this argument specifies +the maximum possible number, the File Server automatically uses five +of the threads for its own purposes). The maximum number of threads can differ in each release of AFS. Consult the I for the current release. @@ -317,6 +340,10 @@ permission letters (C) and auxiliary permission letters (C, C, C, and C). To review the meaning of the permissions, see the B reference page. +=item B<-readonly> + +Don't allow writes to this fileserver. + =item B<-hr> > Specifies how often the File Server refreshes its knowledge of the @@ -347,33 +374,33 @@ integer. Writes a trace of the File Server's operations on Rx packets to the file F. -=item F<-rxdbge> +=item B<-rxdbge> Writes a trace of the File Server's operations on Rx events (such as retransmissions) to the file F. +=item B<-rxmaxmtu> > + +Defines the maximum size of an MTU. The value must be between the +minimum and maximum packet data sizes for Rx. + +=item B<-nojumbo> + +Do not send, and do not accept, jumbograms. + +=item B<-rxbind> + +Force the fileserver to only bind to one IP address. + =item B<-allow-dotted-principal> By default, the RXKAD security layer will disallow access by Kerberos principals with a dot in the first component of their name. This is to avoid the confusion where principals user/admin and user.admin are both mapped to the user.admin PTS entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server +between principal names may disable this check by starting the server with this option. -=item F<-m> > - -Specifies the percentage of each AFS server partition that the AIX version -of the File Server creates as a reserve. Specify an integer value between -C<0> and C<30>; the default is 8%. A value of C<0> means that the -partition can become completely full, which can have serious negative -consequences. - -=item B<-lock> - -Prevents any portion of the fileserver binary from being paged (swapped) -out of memory on a file server machine running the IRIX operating system. - =item B<-L> Sets values for many arguments in a manner suitable for a large file @@ -404,21 +431,9 @@ listed in the local F file. Sets the size of the UDP buffer, which is 64 KB by default. Provide a positive integer, preferably larger than the default. -=item B<-enable_peer_stats> - -Activates the collection of Rx statistics and allocates memory for their -storage. For each connection with a specific UDP port on another machine, -a separate record is kept for each type of RPC (FetchFile, GetStatus, and -so on) sent or received. To display or otherwise access the records, use -the Rx Monitoring API. - -=item B<-enable_process_stats> +=item B<-sendsize> > -Activates the collection of Rx statistics and allocates memory for their -storage. A separate record is kept for each type of RPC (FetchFile, -GetStatus, and so on) sent or received, aggregated over all connections to -other machines. To display or otherwise access the records, use the Rx -Monitoring API. +Sets the size of the send buffer, which is 16384 bytes by default. =item B<-abortthreshold> > @@ -438,11 +453,121 @@ time instead of in bulk like the Unix Open AFS client. Setting the threshold to 0 disables the throttling behavior. This option is available in OpenAFS versions 1.4.1 and later. +=item B<-enable_peer_stats> + +Activates the collection of Rx statistics and allocates memory for their +storage. For each connection with a specific UDP port on another machine, +a separate record is kept for each type of RPC (FetchFile, GetStatus, and +so on) sent or received. To display or otherwise access the records, use +the Rx Monitoring API. + +=item B<-enable_process_stats> + +Activates the collection of Rx statistics and allocates memory for their +storage. A separate record is kept for each type of RPC (FetchFile, +GetStatus, and so on) sent or received, aggregated over all connections to +other machines. To display or otherwise access the records, use the Rx +Monitoring API. + +=item B<-syslog [] + +Use syslog instead of the normal logging location for the fileserver +process. If provided, log messages are at instead of the +default LOG_USER. + +=item B<-mrafslogs> + +Use MR-AFS (Multi-Resident) style logging. This option is deprecated. + +=item B<-saneacls> + +Offer the SANEACLS capability for the fileserver. This option is +currently unimplemented. + =item B<-help> Prints the online help for this command. All other valid options are ignored. +=item B<-fs-state-dont-save> + +When present, fileserver state will not be saved during shutdown. Default +is to save state. + +This option is only supported by the demand-attach file server. + +=item B<-fs-state-dont-restore> + +When present, fileserver state will not be restored during startup. +Default is to restore state on startup. + +This option is only supported by the demand-attach file server. + +=item B<-fs-state-verify> (none | save | restore | both) + +This argument controls the behavior of the state verification mechanism. +A value of C turns off all verification. A value of C only +performs the verification steps prior to saving state to disk. A value +of C only performs the verification steps after restoring state +from disk. A value of C performs all verifications steps both +prior to save and following a restore. + +The default is C. + +This option is only supported by the demand-attach file server. + +=item B<-vhashsize > + +The log(2) number of of volume hash buckets. Default is 8 (i.e., by +default, there are 2^8 = 256 volume hash buckets). + +This option is only supported by the demand-attach file server. + +=item B<-vlruthresh > + +The number of minutes of inactivity before a volume is eligible for soft +detachment. Default is 120 minutes. + +This option is only supported by the demand-attach file server. + +=item B<-vlruinterval > + +The number of seconds between VLRU candidate queue scan. The default is +120 seconds. + +This option is only supported by the demand-attach file server. + +=item B<-vlrumax > + +The maximum number of volumes which can be soft detached in a single pass +of the scanner. Default is 8 volumes. + +This option is only supported by the demand-attach file server. + +=item B<-vattachpar> > + +The number of threads assigned to attach and detach volumes. The default +is 1. Warning: many of the I/O parallism features of Demand-Attach +Fileserver are turned off when the number of volume attach threads is only +1. + +This option is only meaningful for a file server built with pthreads +support. + +=item B<-m> > + +Specifies the percentage of each AFS server partition that the AIX version +of the File Server creates as a reserve. Specify an integer value between +C<0> and C<30>; the default is 8%. A value of C<0> means that the +partition can become completely full, which can have serious negative +consequences. This option is not supported on platforms other than AIX. + +=item B<-lock> + +Prevents any portion of the fileserver binary from being paged (swapped) +out of memory on a file server machine running the IRIX operating system. +This option is not supported on platforms other than IRIX. + =back =head1 EXAMPLES diff --git a/doc/man-pages/pod8/ptserver.pod b/doc/man-pages/pod8/ptserver.pod index ef17e4546..454ae926c 100644 --- a/doc/man-pages/pod8/ptserver.pod +++ b/doc/man-pages/pod8/ptserver.pod @@ -7,9 +7,14 @@ ptserver - Initializes the Protection Server =for html
    -B S<<< [B<-database> >] >>> S<<< [B<-p> >] >>> - [B<-rebuildDB>] [B<-enable_peer_stats>] [B<-enable_process_stats>] - [B<-allow-dotted-principal>] [B<-help>] +B S<<< [B<-database> | B<-db> >] >>> S<<< [B<-p> >] >>> + [B<-rebuildDB>] S<<< [B<-groupdepth> >] >>> + S<<< [B<-default_access> > >] >>> + [B<-restricted>] [B<-enable_peer_stats>] + [B<-enable_process_stats>] [B<-allow-dotted-principal>] + [B<-rxbind>] S<<< [B<-auditlog> >] >>> + S<<< [B<-syslog>[=>]] >>> S<<< [B<-rxmaxmtu> >] >>> + [B<-help>] =for html
    @@ -48,6 +53,14 @@ request. The CPS lists all groups to which a user or machine belongs. =back +When using Kerberos 5, cross-realm authentication is possible. If the +special pts group system:authuser@FOREIGN.REALM exists and its group quota +is greater than zero, B will automatically create an entry for the +foreign user in the local PTS database and add the foreign user to the +system:authuser@FOREIGN.REALM PTS group. Each time a foreign user is +created in the local PTS database, the group quota for the +system:authuser@FOREIGN.REALM PTS group is decremented by one. + This command does not use the syntax conventions of the AFS command suites. Provide the command name and all option names in full. @@ -55,7 +68,7 @@ suites. Provide the command name and all option names in full. =over 4 -=item B<-database> > +=item B<-database> >, B<-db> > Specifies the pathname of an alternate directory in which the Protection Database files reside. Provide the complete pathname, ending in the base @@ -63,10 +76,11 @@ filename to which the C<.DB0> and C<.DBSYS1> extensions are appended. For example, the appropriate value for the default database files is F. -=item B<-p> > +=item B<-p> > -Sets the number of server lightweight processes (LWPs) to run. Provide a -positive integer from the range C<3> to C<16>. The default value is C<3>. +Sets the number of server lightweight processes (LWPs or pthreads) to run. +Provide a positive integer from the range C<3> to C<16>. The default +value is C<3>. =item B<-rebuildDB> @@ -74,6 +88,24 @@ Rebuilds the Protection Database at the beginning of Protection Server initialization. Use this argument only in consultation with AFS Development or Product Support. +=item B<-groupdepth> >, B<-depth> > + +Specifies the group depth for nested groups when B is compiled +with the SUPERGROUPS option enabled. The default depth for nested groups +is 5. This option may be shortened to B<-depth>. + +=item B<-default_access> > > + +Specifies the default user and group privacy flags to apply to each +entry. Provide a string of five characters, one for each of the +permissions. See L or L for more +information on the flags. + +=item B<-restricted> + +Run the PT Server in restricted mode. While in restricted mode, only +members of the system:administrators PTS group may make any PTS changes. + =item B<-enable_peer_stats> Activates the collection of Rx statistics and allocates memory for their @@ -93,11 +125,31 @@ Monitoring API. =item B<-allow-dotted-principal> By default, the RXKAD security layer will disallow access by Kerberos -principals with a dot in the first component of their name. This is to avoid -the confusion where principals user/admin and user.admin are both mapped to the -user.admin PTS entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server -with this option. +principals with a dot in the first component of their name. This is to +avoid the confusion where principals user/admin and user.admin are both +mapped to the user.admin PTS entry. Sites whose Kerberos realms don't have +these collisions between principal names may disable this check by +starting the server with this option. + +=item B<-rxbind> + +Bind the Rx socket to the primary interface only. (If not specified, the +Rx socket will listen on all interfaces.) + +=item B<-syslog>[=>] + +Specifies that logging output should go to syslog instead of the normal +log file. B<-syslog>=I can be used to specify to which facility +the log message should be sent. Logging message sent to syslog are tagged +with the string "ptserver". + +=item B<-auditlog> > + +Specifies the full pathname for the B file. + +=item B<-rxmaxmtu> > + +Sets the maximum transmission unit for the RX protocol. =item B<-help> diff --git a/doc/man-pages/pod8/salvageserver.pod b/doc/man-pages/pod8/salvageserver.pod new file mode 100644 index 000000000..26a1ee628 --- /dev/null +++ b/doc/man-pages/pod8/salvageserver.pod @@ -0,0 +1,328 @@ +=head1 NAME + +salvageserver - Initializes the Salvageserver component of the dafs process + +=head1 SYNOPSIS + +=for html +
    + +B [I] S<<< [B<-partition> >] >>> + S<<< [B<-volumeid> >] >>> [B<-debug>] [B<-nowrite>] + [B<-inodes>] [B<-force>] [B<-oktozap>] [B<-rootinodes>] + [B<-salvagedirs>] [B<-blockreads>] + S<<< [B<-parallel> >] >>> + S<<< [B<-tmpdir> >] >>> + [B<-showlog>] [B<-showsuid>] [B<-showmounts>] + S<<< [B<-orphans> (ignore | remove | attach)] >>> + [B<-client>] [B<-help>] + +=for html +
    + +=head1 DESCRIPTION + +In its typical mode of operation, the B is a daemon process +responsible for salvaging volumes. It is a component of the C +process type. In the conventional configuration, its binary file is +located in the F directory on a file server machine. + +The Salvageserver daemon is responsible for scheduling and executing +volume salvage operations on behalf of client processes. The fileserver +acts as the primary salvageserver client: any failed volume attach +operation results in a salvageserver scheduling request. The +salvageserver also accepts periodic volume activity messages in order to +update its salvage request priority queue. Other clients of the +salvageserver daemon include the B utility, and the +salvageserver command itself by passing the B<-client> flag. + +The salvage operations performed on vice partition data are nearly +identical to those performed by the standalone Salvager command. The +key differences between the two commands are: + +=over 4 + +=item * + +The Salvageserver is a daemon process which runs concurrently with the +fileserver. In contrast, the Salvager is a stand-alone application which +is invoked when the fileserver and volserver are not running. + +=item * + +The Salvageserver is incapable of performing whole partition salvage +operations; it operates at volume group granularity. + +=back + +The Salvageserver normally creates new inodes as it repairs damage. If the +partition is so full that there is no room for new inodes, use the +B<-nowrite> argument to bringing undamaged volumes online without +attempting to salvage damaged volumes. Then use the B command to +move one or more of the undamaged volumes to other partitions, freeing up +the space that the Salvageserver needs to create new inodes. + +By default, multiple Salvageserver subprocesses run in parallel: one for each +volume group. By default, four concurrent salvage operations are +permitted. You may alter this default by providing a positive integer +value for the B<-parallel> argument. The maximum permitted value is 32 +concurrent salvageserver subprocesses. + +By default, the salvageserver enables a heuristic which attempts to stop +disk head thrashing by concurrent salvageserver subprocesses. Unfortunately, +this heuristic significantly degrades performance in many cases. In at least +the following environments, passing the C string to the B<-parallel> +argument is strongly encouraged: + +=over 4 + +=item * + +On NAMEI fileservers + +=item * + +When a vice partition is backed by multiple disks (e.g. RAID) + +=item * + +When a vice partition is backed by SAN-attached storage, LVM, or some other +form of storage virtualization which would cause unix device id numbers to +be unpredictable. + +=back + +The Salvageserver creates temporary files as it runs, by default writing them +to the partition it is salvaging. The number of files can be quite large, +and if the partition is too full to accommodate them, the Salvageserver +terminates without completing the salvage operation (it always removes the +temporary files before exiting). Other Salvageserver subprocesses running at +the same time continue until they finish salvaging all other partitions +where there is enough disk space for temporary files. To complete the +interrupted salvage, reissue the command against the appropriate +partitions, adding the B<-tmpdir> argument to redirect the temporary files +to a local disk directory that has enough space. + +The B<-orphans> argument controls how the Salvageserver handles orphaned files +and directories that it finds on server partitions it is salvaging. An +I element is completely inaccessible because it is not +referenced by the vnode of any directory that can act as its parent (is +higher in the filespace). Orphaned objects occupy space on the server +partition, but do not count against the volume's quota. + +To generate a list of all mount points that reside in one or more volumes, +rather than actually salvaging them, include the B<-showmounts> flag. + +This command does not use the syntax conventions of the AFS command +suites. Provide the command name and all option names in full. + +=head1 OPTIONS + +=over 4 + +=item [I] + +Accommodates the command's use of the AFS command parser, and is optional. + +=item B<-partition> > + +Specifies the name of the partition to salvage. Specify the full partition +name using the form F> or F>. Omit this argument to +salvage every partition on the file server machine. + +=item B<-volumeid> > + +Specifies the volume ID of a specific read/write volume to salvage. The +B<-partition> argument must be provided along with this one and specify +the volume's actual site. + +=item B<-debug> + +This flag should be considered deprecated. Its primary purpose was to disable +forking and parallelization of the Salvager so that log messages were not +interleaved. Due to the manner in which F is +written, log messages from subprocesses are never interleaved; the entire log +for a volume group salvage is appended to the master log as one atomic +transaction. + +=item B<-nowrite> + +Brings all undamaged volumes online without attempting to salvage any +damaged volumes. + +=item B<-inodes> + +Records in the F file a list of all AFS inodes +that the Salvageserver modified. + +=item B<-force> + +Inspects all volumes for corruption, not just those that are marked as +having been active when a crash occurred. + +=item B<-oktozap> + +Removes a volume that is so damaged that even issuing the B +command with the B<-force> flag is ineffective. Use this argument only in +consultation with AFS Development or Product Support. Combine it with the +B<-partition> and B<-volumeid> arguments to identify the volume to remove. + +=item B<-rootinodes> + +Records in the F file a list of all AFS inodes +owned by the local superuser C. + +=item B<-salvagedirs> + +Salvages entire directory structures, even if they do not appear to be +damaged. By default, the Salvageserver salvages a directory only if it is +flagged as corrupted. + +=item B<-blockreads> + +Forces the Salvageserver to read a partition one disk block (512 bytes) at a +time and to skip any blocks that are too badly damaged to be salvaged. +This allows it to salvage as many volumes as possible. By default, the +Salvageserver reads large disk blocks, which can cause it to exit prematurely +if it encounters disk errors. Use this flag if the partition to be +salvaged has disk errors. + +=item B<-parallel> > + +Specifies the maximum number of Salvageserver subprocesses to run in parallel. +Provide one of three values: + +=over 4 + +=item * + +An integer from the range C<1> to C<32>. A value of C<1> means that a +single Salvageserver subprocess salvages the volume groups sequentially. +The disk partition heuristic (see above) based upon unix device ids is +enabled. + +=item * + +The disk partition heuristic (see above) based upon unix device ids is +disabled. + +=item * + +The string C followed immediately (with no intervening space) by an +integer from the range C<1> to C<32>, to run the specified number of +Salvageserver subprocesses in parallel on volume groups. The disk partition +heuristic (see above) based upon unix device ids is disabled. + +=back + +If this argument is omitted, up to four Salvageserver subprocesses run +in parallel. + +=item B<-tmpdir> > + +Names a local disk directory in which the Salvageserver places the temporary +files it creates during a salvage operation, instead of writing them to +the partition being salvaged (the default). If the Salvageserver cannot write +to the specified directory, it attempts to write to the partition being +salvaged. + +=item B<-showlog> + +Displays on the standard output stream all log data that is being written +to the F file. + +=item B<-showsuid> + +Displays a list of the pathnames for all files that have the setuid or +setgid mode bit set. + +=item B<-showmounts> + +Records in the F file all mount points found in +each volume. The Salvageserver does not repair corruption in the volumes, if +any exists. + +=item B<-orphans> (ignore | remove | attach) + +Controls how the Salvageserver handles orphaned files and directories. Choose +one of the following three values: + +=over 4 + +=item ignore + +Leaves the orphaned objects on the disk, but prints a message to the +F file reporting how many orphans were found and +the approximate number of kilobytes they are consuming. This is the +default if the B<-orphans> argument is omitted. + +=item remove + +Removes the orphaned objects, and prints a message to the +F file reporting how many orphans were removed +and the approximate number of kilobytes they were consuming. + +=item attach + +Attaches the orphaned objects by creating a reference to them in the vnode +of the volume's root directory. Since each object's actual name is now +lost, the Salvageserver assigns each one a name of the following form: + +=over 4 + +=item C<__ORPHANFILE__.I> for files. + +=item C<__ORPHANDIR__.I> for directories. + +=back + +where I is a two-digit number that uniquely identifies each +object. The orphans are charged against the volume's quota and appear in +the output of the B command issued against the volume's root +directory. + +=back + +=item B<-client> + +Salvageserver runs in client Mode. The requested volume on the requested +partition will be scheduled for salvaging by the Salvageserver daemon. + +=item B<-help> + +Prints the online help for this command. All other valid options are +ignored. + +=back + +=head1 EXAMPLES + +The following command instructs the Salvageserver to schedule the salvage +of the volume with volume ID 258347486 on F on the local machine. + + % /usr/afs/bin/salvageserver -partition /vicepg -volumeid 258347486 -client + +=head1 PRIVILEGE REQUIRED + +To issue the command at the shell prompt, the issuer must be logged in as +the local superuser C. + +=head1 SEE ALSO + +L, +L, +L, +L, +L, +L, +L + +=head1 COPYRIGHT + +IBM Corporation 2000. All Rights Reserved. +Sine Nomine Associates 2008. All Rights Reserved. + +This documentation is covered by the IBM Public License Version 1.0. It was +converted from HTML to POD by software written by Chas Williams and Russ +Allbery, based on work by Alf Wachsmann and Elizabeth Cassell. This document +was adapted from the Salvager POD documentation. diff --git a/doc/man-pages/pod8/vldb_convert.pod b/doc/man-pages/pod8/vldb_convert.pod new file mode 100644 index 000000000..d5d5021e1 --- /dev/null +++ b/doc/man-pages/pod8/vldb_convert.pod @@ -0,0 +1,135 @@ +=head1 NAME + +vldb_convert - Convert the VLDB to/from Transarc AFS versions 3.1-3.4a + +=head1 SYNOPSIS + +=for html +
    + +B [B] S<<< [B<-to>] > >>> + S<<< [B<-from>] > >>> + S<<< [B<-path>] > >>> [B<-showversion>] + [B<-dumpvldb>] [B<-help>] + +=for html +
    + +=head1 DESCRIPTION + +The B command is used to convert legacy Transarc 3.1-3.4 +VLDB database files between versions. This command is not needed when +using OpenAFS except in the case of preparing to migrate a pre-3.4 version +of Transarc AFS to OpenAFS. + +In order to convert the VLDB file, do the following: + +=over 4 + +=item 1. + +Shutdown the B process on all server machines. B is +typically run only on the Cell servers, which must be listed in +F or DNS. + +=item 2. + +Backup the VLDB file F on the sync site to a safe +place. Typically, the sync site if the machine with the lowest IP address. + +=item 3. + +Remove the F file from all cell server machines. + +=item 4. + +Remove the F file from the non-sync site server +machines. + +=item 5. + +Run the B command on the VLDB file using the following +command: + + # vldb_convert -path /usr/afs/db/vldb.DB0 + +=item 6. + +Copy the new version of the vlserver binaries to all Cell servers. + +=item 7. + +Restart the vlserver process on all Cell servers. The new VLDB will be +distributed to all of the Cell servers. + +=item 8. + +Confirm that all Cell servers are synchronized and that the vldb looks in +good shape. + +=back + +=head1 CAUTIONS + +Backup the VLDB file to a different directory or machine before performing +the upgrade. Be sure that all vlserver processes are always running the +same version. This requires downtime, but for this conversion, all +vlserver instances must be at the same version. This restriction is +relaxed in OpenAFS. + +=head1 OPTIONS + +=over 4 + +=item [B] + +This is an optional string that does nothing. + +=item [B<-to>] > + +This option is required when downgrading or when upgrading to a version +less than 3.4. Specify 1, 2, 3, or 4 to choose version 3.1, 3.2, 3.3, or +3,4 respectively. This defaults to version 3.4. + +=item [B<-from>] > + +This option is required when downgrading. Specify 1, 2, 3, or 4 to choose +version 3.1, 3.2, 3.3, or 3.4 respectively. + +=item [B<-path>] > + +Specifies the path the VLDB file. This defaults to F +and only needs to be used if the VLDB file is not in the default path.. + +=item B<-showversion> + +Shows the current version of the VLDB. This option can only be used by itself. + +=item B<-dumpvldb> + +Produces verbose debugging output during the conversion process. + +=item B<-help> + +Prints the online help for this command. All other valid options are +ignored. + +=back + +=head1 PRIVILEGE REQUIRED + +The issuer must have read and write access to the file +F. This usually means that root access is required +on the cell server machines. + +=head1 SEE ALSO + +L + +=head1 COPYRIGHT + +Copyright 2008 Jason Edgecombe + +This documentation is covered by the BSD License as written in the +doc/LICENSE file. This man page was written by Jason Edgecombe for +OpenAFS. diff --git a/doc/man-pages/pod8/vlserver.pod b/doc/man-pages/pod8/vlserver.pod index 5a03f1197..60978e56c 100644 --- a/doc/man-pages/pod8/vlserver.pod +++ b/doc/man-pages/pod8/vlserver.pod @@ -7,7 +7,7 @@ vlserver - Initializes the Volume Location Server =for html
    -B S<<< [B<-p> >] >>> [B<-nojumbo>] +B S<<< [B<-p> >] >>> [B<-nojumbo>] [B<-rxbind>] [B<-allow-dotted-principal>] [B<-enable_peer_stats>] [B<-enable_process_stats>] [B<-help>] @@ -55,10 +55,10 @@ suites. Provide the command name and all option names in full. =over 4 -=item B<-p> > +=item B<-p> > -Sets the number of server lightweight processes (LWPs) to run. Provide an -integer between C<4> and C<16>. The default is C<9>. +Sets the number of server lightweight processes (LWPs or pthreads) to run. +Provide an integer between C<3> and C<16>. The default is C<9>. =item B<-nojumbo> @@ -90,9 +90,14 @@ By default, the RXKAD security layer will disallow access by Kerberos principals with a dot in the first component of their name. This is to avoid the confusion where principals user/admin and user.admin are both mapped to the user.admin PTS entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server +between principal names may disable this check by starting the server with this option. +=item B<-rxbind> + +Bind the Rx socket to the primary interface only. (If not specified, the +Rx socket will listen on all interfaces.) + =item B<-help> Prints the online help for this command. All other valid options are diff --git a/doc/man-pages/pod8/volserver.pod b/doc/man-pages/pod8/volserver.pod index 8f13a06ae..0fe488512 100644 --- a/doc/man-pages/pod8/volserver.pod +++ b/doc/man-pages/pod8/volserver.pod @@ -84,7 +84,7 @@ By default, the RXKAD security layer will disallow access by Kerberos principals with a dot in the first component of their name. This is to avoid the confusion where principals user/admin and user.admin are both mapped to the user.admin PTS entry. Sites whose Kerberos realms don't have these collisions -between principal names may disabled this check by starting the server +between principal names may disable this check by starting the server with this option. =item B<-help> diff --git a/doc/man-pages/style.css b/doc/man-pages/style.css index 475925bba..91d8d7a4e 100644 --- a/doc/man-pages/style.css +++ b/doc/man-pages/style.css @@ -30,6 +30,8 @@ background-color: #fff; } + p.indexlink { text-align: right } + body.pod h1 { font-size: large } body.pod h2 { font-size: large } diff --git a/doc/txt/README.linux-nfstrans b/doc/txt/README.linux-nfstrans new file mode 100644 index 000000000..c71342faf --- /dev/null +++ b/doc/txt/README.linux-nfstrans @@ -0,0 +1,268 @@ +## Introduction + +This version works on Linux 2.6, and provides the following features: + +- Basic AFS/NFS translator functionality, similar to other platforms +- Ability to distinguish PAG's assigned within each NFS client +- A new 'afspag' kernel module, which provides PAG management on + NFS client systems, and forwards AFS system calls to the translator + system via the remote AFS system call (rmtsys) protocol. +- Support for transparent migration of an NFS client from one translator + server to another, without loss of credentials or sysnames. +- The ability to force the translator to discard all credentials + belonging to a specified NFS client host. + + +The patch applies to OpenAFS 1.4.1, and has been tested against the +kernel-2.6.9-22.0.2.EL kernel binaries as provided by the CentOS project +(essentially these are rebuilds from source of Red Hat Enterprise Linux). +This patch is not expected to apply cleanly to newer versions of OpenAFS, +due to conflicting changes in parts of the kernel module source. To apply +this patch, use 'patch -p0'. + +It has been integrated into OpenAFS 1.5.x. + +## New in Version 1.4 + +- There was no version 1.3 +- Define a "sysname generation number" which changes any time the sysname + list is changed for the translator or any client. This number is used + as the nanoseconds part of the mtime of directories, which forces NFS + clients to reevaluate directory lookups any time the sysname changes. +- Fixed several bugs related to sysname handling +- Fixed a bug preventing 'fs exportafs' from changing the flag which + controlls whether callbacks are made to NFS clients to obtain tokens + and sysname lists. +- Starting in this version, when the PAG manager starts up, it makes a + call to the translator to discard any tokens belonging to that client. + This fixes a problem where newly-created PAG's on the client would + inherit tokens owned by an unrelated process from an earlier boot. +- Enabled the PAG manager to forward non-V-series pioctl's. +- Forward ported to OpenAFS 1.4.1 final +- Added a file, /proc/fs/openafs/unixusers, which reports information + about "unixuser" structures, which are used to record tokens and to + bind translator-side PAG's to NFS client data and sysname lists. + + +## Finding the RPC server authtab + +In order to correctly detect NFS clients and distinguish between them, +the translator must insert itself into the RPC authentication process. +This requires knowing the address of the RPC server authentication dispatch +table, which is not exported from standard kernels. To address this, the +kernel must be patched such that net/sunrpc/svcauth.c exports the 'authtab' +symbol, or this symbol's address must be provided when the OpenAFS kernel +module is loaded, using the option "authtab_addr=0xXXXXXXXX" where XXXXXXXX +is the address of the authtab symbol as obtained from /proc/kallsyms. The +latter may be accomplished by adding the following three lines to the +openafs-client init script in place of 'modprobe openafs': + + modprobe sunrpc + authtab=`awk '/[ \t]authtab[ \t]/ { print $1 }' < /proc/kallsyms` + modprobe openafs ${authtab:+authtab_addr=0x$authtab} + + +## Exporting the NFS filesystem + +In order for the translator to work correctly, /afs must be exported with +specific options. Specifically, the 'no_subtree_check' option is needed +in order to prevent the common NFS server code from performing unwanted +access checks, and an fsid option must be provided to set the filesystem +identifier to be used in NFS filehandles. Note that for live migration +to work, a consistent filesystem id must be used on all translator systems. +The export may be accomplised with a line in /etc/exports: + + /afs (rw,no_subtree_check,fsid=42) + +Or with a command: + + exportfs -o rw,no_subtree_check,fsid=42 :/afs + +The AFS/NFS translator code is enabled by default; no additional command +is required to activate it. However, the 'fs exportafs nfs' command can +be used to disable or re-enable the translator and to set options. Note +that support for client-assigned PAG's is not enabled by default, and +must be enabled with the following command: + + fs exportafs nfs -clipags on + +Support for making callbacks to obtain credentials and sysnames from +newly-discovered NFS clients is also not enabled by default, because this +would result in long timeouts on requests from NFS clients which do not +support this feature. To enable this feature, use the following command: + + fs exportafs nfs -pagcb on + + +## Client-Side PAG Management + +Management of PAG's on individual NFS clients is provided by the kernel +module afspag.ko, which is automatically built alongside the libafs.ko +module on Linux 2.6 systems. This component is not currently supported +on any other platform. + +To activate the client PAG manager, simply load the module; no additional +parameters or commands are required. Once the module is loaded, PAG's +may be acquired using the setpag() call, exactly as on systems running the +full cache manager. Both the traditional system call and new-style ioctl +entry points are supported. + +In addition, the PAG manager can forward pioctl() calls to an AFS/NFS +translator system via the remote AFS system call service (rmtsys). To +enable this feature, the kernel module must be loaded with a parameter +specifying the location of the translator system: + + insmod afspag.ko nfs_server_addr=0xAABBCCDD + +In this example, 0xAABBCCDD is the IP address of the translator system, +in network byte order. For example, if the translator has the IP address +192.168.42.100, the nfs_server_addr parameter should be set to 0xc0a82a64. + +The PAG manager can be shut down using 'afsd -shutdown' (ironically, this +is the only circumstance in which that command is useful). Once the +shutdown is complete, the kernel module can be removed using rmmod. + + +## Remote System Calls + +The NFS translator supports the ability of NFS clients to perform various +AFS-specific operations via the remote system call interface (rmtsys). +To enable this feature, afsd must be run with the -rmtsys switch. OpenAFS +client utilities will use this feature automatically if the AFSSERVER +environment variable is set to the address or hostname of the translator +system, or if the file ~/.AFSSERVER or /.AFSSERVER exists and contains the +translator's address or hostname. + +On systems running the client PAG manager (afspag.ko), AFS system calls +made via the traditional methods will be automatically forwarded to the +NFS translator system, if the PAG manager is configured to do so. This +feature must be enabled, as described above. + + +## Credential Caching + +The client PAG manager maintains a cache of credentials belonging to each +PAG. When an application makes a system call to set or remove AFS tokens, +the PAG manager updates its cache in addition to forwarding the request +to the NFS server. + +When the translator hears from a previously-unknown client, it makes a +callback to the client to retrieve a copy of any cached credentials. +This means that credentials belonging to an NFS client are not lost if +the translator is rebooted, or if the client's location on the network +changes such that it is talking to a different translator. + +This feature is automatically supported by the PAG manager if it has +been configured to forward system calls to an NFS translator. However, +requests will be honored only if they come from port 7001 on the NFS +translator host. In addition, this feature must be enabld on the NFS +translator system as described above. + + +## System Name List + +When the NFS translator hears from a new NFS client whose system name +list it does not know, it can make a callback to the client to discover +the correct system name list. This ability is enabled automatically +with credential caching and retrieval is enabled as described above. + +The PAG manager maintains a system-wide sysname list, which is used to +satisfy callback requests from the NFS translator. This list is set +intially to contain only the compiled-in default sysname, but can be +changed by the superuser using the VIOC_AFS_SYSNAME pioctl or the +'fs sysname' command. Any changes are automatically propagated to the +NFS translator. + + +## Dynamic Mount Points + +This patch introduces a special directory ".:mount", which can be found +directly below the AFS root directory. This directory always appears to +be empty, but any name of the form "cell:volume" will resolve to a mount +point for the specified volume. The resulting mount points are always +RW-path mount points, and so will resolve to an RW volume even if the +specified name refers to a replicated volume. However, the ".readonly" +and ".backup" suffixes can be used to refer to volumes of those types, +and a numeric volume ID will always be used as-is. + +This feature is required to enable the NFS translator to reconstruct a +reachable path for any valid filehandle presented by an NFS client. +Specifically, when the path reconstruction algorithm is walking upward +from a client-provided filehandle and encounters the root directory of +a volume which is no longer in the cache (and thus has no known mount +point), it will complete the path to the AFS root using the dynamic +mount directory. + +This feature is available whenever the dynamic AFS root is enabled. +On Linux systems, it is also available even when dynroot is not enabled, +to support the NFS translator. It is presently not possible to disable +this feature, though that ability may be added in the future. It would +be difficult to make this feature unavailble to users and still make the +Linux NFS translator work, since the point of the check being performed +by the NFS server is to ensure the requested file would be reachable by +the client. + + +## Security + +The security of the NFS translator depends heavily on the underlying +network. Proper configuration is required to prevent unauthorized +access to files, theft of credentials, or other forms of attack. + +NFS, remote syscall, and PAG callback traffic between an NFS client host +and translator may contain sensitive file data and/or credentials, and +should be protected from snooping by unprivileged users or other hosts. + +Both the NFS translator and remote system call service authorize requests +in part based on the IP address of the requesting client. To prevent an +attacker from making requests on behalf of another host, the network must +be configured such that it is impossible for one client to spoof the IP +address of another. + +In addition, both the NFS translator and remote system call service +associate requests with specific users based on user and group ID data +contained within the request. In order to prevent users on the same client +from making filesystem access requests as each other, the NFS server must +be configured to accept requests only from privileged ports. In order to +prevent users from making AFS system calls on each other's behalf, possibly +including retrieving credentials, the network must be configured such that +requests to the remote system call service (port 7009) are accepted only +from port 7001 on NFS clients. + +When a client is migrated away from a translator, any credentials held +on behalf of that client must be discarded before that client's IP address +can safely be reused. The VIOC_NFS_NUKE_CREDS pioctl and 'fs nukenfscreds' +command are provided for this purpose. Both take a single argument, which +is the IP address of the NFS client whose credentials should be discarded. + + +## Known Issues + + + Because NFS clients do not maintain active references on every inode + they are using, it is possible that portions of the directory tree + in use by an NFS client will expire from the translator's AFS and + Linux dentry cache's. When this happens, the NFS server attempts to + reconstruct the missing portion of the directory tree, but may fail + if the client does not have sufficient access (for example, if his + tokens have expired). In these cases, a "stale NFS filehandle" error + will be generated. This behavior is similar to that found on other + translator platforms, but is triggered under a slightly different set + of circumstances due to differences in the architecture of the Linux + NFS server. + + + Due to limitations of the rmtsys protocol, some pioctl calls require + large (several KB) transfers between the client and rmtsys server. + Correcting this issues would require extensions to the rmtsys protocol + outside the scope of this project. + + + The rmtsys interface requires that AFS be mounted in the same place + on both the NFS client and translator system, or at least that the + translator be able to correctly resolve absolute paths provided by + the client. + + + If a client is migrated or an NFS translator host is unexpectedly + rebooted while AFS filesystem access is in progress, there may be + a short delay before the client recovers. This is because the NFS + client must time out any request it made to the old server before + it can retransmit the request, which will then be handled by the + new server. The same applies to remote system call requests. diff --git a/doc/txt/RELNOTES-1.4.1 b/doc/txt/RELNOTES-1.4.1 deleted file mode 100644 index f38f74a92..000000000 --- a/doc/txt/RELNOTES-1.4.1 +++ /dev/null @@ -1,114 +0,0 @@ - OpenAFS Release Notes - Version 1.4.1 - _________________________________________________________________ -All systems: Major bugfixes. -New systems: MacOS 10.4 (PowerPC and Intel) - _________________________________________________________________ - -* Bugfixes: - -All systems: - -- Several race conditions in the host tracking and handling in the fileserver - which could cause inconsistent behavior and crashes have been fixed. - -- A fileserver bug where a reference to a volume could be leaked and later - cause a deadlock as a result of a bulk status call - -- Reference counting of fileserver objects in unsigned 32 bit integers - instead of signed 16 bit integers. - -- Avoid type mismatches when handling time values (betweemn 32 bit and 64 bit - variables). - -- Fix a memory leak during multilevel packet queue handling. - -- Audit log output had been updated to include FIDs for newly created files. - -HP-UX 11i: - -- 64 bit (large file) inodes are supported. - -- Salvager will now handle large (>4gb) partitions. - -* New features: - -All systems: - -- asetkey is now included to ease Kerberos 5 integration for server - administrators. - -- A new fileserver statistics collection including callback statistics was - added. - -- man pages are now generated. - -Microsoft Windows: - -- Fixes error message problems experienced by fs.exe and the AFS Explorer - Shell Extensions related to the use of Universal Error Codes by the - AFS File Server - -- Adds full SMB/CIFS support for byte range locking. In this implementation - all locks are allocated locally and the AFS lock privilege is ignored. - While this will not prevent two processes on different machines from - simultaneously writing to the same file, it will prevent two processes - on the same machine from doing so. - -- The UP server check period has been reduced to once every ten minutes to - match the period used by the UNIX clients. The shorter period will - assist clients maintain RX connections through NATs. - -- Fixes the DOWN server check logic to ensure that any server that responds - to a check is marked UP unless it is in the process of restarting. - -- Add logic to better handle objects that no longer exist on the file server. - (VNOVNODE errors.) - -- Prevent the removal of existing drive mappings by "afscreds.exe -M" - -- Fixes the procmgmt library so that it doesn't cause applications that - unload it to crash. - -- Improves the warnings written to the afsd_init.log file when the - Windows RPC Protocol drivers are improperly configured. - -- Fixes "fs setserverprefs -vlserver". Multiple calls with the same - server parameter could result in a crash of afsd_service.exe. - -- The SMB/CIFS layer was audited for reference miscounts and memory leaks. - All SMB objects are now properly counted, locked, and released when - their work is done. - -- Prevent file truncation of the user does not have the appropriate access. - -- Token management was re-written to allow user tokens to be preserved - during integrated login and freed after logoff is complete. - -- Added a mechanism by which abandoned SMB virtual circuits can be - detected and the associated resources cleaned up. - -- Prevent the allocation of SMB file handles with a value of 0 or 0xFFFF - which would be considered invalid by Windows applications. - -- Fixed the processing of cell names to ensure that they are always - treated as case insensitive strings. - -- Fixed the network provider code to avoid querying the profile location - if integrated login is disabled. - -- If a mount point string is empty, return Path Not Found to the application. - -- Windows returns WSAECONNRESET when an ICMP packet is received in response - to a transmitted UDP packet that cannot be delivered. Do not mark the - connection as bad but instead retry the request. - -- Fix the data written to the registry as part of the BackConnectionHostnames - values. - -- Fixed the rx-lwp implementation to always generate unique rx call - identitiers. - -- The default "fs minidump" type now includes data segments. - - - diff --git a/doc/txt/RELNOTES-1.4.2 b/doc/txt/RELNOTES-1.4.2 deleted file mode 100644 index 4dba58683..000000000 --- a/doc/txt/RELNOTES-1.4.2 +++ /dev/null @@ -1,89 +0,0 @@ - OpenAFS Release Notes - Version 1.4.2 - _________________________________________________________________ -All systems: Major bugfixes. - _________________________________________________________________ - -* Bugfixes: - -All systems: - -- Volume dump parsing code in the volserver has better error checking. - -- salvager has improved damaged volume handling on namei fileservers. - -- fileserver has size validity checks for when large file support is disabled. - -- fileserver avoids potentially multiply adding a host to its hash table. - -- rxkad client private data storage is allocated dynamically on ticket size. - -- Handle universal error code translation for file locking. - -- fileserver needs to swap callback connections on a client IP change. - -- fileserver host package revised to reduce lock contention. - -- Rx has been fixed to count hard acks, thus opening the congestion window. - -- All servers support bound Rx sockets (on one interface). - -- namei fileserver no longer use lockf() to avoid range locking issues. - -- most binaries now support the -version switch. - -- backup suite fixes for 64 bit platforms. - -- volserver avoids holding holds during volume purges. - -- volserver avoids losing files on namei during vos zap. - -AIX: - -- fileserver now properly supports large files. - -- TSM updates for AIX 5 - -- Kernel module avoids leaking Rx packets. - -- Avoid use of global ubik client structure in fileserver. - -- Update ubik call client interface to allow for prototyping. - -- audit logging fixes when stdarg does not provide integral va_list type. - -MacOS 10.4: - -- A bug where the client kernel module could free stack memory (which caused issues with 64 bit Intel most commonly) has been fixed. - -- Packaging fixes and updates. - -- Uninstaller added. - -- Fix large file support. - -Linux: - -- autoconf kernel feature testing has been restructured. - -- PAG garbage collection is enabled by default. - -- Kerberos updates for RHEL3. - -- Fix POSIX lock enrollment for older Linux kernels. - -- Updates for new 2.6 kernels. - -- Avoid deadlocks in put_inode handler. - -- Keyring-based PAG support. - -- Fixes to avoid getting better oops info in the kernel. - -Solaris: - -- Remove some kernel symbol bindings for symbols we don't use. - -- Cleanup for loopback mount of AFS on Solaris 10. - -- Avoid issues with stdio not supporting file descriptors above 255 on - Solaris 8 and lower in the fileserver. diff --git a/doc/txt/RELNOTES-1.4.2fc4 b/doc/txt/RELNOTES-1.4.2fc4 deleted file mode 100644 index b42eebecf..000000000 --- a/doc/txt/RELNOTES-1.4.2fc4 +++ /dev/null @@ -1,161 +0,0 @@ - OpenAFS Release Notes - Version 1.4.2 - _________________________________________________________________ -All systems: Major bugfixes. - _________________________________________________________________ - -* Bugfixes: - -All systems: - -* A bug in the namei volserver which could erroneously make a replicated or - moved volume go offline has been fixed. - -* Volume package users (fileserver, volserver, salvager) avoid using lockf to - avoid leaking byte range locks on volume internal files. - -MacOS 10.4: - -* A bug where the client kernel module could free stack memory (which caused - issues with 64 bit Intel most commonly) has been fixed. - -Linux: - -* A missing kernel feature test has been fixed. - -* group based PAG support is still enabled when possible. - -* ia32 syscall table support for amd64 has build fixes for modern kernels. - -Solaris: - -* fopen() is not safe for use with more than 255 file descriptors open; - Emulate it in the afsconf package so afsconf can be used in the fileserver. - -Windows: - -* DNS registration is disabled for the loopback adapter, and we make sure - Netbios is turned on. - -Since 1.4.1: - -All platforms: -* Remove use of ubik_Call in the source code so prototypes are used. - -* Avoid synchrony in call from the fileserver to the ptserver. - -* Fix a bug in the backup suite when restoring. - -* fileserver and volserver now log for error conditions which may cause - exiting. - -* rx avoids a stack overrun when more packets are needed. - -* volserver avoids holding a lock too long when purging volumes. - -* volserver lock initialization fixes - -* volserver volume nuke fixes to avoid leaving files behind - -* fileserver avoids error when authenticating ptserver requests - -* fileserver no longer crashes when GetCPS fails - -* salvager enhancements to deal better with corrupt volumes for namei - -Unix: - -* aklog deals with KDCs which give "generic" replies to principals not - existing. - -* Fix bug in cache parameter autotuning - -RedHat: - -* packaging fixes - -Linux: - -* amd64 pthread library family updates. - -* autoconf fixes for kernel feature testing - -* keyring PAG support now only enabled if needed features are present - and other updates - -* inline a version of BUG() so we get better oopses - -AIX: - -* tsm is updated to work with the new AIX 5 interface. - -MacOS: - -* Cross compile fixes - -* Packaging improvements - -* Large file support fixed (Thanks to Chaskiel Grundman) - -* Fixes for Leopard seed. - -* Installer image updates - -Windows: - -* Removes race conditions and a deadlock introduced in 1.4.1 - -* Fixes ANSI filename option. - -* Establishes new connections to file servers when - IP address configuration changes are detected. - -* Improved CIFS compatibility - -* Cache Manager optimizations - -* Fixes vlserver failover when mounting 'root.afs' - (Freelance mode disabled) - -* Installs help files in the correct location for use by afscreds.exe - and afs control panel. - -* Improve reporting of "over quota" and "disk full" errors. - -* Prevent crash when evaluating mount points to volumes that do - not exist - -* Removes auto-registration of AFS ID in foreign ptservers from - Integrated Logon DLL. This prevents crashes if the DLL is loaded - and unloaded prior to termination of the process. - -* SDK moved to \Program Files\OpenAFS\SDK - -* NSIS and WiX Installer Frameworks update to the latest versions - -* Improvements to the Kerberos Logon Integration - -* Prevents exception in Integrated Logon DLL during SysPrep - -* Prevents displays of MessageBox dialogs in response to Network Adapter - errors - -* Hard Dead and Connection Timeout values restricted to the CIFS Session - Timeout value. - -* Correct writing of BackConnectionsHostNames registry value. - -* Properly recycles Volume entries - -* The AFS Explorer Shell Extension always finds its resource library. - -* The export list for AFSAUTHENT.DLL has been corrected. (The AFS - plugin for NetIDMgr will no longer use 100% of CPU.) - -* Renaming files on Microsoft Vista Build 5536 works. - -* Better handling of "." directory in fs commands - -* Add OpenAFS License text to installers - -* fs setquota and fs mkmount commands behave the same as the UNIX - version diff --git a/doc/txt/winnotes/afs-changes-since-1.2.txt b/doc/txt/winnotes/afs-changes-since-1.2.txt index 7d98d3409..0c015df45 100644 --- a/doc/txt/winnotes/afs-changes-since-1.2.txt +++ b/doc/txt/winnotes/afs-changes-since-1.2.txt @@ -1,114 +1,1787 @@ -Since 1.4.3-rc2 (1.4.3-rc3 released 28 Feb 2007) +Since 1.5.39 [1.5.50 released 16 July 2008] + * There were no releases between 1.5.39 and 1.5.50. - * disable ability to find lana by name. + * FIRST RELEASE WITH UNICODE SUPPORT - * return the correct error code when attempting to remove a - directory that still contains entries + * Pioctl interfaces to the cache manager refactored + to provide layering between the SMB specific code + and the general purpose ioctl operation. + + * Garbage collect dead SMB virtual circuits as soon + as they are no longer being referenced. This avoids + problems with outstanding locks not being dropped + when the virtual circuit becomes invalid. + + * Remove the IBM Administration Reference documentation + and replace it with the OpenAFS Command Reference + Manual. + + * Avoid calling rx_SetDeadTime and rx_SetHardDeadTime + functions each time a connection is about to be used. + Do not hold a lock on the rx connection object while + it is being selected. This avoids a race between + threads attempting to set the timeout values and + removes a bottleneck that was hampering performance. + + * Ensure that the smb directory attribute is set + for all directory objects. + + * Add vs2008 support to the NSIS installer scripts + + * Replace the VC Runtime EXE installer with the MSI + installer in the NSIS installer scripts + + * Properly delete the VC7.1 C Runtime libraries. + +Since 1.5.36 [1.5.39 released 23 June 2008] + * There were no 1.5.37 or 1.5.38 releases for Windows + + * Use Visual Studio version of vsprintf() instead of + home grown version that resulted in linking conflicts + + * Prevent buserver, ptserver and fileserver from crashing + due to non-portable strftime() format strings. + + * Prevent server crashes caused by rx_InitMorePackets() + being called prior to allocation of all of the required + synchronization objects. + + * Fixed a memory leak in the internal B+ tree directory. + For objects with non-8.3 names, the 'longname' memory + allocation would be leaked during object deletion or + tree destruction. + + * Fixed a memory leak in the background daemon cm_CheckServer() + routine. The memory allocated to store the server list + was not freed. + + * Obtain a missing lock around a call to cm_RemoveSCacheFromHashTable(). + + * Correct an abstraction layer violation. cm_scache_t objects + should be marked deleted in cm_Unlink() and cm_RemoveDir() and not + in smb_CloseFID(). Cleanup of deleted cm_scache_t objects should be + performed in cm_ReleaseSCache() when the reference count hits zero. + + * Prototype cm_AdjustScacheLRU() and re-implement it using osi_QAddH(). + + * Do not reference 'smb_logp' in cm_vnodeops.c. Use 'afsd_logp' + instead. + + * Ensure that scache object 'nextp' pointers are set to NULL + when the objects are removed from the hash table linked list. + + * If a dirty buffer cannot be written to the file server because + of an access denied error, mark the error in the cm_buf_t + structure so that it can be dealt with instead of retrying + forever. + +Since 1.5.35 + * Update CellServDB file to GCO Public 23 Apr 2008 + + * Fix a cm_buf_t reference count leak when attempts to write + dirty buffers to the file server from within cm_IncrSyncer() + fail. + + * Prevent udebug from crashing. + + * Activate RX Idle Timeouts. If the file server is busy for more + then 30 seconds, attempt to failover to another server without + marking the busy server down. + + * Another VNOVNODE issue fixed. When writing a dirty buffer + to the file server, if VNOVNODE is received, mark all buffers + as invalid without further attempts to contact the file server. + + * Improved performance on high latency links. + +Since 1.5.34 + * Fix a bug preventing the re-initialization of the Freelance + root.cell contents when a change is made. + + * Properly return CM_ERROR_NOSUCHFILE when removing a symlink + or mountpoint that does not exist. + + * aklog, afscreds, integrated logon, and the NIM AFS credential + provider will all attempt to first acquire an afs service ticket + using the service principal: afs/@. This + permits the proper detection of the cell realm when multiple + realms are local realms for the cell. + + * Fix fs commands that re-use file identifiers instead of forcing + a path evaluation each time. This was broken in 1.5.33 when + hashes were added to the cm_fid_t structure. + + * Fix symlink and mountpoint removal and then recreation when + applied to the fake Freelance root.afs volume. + + * Fix SMB change notifications for the Freelance root.afs volume + when creating or removing symlinks and mount points. + + * Force DNS AFSDB cell name lookups to lower case if the DNS + response is not all lower case. + + * 32-bit installers are now built with Visual Studio 2005 + + * All vos.exe commands now support the "-noresolve" option which + forces the display of IP addresses instead of DNS hostnames. + + * No longer hold the cm_volume_t mutex across VL_xxx RPCs. This + permits operations that do not require up to date volume + location data to continue while waiting for the RPC to complete. + Multiple threads waiting for a volume location update on the + same volume set no longer trigger multiple calls VL_xxx RPCs. + + * Volume server references could be marked offline and never + reset to the not_busy state. + + * Further optimizations to cm_Analyze() retry logic for + CM_ERROR_OFFLINE and CM_ERROR_ALLBUSY error handling. + +Since 1.5.33 + * Optimize the DNLC by applying Interlocked incrementing for + statistics gathering and enabling greater use of read + locks instead of write locks + + * Further optimize osi_Log operations when logging is disabled + by removing the need for the function call overhead. + + * Add a new lock operation, Convert Read to Write, and apply + it throughout the cache manager. This function provides a + fast transition from a read lock to a write lock when the + caller is the only reader. + + * Fix a timeout problem when opening files or request locks + when the file in question is already write-locked by another + machine. + + * Fix a deadlock that can occur if "fs flushall" is executed + while applications are writing to AFS. + + * The cache manager would re-read data from the file server + after file truncation when obtaining buffers to write to the + same file until the first StoreData RPC completes. + + * Fixes error handling in cm_NTCheckDelete() + + * Replaces cm_scache_t mutex with a read-write lock permitting + additional parallel access. + + * Prevent an cm_scache_t reference undercount when evaluating + symlinks containing @sys when none of the active sysnames + match any of the available targets. + + * Prevent the leak of a cm_scache_t rwlock if associated symlink + is too long. + + * Set RxMaxMTU registry value to 0 which is the equivalent of + it not being set at all. + + * Reduce contention between BkgDaemon threads + + * Prevent CM_SCACHEFLAG_ASYNCSTORE from being reset on a write + failure + + * Convert reference counts on cm_volume_t, cm_conn_t, cm_server_t + objects to use the faster Interlocked operations which avoid + the need to hold write locks. + + * Permit rxkad errors other than RXKADEXPIRED to be treated as a + non-fatal error that forces a retry against another service + (if available.) + + * Fix a crash in smb_WriteData that would occur if an application + opened the file as read-only and then sent a write request anyway. + (RT 88731) + + * Respond to VL_NOENT errors by removing cm_volume_t object and + setting it to be the first object to be recycled. This is not + only a more efficient use of resources but it also prevents + repeated attempts to query the VLDB server for the volume from + the CheckOfflineVolumes routine. + + * Change the defaults for RxEnablePeerStats and RxEnableProcessStats + back to "on". + + * A first cut at a cache manager statistics monitor that can be used + to determine the necessary cache parameters to support the + application working set. + + Off by default, the performance package can be activated by setting + "daemonPerformanceTuningInterval" in the service Parameters key. + As with the other daemon interval values the unit is in seconds. + + At service start and each succeeding interval the cache manager + will write statistics to %TEMP%\afsd_performance.txt showing the + relative usage of cm_scache_t, cm_volume_t and cm_buf_t objects. + The FID statistics keep track of all FIDs seen by the cache manager + during the service session whether or not they are backed by any + live object in the cache. + + These statistics are not stored in the cache file. + + * Fix windows event logging broken in 1.5.33. + + * Eliminate multiple calls to syscfg_GetIFInfo() which is used to + populate the IP address list for WhoAreYou/TellMeAboutYourself RPCs + as well as when computing the server preference list. + + * When merging status after a StoreData operation prevent data + buffers from being discarded that we would prefer to keep. + (Bug introduced in 1.5.33.) + + * Modify installers the set RxMaxMTU to 0. + + * In the AFS Configuration Panel on the Advanced->Miscellaneous + dialog, the Background Daemons and Service Threads fields were + swapped. + + * Increase default number of Background Daemons to 4. + + * Remove cm_volume_t reference from the cm_scache_t object. Permit + cm_volume_t objects to be recycled. + + * Windows Error Reporting has shown a number of previously unseen + stack corruption errors in the Explorer Shell extension. The + minidump appeared to indicate the problem was in ParseAcl(). + Reviewing the function it appears that numerous things could go + wrong if invalid input was provided. Added error checking and + data validation. Hopefully this will address the problem. + + * Windows Error Reporting has shown crashes in aklog as a result + of krb5_cc_get_default() failures not being handled. They are + now handled. + +Since 1.5.32 + * The Rx library used a 32-bit type for sockets which was + truncating the socket value on 64-bit Windows. This + was not an issue in general but became an issue when + Rx "hot thread" support was enabled. + + * Enable "Rx hot thread" support which ensures that while + a received message is being processed that a new thread + is allocated to receive the next message to arrive. + + * Increased parallel access to smb_rctLock protected + resources. Reduce the number of times that the + lock is dropped and re-obtained. + + * Increased parallel access to cm_scache_t and cm_buf_t + resources by replacing the previous global write lock + protected reference counting mechanism with one built + upon the use of InterlockedIncrement and InterlockedDecrement. + + * Implement a hash for cm_fid_t to reduce comparison costs + and inline the cm_FidCmp() function. + + * Redefine the BUF_HASH and BUF_FILEHASH in terms of the cm_fid_t + hash which has a better distribution + + * Modify cm_ConsiderPrefetch to evaluate the amount of data in + the most recent read request instead of the next chunkSize. + cm_chunkSize can be dozens or hundreds of buffers. As a result + too much time is spent performing the evaluation. + + * Fix the usage of cm_scache_t bufCreateLock. The purpose of this + lock is to prevent the creation of new buffers while a truncation + is being performed. All references to bufCreateLock have been + removed except in two places: + i. a write-lock surrounding the function that calls buf_Truncate() + ii. a read-lock within buf_GetNewLocked() that actually allocates + new buffers + + * Modify the CM_CONFIG_DATA_MAGIC value to include a + CM_CONFIG_DATA_VERSION number which value be used to force the + replacement of the cache file contents when incompatible changes + are made between releases. + + * CM_SCACHESYNC_ASYNCSTORE should not be ordered by + cm_SyncOpCheckContinue + + * Avoid calls to multi_Rx if nconns == 0 + + * Modify smb_WriteData to perform background writes based upon the + crossing of 'smb_AsyncStoreSize' boundaries instead of cm_chunkSize + boundaries. This will slow down writes from the SMB interface but + will avoid the risk of the CIFS client disconnecting from the AFS + client SMB server. The default value for 'smb_AsyncStoreSize' + is 128K. + + * SMB AsyncStore functionality is on by default but can be + disabled using the registry value: + + HKLM\SOFTWARE\OpenAFS\Client DWORD "EnableSMBAsyncStore" + + smb_AsyncStoreSize can be adjusted with + + HKLM\SOFTWARE\OpenAFS\Client DWORD "SMBAsyncStoreSize" + + The value must be a multiple of the buffer block size + and cannot be larger than the chunk size. + + * Do not leak a read lock on the bufCreateLock + + * Do not forget to call cm_SyncOpDone if cm_SyncOp succeeded + in cm_CheckNTOpen() + + * In MergeStatus, only remove clean buffers from the hash table. + + * Avoid the need to update the data version number on each buffer + associated with a scache when MergeStatus is called after a + StoreData by maintaining a range of valid data versions as part + of the cm_scache_t object. + + * Profiling shows large numbers of blocked calls in cm_HoldSCache + from cm_HaveAccess... We can safely avoid the call so do so. + + * Add "ForceAnonVLDB" service parameters registry value. Default + is 0. Set to 1 to force the use of anonymous connections to + the VLDB servers. This is useful when using krb5 tokens and the + VLDB servers have not been updated. + +Since 1.5.31 + * Do not attempt to search for a cell name that matches one + of the special share names "svrsvc", "wkssvc", "ipc$" + + * Issue permission denied warnings from afscreds if attempts + to modify the startup shortcut or registry values fail. + This happens under Vista UAC. + + * Do not return BAD_NETWORK_ERROR in response to attempts + to create directories or files in the Freelance root.afs + volume. Instead return ACCESS_DENIED. + + BAD_NETWORK_ERROR was being sent because the Freelance cell + has no vldb servers. Short circuit the error by testing for + freelance in CreateFile and MakeDir + + * Treat srvsvc, wkssvc and ipc$ as pseudo files. Permit them + to be opened and closed without actually existing. For now + we treat them as equivalent to ioctls but this should + eventually change. + + * Fix RAP processing to not reject names that exist in the + root.afs volume for GetInfo queries. + + * In afscreds, use GetUserNameEx to obtain the username instead + of searching the registry. Try UserPrincipalName first and + fallback to SamCompatible. + + * Stop linking to rpcns4.dll which is no longer supported on + Vista and 2008. TaAfsAdmSvr is going to have to be + redesigned. + + * When processing dfs referral requests, if the sharename is + a partial match and therefore will not be added automatically + to the share list, make sure that we return an error. + + * Avoid a crash when logging VNOVOL errors returned from + cm_CheckOfflineVolume. + + * When trace logging is disabled, do not permit osi_LogSaveString + to perform the string copying. By disabling the string + copies, throughput of the service more than doubles. + + * when checking offline volumes, update the cell vlserver info + if required and don't perform a check if there are no servers + in the list. + + * Add volumes in the vl_unknown state to the list of objects to be + checked as offline or retried when an allbusy error is received + in cm_Analyze. + + * Add support for configuring rx_ExtraPackets + + * All calls to buf_Get() must be protected by a read lock on the + cm_scache_t bufCreateLock + + * When a MergeStatus results in the invalidation of buffers, do + not remove buffers from the hash tables that have active references. + + * Upon receiving a VNOVNODE error from a file server, be sure to + invalidate any file locks. This prevents on-going attempts to + extend the locks and will cause subsequent attempts to access + the file to receive a invalid handle error. + + * Prevent smb_ReceiveTran2SearchDir from adding terminating NULs + to directory entry names. + + * No longer discard tokens when RXKADBADTICKET error is received. + Instead return STATUS_NO_KERB_KEY error. + +Since 1.5.30 + * Add "cmdebug -cellservdb" option and client service + implementation permits querying the vldb server for each + cell known to the cache manager. The output is in a form + that permits it to be used as a CellServDB file. + + * Add Symlinks->Show option to the AFS Explorer Shell Context + Menu + + * Prevent buffer overrun in the cmd parser used by command + line tools such as fs, vos, pts, etc. + + * The path ioctl operations have several issues: + + (1) the specified path for "fs examine, whereis, whichcell, + flush" and so always has the follow symlinks and mount + points semantics. This makes it impossible to determine + what the FID of a symlink or mount point is. + + (2) "fs examine" out is not the result of a single pioctl + operation but is actually the combined output of half + a dozen operations. Path evaluation is an expensive + operation. It would be faster if the caller could + evaluate the FID first and then perform all of the + rest of the operations by specifying the FID instead + of the path. + + (3) fs output reports all objects as files. By adding a + GetFileType pioctl more informative output can be provided + that indicates what type of object the path evaluates to. + + (4) the Windows fs command includes a number of commands that + do nothing but exist only because the Unix cache manager + supports them. + + A new extendible data structure cm_ioctl_query_opts_t has been + added which can be optionally specified with pioctls that do not + already require input data. The first two fields of this structure + are 'literal' and 'fid'. The literal field is used to indicate + whether the last component of the path should be evaluated following + symlinks and mount points. + + The fid field permits a fid to be specified. + + * A new GetFileType pioctl has been added. The type of objects are + now output. + + * A new "-literal" option is available for "fs examine, flush, whereis, + and whichcell. + + * Unimplemented fs commands have been removed. + + * There are circumstances where a volume object is being accessed and + the volume is marked indicating that the volume location information + is out of date but where it is also pointless and perhaps dangerous + to block waiting for the rpc to complete. One example is when + processing the cmdebug requests. If we know that we are not going + to use the volume object to contact a server, then we can now set + the CM_GETVOL_FLAG_NO_RESET flag. + + * when moving up in the directory tree we search the recorded fid list + to find a matching fid that we have already crossed. we must also + reset the fid count based upon what we discover. + + * Cell names are published as share names. As a result they are searched + for as part of the Dfs Referral evaluation. If share "foo" can not be + reached, the CIFS client will fallback to searching for "fo" as well. + + Since the freelance client automatically adds a symlink for prefixes + of the cell name, this results in both "foo" and "fo" being added to + the freelance root.afs volume. This patch prevents that negative side + effect. + + * when tracking Kerberos credential cache names be sure to include + the cache type prefix. + + * Microsoft has assigned OpenAFS a network type value + + * The algorithms that were used to produce a Netbios name were broken. + The name that was produced when the hostname was too long was in fact + longer than the maximum permitted netbios name. + + Also, the "NetbiosName" value was not used as a suffix when the loopback + adapter was not installed. The hardcoded string "AFS" was used instead. + + * avoid another deadlock during server probes initiated by the ipaddr + change daemon thread. + + * prevent the afs client service from crashing when fs newcell is + executed + + * In the NSIS installer, move afslogon.dll, afscpcc.exe and afs_cpa.cpl + to \Program Files\OpenAFS\Client\Program in order to get them out + of the %windir% tree + + * EDQUOT == WSAEDQUOT. Define it in the right places so that in the + end STATUS_OUT_OF_QUOTA can be returned to the application. + + * Modify the search order for determining the location of CellServDB + and other client configuration files. + + 1. AFSCONF environment variable + 2. registry setting + 3. NEW - use All Users\AppData\OpenAFS\Client only if CellServDB exists + 4. use Program Files\OpenAFS\Client + + * More Vista Power Management tweaks + + * Close a socket handle leak in the kauth routines + + * Don't hold a cm_volume_t mutex across RPCs + + * Convert downTimes to use clock time instead of relative times. + This permits correct comparisons with expiration times. + + * Update the Wix installer to properly install the prerequisites + for translate_et.exe + + * Do not translate pioctl paths as they are not converted by the + file system stack. + + * Implement multi_rx probes for checking whether servers are up + or down. Turns probes into a constant time activity instead + of one dependent upon the number of known servers. + + * Treat VNOVOL errors the same as VOFFLINE. Do not force an + update of the volume location data and retry. VNOVOL means + that the volume could not be attached. It doesn't mean that + the volume is not on this server. + + * Modify the Explorer Shell AFS Context menu Symlink->Add to + not attempt to validate the target path. There is no reliable + method of doing so. + + * Improve performance of \\afs\\ + access by eliminating extraneous attempts to search the + CellServDB file and DNS AFSDB records. Share names + containing '%' or '#' are not valid cell names. + + * Return STATUS_RANGE_NOT_LOCKED if the application attempts + to unlock a range that is not currently locked. + + * Enable the 32-bit tools to read the 64-bit registry keys + when executing in the WOW64 environment. + + +Since 1.5.29 + * Fix buffer refcount leak introduced in 1.5.29 + + * Prevent the NIM AFS Provider from crashing when configured to use + Kerberos v4 for token acquisition in situations where no Kerberos v4 + support is available. For example, 64-bit KFW or sites that delete + the Kerberos v4 DLL. + + * In afsd_init.log, support logging cache sizes greater than 2GB. + + * The volume status output of "fs examine" was being determined based + upon the wrong error value. Instead of using the pioctl() return + code, the errno value must be used. + + * Prevent invalid pts auto-registration attempts by aklog and the + NIM afs provider when Kerberos referrals are in use. (krb5 1.6+) + + * Add synchronization protection to all of the SMB Listener State + variables. This prevents race conditions when the addition or + loss of a network adapter takes place. + + * On Vista, there is a race condition between the restart of the + afs client service and the network adapters. Ensure that the + afs client service can handle switching between loopback and + non-loopback modes of operation. + + * Fix FollowBackupPath to work with mount points that are not + explicitly read/write. + + * Fix a deadlock that has been observed on Vista while resuming + after at least four hours of sleep. + + * Add new HKLM registry configuration options that can be used + to provide configuration hints to the NIM AFS Provider when + creating new identities. See release notes for details on + HKLM\SOFTWARE\OpenAFS\Client\Realms\. + +Since 1.5.28 + * Speed up write buffer operations by holding a global read-lock + instead of a write-lock when updating the buffer data version + number. The data version is protect by the associated stat + cache mutex. + + * Speed up read buffer operations by removing out of date buffers + from the buffer hash tables. + + * Protect against a null pointer dereference in afslogon.dll + if QueryAdHomePathFromSid() fails. + + * Remove a race condition while accessing private freelance data + structures. + + * Update the buffer data versions when Freelance directory data + changes. + + * Complete the implementation of smb_ReceiveTran2GetDFSReferral(). + Critical for Vista. + + * Return EAS_NOT_SUPPORTED in response to EA read/store/query + instead of returning zero length. + + * Return ERROR_RETRY when a server sends VBUSY. + + * Return PATH_NOT_COVERED instead of BADSHARENAME for DfsLinks when + a volstat plug-in is in use. + + * Enhance the volstat interface to support Dfs path mappings. + + * Fix "symlink list" to do the right thing for Dfs links + + * Fix callback expiration that was broken in 1.5.27. + + * Fix a crash at shutdown caused by the lack of synchronization + within the daemon threads (cm_Daemon, cm_BkgDaemon, cm_IPAddrDaemon) + + * Hold the cm_server_t mutex while walking or modifying the + cm_server_vols_t list in order to avoid a race condition. + + * Ensure that the cm_server_t refCount is safely modified. + + * The pthread library implementations of pthread_cond_wait + and pthread_cond_timedwait were failing to return with + the mutex held when error conditions occurred. This could + result in race conditions wherever they are used. One case + in which problems were seen was the Rx event_handler(). + + * Prevent cm_GetBuffer() from locking all buffers associated with + a stat cache object before deciding if the current buffer is up + to date. + + * Fix cm_BkgPrefetch to actually ensure that there is a cm_buf_t + object for each offset that we will attempt to reserve. + + * Reduce the default number of background daemon threads used to + prefetch or store to one in order to prevent two or more threads + from stepping on each other. + + * Reduce the default chunk size to 256KB in order to prevent read + timeouts on low bandwidth connections. + + * Fix a race condition that could result in threads becoming stranded + when synchronizing multiple requests on the same stat cache object. + +Since 1.5.27 + * The GiveUpAllCallBacks functionality that was added in 1.5.21 + has been disabled. It has been disabled because it turns out + that the RPC is improperly implemented in all file servers + previous to 1.4.6. The RPC is executed without the proper + locks being held resulting in data corruption and eventual file + server failure. The functionality will be re-enabled in a + a few months. + + * a couple of .readonly Volume Callback optimizations were + implemented: + - Apply most recent volume callback to all stat cache objects + in the volume. This avoids premature callback expirations + and unnecessary FetchStatus calls. + - Add option to permit attempts to renew .readonly Volume + Callbacks on a periodic basis to avoid invalidation of stat + cache data. [Requires daemonCheckVolCBInterval be set to + non-zero number of seconds. 1800 (30 minutes) is suggested.] + + * Adds support for 64-bit data version values. Previous releases + only supported 32-bit values. Larger values sent by the file server + would result in rollover. + + * aklog and asetkey no longer generate an exception if Kerberos for + Windows is not installed. + + * If the LSA authentication functions report a temporary out of memory + condition, fail the current authentication and do not cause the AFS + client service to terminate unexpectedly. + + * When the AFS client service is shutting down, prevent the daemon check + thread from executing additional checks which might attempt to access + discarded locks or unmapped memory. + + * Correct a double free condition in the NIM AFS credentials provider. + + * Add "FollowBackupPath" service parameter registry value. + This provides equivalent functionality to the UNIX afsd -backuptree + option. When set to a non-zero value, normal mount points originating + in a .backup volume will prefer a .backup volume. + +Since 1.5.26 + * Fix NSIS uninstall from the .MSI installer. + + * Add Stack Frame logging for AMD64 + + * Add support for EWOULDBLOCK to cm_Analyze. If the file + server returns EWOULDBLOCK, retry the request every two + seconds for up to the RDRtimeout. + + * Reorganize the order of the includes to ensure that EWOULDBLOCK + is not assigned the same value as EIO. + + * Update CellServDB to GCO Public 25 Oct 2007 + + * Add additional validation and error handling code after + each call to getSlot(). If an invalid slot is returned, + return NONODE. If the invalid slot is returned when + extracting a data node, invalidate the tree. + + * Modify compareKeys() to always perform a case-insensitive + comparison and only perform a case sensistive comparison + if the case-insensitive one matches. This ensures the + ordering is consistently reported. + + * Add lock assertions to ensure that all calls are being + performed with the correct locks being held. There have been + some crash reports that provide stack data that does not appear + to be possible unless there is a race. However, there are no + obvious locations where the race is taking place and the test + suite indicates that all of the correct locks are being held. + We shall see what happens in the field. + + * For consistency replace all calls to findKey in which the range i + s (1,numentries) with calls to getSlot(). + + * Optimize the depth search loop by testing the slot value in the + for statement instead of forcing the loop to be broken later. + + * Reorganize the locking for cm_BeginDirOp and cm_EndDirOp. + There are a number of locations where locks are obtained, dropped, + and reobtained. This reorganization attempts to accomplish several + things: + + (1) be optimistic for the most common case so it will be fast + + (2) add consistency checks after each location where locks are + dropped and re-obtained. If we lose a race in cm_BeginDirOp + and the bplus tree is out of date, retry until we get to a + consistent state that we can use. + + (3) Ensure that all operations take place with the correct locks. + + * One of the issues that has become a serious problem since the + addition of the local directory updates is that although cm_SyncOp + synchronizes operations, it does not preserve the order of requests. + This has always been a problem in that it has been possible for a + request to fail to complete due to its worker thread's bad luck. + When a request takes longer than the Windows SMB Redirector's timeout, + the SMB Redirector tears down the SMB virtual circuit. + + When using the local directory updates it is really important that + the directory update operations complete in the order that they were + sent to the file server. If they don't, then the local directory state + and the file server state will not match and the local directory state + must be discarded which in turn forces a new read of the entire + directory contents over the network. + + This patch adds a new cm_scache_waiter_t object that is used to store + the current thread, buffer, and syncop flags within a waiters queue + on each cm_scache_t object. If a thread is forced to sleep in + cm_SyncOp, upon waking it will check to see if there are any other + threads waiting that are attempting to perform a similar task ahead + of it in the queue. If yes, the thread goes back to sleep. If not, + it goes ahead and enters the cm_SyncOp conflict resolution block. + + This patch has the additional side effect of reducing the number of + competing threads that must obtain the cm_scache_t mutex and process + the cm_SyncOp conflict resolution block. As a result, the overall CPU + utilization of the service and the clock time associated with processing + requests will be reduced. + + * assert that the cm_scache_t mutex is held when calling + buf_ForceDataVersion(). + + * rename findNode to leafNode in bplus_Lookup + + * replace all OutputDebugString calls with osi_LogX calls + + * modify bestMatch to special case the return values for leaf nodes. + If an entry is above or below the values available in the leaf node + return BTLOWER or BTUPPER instead of BTERROR. + + * In insert and delete operations check for BTLOWER/BTUPPER and isleaf, + if true convert to either slot 0 or Max and perform the insertion. + This produces easier to read code when performing lookups. -Since 1.4.3-rc1 (1.4.3-rc2 released 13 Feb 2007) + * modify lock_AssertXXX macros to call osi_assertx() and provide a + descriptive message. - * no changes + * the difference between osi_assert() and osi_assertx() is whether or not + a description is specified as part of the call. When no message is + specified afsd_notifier() is called with a NULL msgp parameter. This + results in a null pointer dereference during the EventLog() call. -Since 1.4.2 (1.4.3-rc1 released 15 Jan 2007) + As a result, none of the information describing the assertion is written + to the log file. - * Increase the maximum number of stat cache entries to 262144 + This commit sets a default message for use when no other message is + provided and it replaces all calls to osi_assert with osi_assertx and + adds descriptions. + + * Migrate B+ tree search key into thread local storage + +Since 1.5.25 + * Fix an uninitialized variable in lana_IsLoopback() which + could result in a random determination that a loopback + adapter is not a loopback adapter. This would result in + a computed Netbios service name of %MACHINE%-AFS instead + of AFS. This is a serious problem if the value computed + by the AFS Client Service and the client process pioctl + calls produce different results as it will result in a + communication failure. + + * Fix a crash in the B+ Tree code that results when a file + rename only results in a change of case. + + * Fix the pioctl path parsing. The previous algorithm + broke the current directory of the client into two parts, + the TIDpath which represented the device root and the + relative path. The problem is that this is not sufficient + from proper processing of symlinks and mount points. + + What is required is that the last component of the path + must not have the symlink or mount point be evaluated + whereas symlink and mount point evaluation must be performed + for the rest of the relative path. Therefore, the path is + now split into three parts: TIDpath, intermediate path, + and last component. + + "fs examine" now reports the data of the symlink or mount + point object instead of the target and "symlink list" and + "symlink remove" now works. The "Explorer Shell Extension" + menu now is displayed for symlink objects. + + * More informative symlink.exe error messages. + + * When the cmd.exe "del" command is used to remove a symlink, + not only was the link object removed, but the stat cache + object for the target was marked deleted. This resulted + in cache corruption which would require the destruction + of the cache to correct. + + * Add undocumented registry value, "OfflineReadOnlyIsValid" + which results in cached contents from read only volumes + to be treated as valid when there is no callback registered + and all servers are down or all instances are offline. + + HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters + + * Add documented registry value, "AcceptDottedPrincipalNames" + which is used to permit the acquisition of AFS tokens + using Kerberos v5 principal names which include a dot in + the first component. + + {HKLM\HKCU}\Software\OpenAFS\Client + + * "fs uuid" does not require "AFS Client Administrator" group + membership to display the current UUID value. + +Since 1.5.24 + * Update NSIS installer to version 2.30 + + * Update Wix installer to version 2.0.5325 + + * 64-bit KFW support: + - Network Identity Manager plug-in + - 64-bit aklog + - 64-bit krb5 enable afscreds.exe, afs server manager, + etc. - * When offline folders are being used, the CIFS client passes - the name of the entry to be renamed in all uppercase instead - of the case specified in the Explorer Shell. Modify AFS to - permit the rename when there is an inexact match. + * Enable B+ tree Directory Search by default. - * VICECONNBAD and VICETOKENDEAD should force the use of a new - rx connection. They should not be treated as fatal errors. + * NIM plug-in is now compatible with FILE: ccaches - * Fix afslogon.dll to not publish environment variables into - the subprocesses started from winlogon.exe + * Install instloop.exe into Client/Programs/ even though + it isn't required. Permit it to be used by organizations + that clone Windows systems. - * Fix afslogon.dll to initialize and uninitialize winsock so - that Kerberos 4 send_to_kdc() can succeed + * On a suspend, only drop callbacks for servers that + are online. If the server is offline, maintain the callback + until the server is once again available. - * Add DeleteReadOnly registry value. When a file has the read-only - attribute set in Windows, it cannot be deleted. DeleteReadOnly - when set to a non-zero value permits the deletion. 1.4.3 no - longer permits it by default. + * Prevent against acquisition of a directory write lock when + there are no updates to be performed. This was resulting + in a write-lock leak which later on would lead to a deadlock. - * When opening a directory, CIFS read privilege requires PRSFS_LOOKUP - not PRSFS_READ. + * Add configurable file pre-fetch mode. For files that match + the specified file extensions, pre-fetch the entire file into + the cache. -Since 1.4.2-rc4 (1.4.2 released 16 Oct 2006) + HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters + (MULTI_SZ) PrefetchExecutableExtensions - * Disable DNS Registrations for the Loopback Adapter and make sure - that Netbios is turned on during installation. + * Fix the client_osi large integer support so that return values + can be properly assigned to large integer variables. + + * Do not hold cm_scache_t mutex across cm_GetCell() calls + since cm_GetCell() can block in a RPC. + + * Add short file name support to B+ tree searches. + + * Resolve a conflict between the desire to notify file servers + that the client workstation is suspending and the desire to + permit objects with valid callbacks when the client suspends + to continue to use those objects from the cache if the client + resumes without network connectivity. + + * Fix stack variables to ensure that all buffers storing paths + can handle AFSPATHMAX (1024) characters. Paths of 256 characters + would cause a stack overflow condition. + + * On Vista, force afs_config.exe to run with the highest privileges + available to the end user. For a user in the Administrators + group running under UAC, this will cause afs_config.exe to be + be run with full Administrators privileges after the user + approves the privilege escalation. + + * More VNOVNODE handling issues. If a dirty buffer cannot be + written due to VNOVNODE, clear the buffer and ignore the error. + If a cm_scache_t object has been marked deleted due to a VNOVNODE + error, the next time the smb_fid_t object that references it is + used return either NOSUCHFILE or NOSUCHPATH and close the + smb_fid_t object. Subsequent attempts to use the smb_fid_t will + result in an invalid handle error. + + * For Vista, set the RequestExecutionLevel of the NSIS installer + to "admin". + + * For the build environment, support the generation of manifests + when using the CL1310 (VS .NET 2003) compiler/linker. + + * There was a bug in OutputDebugHexString() which could overflow + a stack buffer resulting in unexpected process termination + of afsd_service.exe if the input Security Token contained + many bytes equivalent to the '%' char. + + * Add directory lookup statistics to "fs memdump" output. + - * Track thread id on read/write locks for debugging - purposes +Since 1.5.23 + * Windows uses case-insensitive file name pattern matching + but AFS is a case sensitive file system. The AFS3 directory + format is block based, uses network byte order and + includes a hash table for fast case sensitive lookups. + This causes several problems for the Windows AFS client. + (1) Traversing the directory blocks is cpu expensive + (2) A hash table miss does not indicate that the desired + entry does not exist. + (3) Determining whether a non-ambiguous inexact match or + the entry does not exist requires a linear traversal + of the entire directory. + These issues often result in 100% CPU utilization. + + These issues are addressed by building a modified B+ tree for + each directory and then using the B+ tree for searches. + + This feature is disabled by default. To enable it set + the "BPlusTrees" registry value to 0x01 in the AFS Client + Service Parameters key. + + * Correct a null pointer dereference in the symlink recursion + detection code. (Introduced in 1.5.22) + + * Add the Network Identity Manager AFS Provider to AMD64 + builds. + +Since 1.5.22 + + * A new registry value, "BlockSize", can now be used to adjust + the size of the internal buffers used to store file data. + The default is 4KB. When set, the values 1..1024 specify + multiples of 4KB. Values > 1024 specify actual block sizes + and must be multiples of 4KB. The actual block size in KB + can not be larger than the chunk size which defaults to 1MB. + + HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters + (DWORD) BlockSize + + * pts.exe and ptserver.exe built with -DSUPERGROUPS + + * Service Manager shutdown hints have been added. The hint + specifies that it may take the AFS client service up to two + minutes to shutdown. + + * Fix the recursion detection feature introduced in 1.5.22. + The previous implementation broke the evaluation of paths + using ../path or ./path. It also broke the evaluation of + symlinks to absolute paths. For example, /afs/cell/path. + + * Fix an uninitialized variable in cm_MakeDir that could result + in crash if the requested directory could not be created. + + * Fix a the VolumeStatusNotification log messages to save + the input string in the circular log buffer so garbarge + won't be output to afsd.log when the log is dumped. + + + * Increase the SMB Maximum Path length to 260 characters + from 256 as that is what CIFS supports. + + * On 64-bit Windows, use a unique description string for + the 32-bit AFS Shell Extension. + +Since 1.5.21 + + * In the AFS Admin Library, replaced all of the + Ubik_Call(XXX_RPC,...) calls with Ubik_XXX_RPC(...). This + allows parameter checking and proper type conversions to be + performed. This is crucial when passing parameters that are + 64-bit wide on systems in which 'long' is a 32-bit value. + Otherwise, the parameter list on the stack is interpretted + incorrectly and the function not only doesn't succeed but it + might corrupt memory and if lucky crash the application. + + The only program that we care about that uses this library + is the AFS Server Manager. Now it doesn't crash. + + * Fixed smb directory searches for non-wildcard names. The + optimized function should not have set the bulk in progress + flag. This would adversely affect later directory searches + that required a bulk search. + + * Detect infinite recursions (up to 512 stat cache objects + in a chain.) If an infinite recursion is detected, return + an error to stop the CIFS client from querying us forever. + + * Executables executed out of AFS name space can have their + pages swapped out by Windows. Those pages will be reloaded + when they are required. However, if the cache manager no + longer has a callback and all of the file servers with + the volume data are down, then the application will crash + due to the inability to read the required page. + + We now track the down time of each server. If the callback + expires after the server that issued it went down and all + servers are down, we delay the expiration to permit the data + in the cache to be continue to be used by Windows or an + application. + + * The Windows AFS client has always had very poor performance + with regards to directory management. In the case of + directory updates caused by create, rename,and delete operations, + the AFS cache manager will now perform local directory updates + when possible in order to avoid re-reading the directory from + the file server. This will be done in whenever both of the + following conditions are true: + + - the data version on the directory increased by one as a + result of the operation + + - all of the directory buffers necessary to make the change + are present in the cache + + * The error message in the AFS Control Panel describing the + need to be a Windows Administrator has been replaced with + a message describing the need to be in the AFS Admins Group. + + * If the vldb server list is empty when attempting to evaluate + a cell mountpoint it was possible for a crash to occur. This + can only happen if there is an existing mount point and the + is a failure attempting to load the server list from the + CellServDB file or via AFSDB queries. + + * dirty buffers only have their dirty bytes stored to the file + server instead of the entire chunksize + + * the default chunksize has been increased from 128KB to 1MB + + +Since 1.5.20 + + * changed the enum values for cm_serverRef_t state info to use a + private name space to avoid collisions (srv_) + + * added a srv_deleted state for cm_serverRef_t objects. This + state is set when cm_FreeServerList() is called with the + CM_FREESERVERLIST_DELETE flag set. cm_FreeServerList() may + not always delete the cm_serverRef_t from the list if it is + still in use by another thread. the srv_deleted state means + the object's contents are no longer valid and it must be + skipped. It will be deleted the next time the object is + freed and the refcount hits zero. + + * the srv_deleted state is also used when a file server reports + either VNOVOL or VMOVED instead of marking the cm_serverRef_t + as offline. This is done to prevent additional usage of the + stale vldb data while waiting for the update volume request + to complete. + + * added a state field to the cm_volume_t object (enum volstate + vl_ name space) that maintains the state of the volume based + upon the states of all of the cm_serverRef_t and cm_server_t + objects. + + * modified cm_UpdateVolume() to set the state of the cm_volume_t + RW, RO, and BK to either vl_alldown or vl_online. There can't + be any other states because cm_UpdateVolume() destroys any + previous knowledge we might have had regarding busy or offline + volume status + + * modified cm_UpdateVolume() to update the volume name in the + cm_volume_t to the volume base name if the previous value was + a volume ID. + + * modified cm_FollowMountPoint() to check to see if the volume + name is a volume ID and if so call cm_GetVolumeByID instead + of cm_GetVolumeByName. This ensures that volume IDs are always + looked up as numeric values. There is no longer a need to + maintain a separate cm_volume_t containing the string representation + of the ID value. + + * Added a flags parameter to cm_GetVolumeByName() and cm_GetVolumeByID(). + The first flag is a "CREATE" flag which is set by all existing + calls. The flag is not set by calls to cm_GetVolumeByID() from + the server probe code when volume status is being updated. We + do not want the server probe operation to result in additional + turnover in the cached volume data. The second flag is NO_LRU_UPDATE + which is set when the server probe code updates the volume status. + This flag will be used to prevent the server probe operation from + changing the order of the least recently used queue. + + * Modified cm_GetVolumeByName to ensure that only one cm_volume_t is + allocated for a given set of normal, readonly, and backup volumes + regardless of whether or not the volume is accessed via name or + ID number. The cm_volume_t namep field is always the base name + of the volume. + + * Added a new volume state, vl_unknown. This state is used as + the initial state for all cm_volume_t when the cache manager starts, + for each cm_volume_t at creation, and for each cm_volume_t when + recycling. The cache manager does not know the state of all + volumes in the world, only those that are in the cache and for + which it has queried the VLDB and hosting file servers. + + * modified cm_GetVolumeByName() to initialize the state of a + volume to vl_unknown. The actual state will be set when a + cm_VolumeUpdate() call completes successfully. + + * changed name of scache hash table variables to avoid ambiguity + when adding hash tables for volumes + + * fix a buffer overrun in sys\pioctl_nt.c pioctl(). + + * modified cm_UpdateVolume() to handle the case in which there is + no RW volume but there is are RO volumes for a given base name. + This is done by querying for the ".readonly" volume name if the + base name does not exist in the VLDB. We never query for the + .backup name because under the current usage model a .backup + volume may only exist on the server that the read-write volume + is located. If there is no RW volume, there can be no .backup. + + * Added four hash tables for cm_volume_t objects to improve the + search time of cm_GetVolumeByID(), cm_GetVolumeByName() and + cm_ForceUpdateVolume(). One each for Name, RWID, ROID, and + BKID. Three ID hash tables are necessary as long as it is + desireable to maintain a single cm_volume_t containing all + of the related RW, RO, and BK volume data. Having the RW and + RO volume data in the same object is necessary for the + implementation of cm_GetROVolumeID() which returns either the + RO or RW ID depending upon the existence of RO volume instances. + + * Added a volume LRU queue so that volume reuse becomes fairer. + This does not replace the all Volumes list which is used when + it is desireable to walk a list of all the volumes whose order + is not going to change out from underneath you which makes it + safe to drop the cm_volumeLock. + + * handles volume hash table updates where volume name to + volume ID number changes. The volume name remains + constant in the cm_volume_t. if a vos rename is performed, + the name of the volume will change and the volume IDs will be + updated. Subsequent access to the old volume ID will create a + new cm_volume_t with the new name. + + * Added a daemon thread operation to query the state of volumes + listed as busy or offline. cm_CheckBusyVolumes() calls + RXAFS_GetVolumeStatus() for each volume ID that is marked vl_busy + or vl_offline. If the volume is now online, the status on the + volume is updated. The default period is 600 seconds. This can + be configured with the BusyVolumeCheckInterval registry value. + + * Added prototype for smb_IoctlPrepareRead() which was missing a + return type in the function definition. + + * Added volume id lists to the cm_server_t. These lists are + allocated in blocks of ~32 IDs. When a cm_PingServer() + detects a change in server state, the state of the cm_volume_t + is updated. + + * Added volID to the cm_serverRef_t object. volID is used + to identify the volume for which the object is a referral. + cm_FreeServerList() uses the volID to remove the volume + from the cm_server_t. + + * In cm_Analyze, when VNOVOL or VMOVED are received, + call cm_ForceVolumeUpdate() to force a refresh of the volume + location data. + + * Added cm_VolumeStatusNotification() which is used at the moment + to log volume status changes to the trace log. It will also + be used as the access point to the File System Filter driver + notification engine. + + * Added an all cm_scache_t list to cm_data. This replaces the use + of the stat cache LRU queue when we need to enumerate all + entries. The LRU list order is not static and when using it to + enumerate all entries it can result in items being missed or + items being processed more than once. + + * Modified cm_Analyze(). Instead of reseting the busy or offline + state of a volume and forcing a retry of the operation + cm_Analyze will defer to the background daemon thread that will + update the state once every 600 seconds. + + * Added the automatic generation of a Freelance ".root" read-write + mountpoint that refers to the root.afs volume of the workstation + cellname at the time the mountpoint is created. + + * re-write cm_Analyze to make better use of the known volume + status. VL_Server queries cannot result in CM_ERROR_ALLOFFLINE + messages. + + * renamed cm_CheckBusyVolumes to cm_CheckOfflineVolumes. + busy volumes will be reset to srv_non_busy by the function + but there is no mechanism for querying the busy state other + than by attempting to access the resource. + + * cm_Analyze will query the state of an offline volume before + deciding whether or not to retry when all volume instances + are offline. + + * the algorithm used after an IP address list change detection + has been modified. we now check the state of the VLDB servers, + then reset the rx connections, and finally check the state of + the file servers. Previously we flushed the rx connections + and then checked the servers in whatever random order they + were first discovered. + + * fix the volume status reported by "fs examine" + + * various improvements to the AFS Network Identity Manager Provider. + - Don't access freed objects after the window has been destroyed. + - Write back the AFS cell list in the identity configuration + even when its empty. + - Disable all use of the provider when AFS is disabled for a + particular identity. + + * Fix cm_cell_t leak. When evaluating a mountpoint that uses an + alias instead of the full cellname, double check the full cell + name and see if we have a matching cell before allocating a new + one. + + * Dump more data with "fs memdump". All volumes and scaches and + now cells. - * Change trace log end of line to CR-LF so that the log can - be read with notepad.exe + * Reverse the order of the all cells list. This ensures that + the workstation cell is always first in the list. + + * If we recognize the server from which a callback revoke was + received, then we can ensure that we only invalidate the status + information for cm_scache_t objects belonging to that cell. + + * When building for amd64, use APPVER 5.02 as we do not support + 64-bit Windows 2000 and explicitly state the machine type in + the link flags. + + * no longer treat VMWare network adapters as equivalent to a + loopback adapter. For some unknown reason, publishing the "AFS" + netbios name on them frequently results in a name collision + error. + + * Use read locks whenever possible instead of write locks when + walking the allCellsp list. This permits better use of multiple + CPUs. + + * In 1.5.20 a bug was introduced by the fake status when PRSFS_READ + is not present on the directory optimization. It would report + mount points and directory objects for which there was no + status information as a zero length file. Instead we can use + the vnode number of the object to determine if it should be + considered to be a directory or a file. If it is odd it is a + directory; even it is a file. + + * Give Back Callbacks to the file servers in response to suspend + and shutdown power management events. Only give up callbacks + to UP servers and do so with a very short RX dead timeout. + (10 seconds) + + * Fix a race condition in the SMB FID cleanup code that could + result in a stat cache mutex never being released. + + * Fix the graphics files that are installed as part of the + IBM Administrators Guide. + + * Change the behavior of pioctl path parsing to not follow + symlinks or mount points during evaluation. This results in + the FID being the symlink or mount point and not the object + they point to. This is consistent with the behavior of the + UNIX client. + + * Enable AFSDB record lookup for command line tools such as + "fs" and "vos". + + * CellServDB update 2007-07-05 + + * Added a Volume Status Plug-in Interface that permits third parties + to receive notifications when the volume state changes occur. + + * Ensure that all writes to the afsd_alloc.log file use CR-LF. + + * Prevent the afsprocmgmt.dll from being unloaded while the + background thread it starts is running. + + * Avoid a race condition when closing smb_fid_t objects. + +Since 1.5.19 + * fix install path of IBM Quick Start Guide when installed by + the Wix installer + + * fix the client so that it can write into directories with + only 'li' permissions. + + * fix installation of 32-bit Shell Extension for 64-bit systems. + Install it under its own HKCR keys. + + * modify the wix installer to remove and upgrade install packages + with the same version number. + + * when flushing volume location data every two hours or in + response to "fs checkvolumes", also flush the mount point + links in order to force their re-evaluation. + + * aklog was copying an uninitialized buffer as part of the + foreign cell automatic pts registration + + * when obtaining directory listings, check for read permission + on the directory. If read permission does not exist, fake the + status information for the directory entries. This improves + performance, prevents the client from pounding the file server, + and prevents leakage of cached status information. + + * "fs getcacheparms" output was incorrect. + + * NetIdMgr AFS Provider should only automatically add token + acquisition for cell foo.com if the realm of the cell matches + the realm of the identity. + + * Fix a null pointer dereference in cm_MergeStatus() + +Since 1.5.18 + + * network identity manager provider: + + - Correct for the fact that pr_CreateUser tampers with the + contents of the username input buffer. + + - Take into account that the krb4 credential data structure + does not have separate realm fields for the user and service. + When krb524 is used with a cross-realm ticket, the realm + describes the service not the user. + + * Many integrated logon changes: + + - Fix eventlog reporting. Do not attempt to log an event + if the event source registration fails. Use DebugEvent0 + instead of DebugEvent when there are no parameters. + + - Modify the LOOKUPKEYCHAIN macro to recognize ERROR_MORE_DATA + errors. + + - Fix the reading of Domain specific configuration for + LogonScript and TheseCells. Previously the dwSize value was + being overwritten so that subsequent RegQueryValueEx call + would fail. + + - Fix a memory leak in the TheseCells reading code. + + - Add support for Domain specific "Realm" specification. The + realm is the realm to be appended to the username. When + logging in as a domain or to the local machine, the specified + "Domain" name is not going to be a valid realm name. + + - Construct a proper principal name based upon the domain + specified realm for use in obtaining tokens with KFW. + + - If the domain specified "TheseCells" list includes the + default cell, do not obtain tokens twice. + + * An unprotected call to the Kerberos v5 function, + krb5_free_context(), can result in an invalid memory access + exception if the contents of the krb5 profile, krb5.ini, cannot + be parsed correctly. The error is located within the afskfw + library which is used by afscreds.exe, afssvrmgr.exe, and + afslogon.dll. When the error is triggered within afslogon.dll + a blue screen condition can occur when the winlogon.exe system + process terminates unexpectedly. + +Since 1.5.17 + + * Do not stop the afs client service with an assert + if the cell name cannot be determined when responding + to a "fs whereis" command. + + * Integrated Logon (afslogon.dll). No longer attempt + to preserve Kerberos 5 tickets for the logon session + as that job is now supported by KFW 3.1 and above. + + * The Network Identity Manager plug-in will attempt to + remove expired service tickets from the cache. + +Since 1.5.16 + + * CellServDB update - GCO Public CellServDB 09 Mar 2007 + + * AFS Server Manager and AFS Account Manager data cache + moved from HKCU\Software\TransarcCorporation to + HKCU\Software\OpenAFS to prevent crashes due to data + format changes. + + * Reduce the default UP server probe time from 10 minutes + to 5 minutes to match UNIX. This will not solve the NAT + port mapping timeout issue because most NATs default to + a value less that 5 minutes and this value ensures that + the afs client server will start probes 5 minutes after + the last probe set ended. The probe period for any one + server is therefore longer than 5 minutes. The more + servers in the list the longer the time between probes. + + * Before marking a server as down in cm_Analyze, retry the + request using a new rx connection to the server. If the + cache manager is behind a NAT, it is possible that the + response from the server is being sent to the original + address:port from which the rx connection was established. + This will appear to the cache manager as the server being + down when in fact it is not. Forcing the use of a new rx + connection will result in the server responding to the + most recent address:port assigned to the client by the NAT. + + If the server is in fact down, it will simply take a little + longer to notice it. - * increase the number of buffers checked in any one pass - of the background synchronization thread to 1/10th per - five second period +Since 1.5.15 - * fix a stat cache entry reference count leak when the - file server returns VNOVNODE + * Removing a directory that contained entries was failing with + the wrong error code being returned to the CIFS client. - * in an obscure error case, obtain the correct lock so - that when we free it we don't panic + * rxdebug -long + + * rxdebug exponential back-off. don't take down a server that + is already struggling to respond. + + * Network Identity Manager plug-in registers help on the Help + menu if it is supported by NIM. (KFW 3.2 and above) + + * Plug-n-play networking did not always work after coming back + from a Windows Suspend. The AFS client service failed to + re-compute the LAN adapter to bind to and instead attempted + to bind to all LAN adapters. This would polute the public + network with the name "AFS" which could lead to conflicts + between machines. + + * Build installers using Microsoft Hotfixes provided at + http://tinyurl.com/243svk for Visual Studio C RunTime Library + Daylight Savings Time issues. + + * "fs checkserver" does not require admin privileges unless + the probe interval is being changed. + +Since 1.5.14 + + * A reference leak was discovered in the mountpoint traversal + functionality which resulted in cm_volume_t objects not becoming + eligible for re-use. This will trigger a panic condition when + more than the maximum number of volumes is accessed. + + * Fixed the success test for the "fs memdump" operation. Success + is now reported as such. Added cm_volume_t object information + to the dump file. + + * A data corruption error has been fixed. Write requests + queued for background processing were not retried upon failure. + This leads to inconsistencies between the contents of the file + in the local cache and the contents of the file on the file + server. + + The implemented fix is to re-queue any request that has failed + due to timeout, volume busy, volume offline, server busy, or + server offline. Requests are not processed while all servers + for a volume are inaccessible. When servers become accessible + the background request will be retried. + + In addition, if a background write fails, do not mark the buffers + as clean. Failure to preserve the dirty flag prevents the buffers + from being written to the file server in the future. + + This fix does not address the possibility that the credentials + necessary to perform a write request might expire between the + time the request is queued and when the request can be processed + due to server accessibility. + + * The Freelance volume does not support per user ACLs. The + cm_HaveAccessRights function did not handle this special case. + Requests for privileges greater than read|lookup would result + in afsd_service.exe entering an infinite loop. ISOBuster is + known to cause this behavior. + + * When deleting files, the SMB Server would attempt to obtain + the access permissions for the parent directory instead of + for the file itself. This would result in an incorrect + assessment of whether or not the file can be deleted. + + * The Network Identity Manager AFS plug-in has had its string + tables updated for consistency with the language used by NIM. + All credentials are referred to as credentials instead of tokens. + Drop-down combo boxes now in fact drop down. + + * The AFS Salvager was not properly being built on Windows. + This is relevant only if the AFS servers are in use. + + * The default signal handlers for the AFS servers incorrectly + processed SIGQUIT. Instead of stopping the server, an + exception was raised. + + * Fix another volume refcount leak. This one was triggered by + an inability to contact the vlservers in order to update the + file server list. + + * Fix checklist control used by the drive mappings tabs in + afscreds.exe and afs_control.exe. + + * Improve output of "fs memdump" related to buffer management. + + * Fix refcount leak of cm_buf_t objects when prefetching buffers + already in the process of being fetched. + + * Improve cache performance by computing the buffer hash table + size based upon the number of buffers so that the average + number of entries in a bucket is seven. + + * Improve cache performance of read/write data by locally + updating the dataVersion of all buffers associated with the + file on each StoreData or StoreStatus operation provided that + the dataVersion was incremented by one and the dataVersion of + the buffer matched the original dataVersion of the cached + status information for the file. + + * When recycling cm_scache_t objects, make sure that we + clear all of the previous fields. It is no longer the + case that we can assume that the stat cache object is being + obtained only after a successful FetchStatus call. + InlineBulkStatus will allocate stat cache objects for which + the no status information is available. + + * When a file is being opened with the OPEN_ALWAYS disposition, + do not require write permissions when the file already exists + unless of course the file is being opened requesting write + access. + + * When a file has been opened for read-only access, if the + application requests an exclusive lock, obtain a read-lock + instead of a write-lock. The purpose of the exclusive lock + in this situation is to prevent changes to the file and the + full file read lock will provide this guarrantee. + + +Since 1.5.13 + + * Enforce Unix Mode Write bit to prevent file deletion of read only + files. + + * The CIFS READ and LIST permissions use the same value 0x0001. + When a directory is being accessed, check for PRSFS_LOOKUP + instead of PRSFS_READ. + +Since 1.5.12 + + * Fix computations of short names of mount points. They were + broken as part of the directory search optimization. (1.5.13a) + + * When all buffers are in use, periodically sleep the threads + waiting for a buffer to become free while the global buffer + lock is not being held in order to permit those threads that + can free buffers to do so. + + * Power Management improvements. Maintain a global flag that + specifies whether or not the service is in a suspend state. + Do not panic if Netbios() returns NRC_BRIDGE meaning that the + lana is no longer valid. Instead, stop the listener threads + and if all listener threads are stopped, reset the lana_list. + Allow the cm_Daemon() thread to periodically check the state + of the smb listeners. If they are all stopped and the service + is not suspended, attempt to restart them. If there are no valid + lanas, return to the stopped state. + + * CreateX and NTCreateX use cm_CheckNTOpen() to test whether or not + the user is permitted to obtain read or write locks. This function + would obtain the lock and then drop it returning whether or not + the lock could be obtained. If the lock was in fact required, + CreateX/NTCreateX would then obtain it with cm_Lock(). The problem + of course being that this pattern results in three RPCs to the + file server (lock, unlock, lock). This is reduced to one RPC by + implementing cm_CheckNTOpenDone() which frees the allocated byte + range lock from cm_CheckNTOpen() after the cm_Lock() call is + performed. + + * Optimize the SMB FindFirst processing for the case in which there + are no wildcards. If a cm_Lookup succeeds, generate a response + from the stat cache entry we have a callback for. Its cheaper + than walking each buffer of directory data associated with the + directory stat cache entry when we have thousands of directory + entries to search. + + * Increase the SMB Ioctl MaxData size to support larger token sizes + + * Disable autorun of the AFS Server Wizard when the AFS Server is + installed. + + * Add AFS Server service dependencies on tcpip and PNP_TDI + + * Remove the AFS Server Configuration Tool shortcut + + * Add Freelance mode awareness to AFS Server Configuration Tool + +Since 1.5.11 + + * Unlike previous versions of the OS, Vista performs a shutdown on + the Microsoft Loopback adapter just like it would on a real adapter. + This causes the smb_Listener threads to trigger a panic during a + suspend/hibernate power event. + + The fix is to unbind from the network adapters in response to a + suspend/hibernate power event and then rebind to the adapters + when a resume power event is received. Note that the resume events + are not reliably delivered so it is possible the afs service will + not be accessible. However, this is the best we can do. + + * don't allow environment variables we set in afslogon.dll to be + inherited by child processes + + * force an rx connection reset if VICECONNBAD or VICETOKENDEAD are + received + + * The old dirty buffer synchronization algorithm had a buf_IncrSyncer + thread walking the all buffer list periodically searching for dirty + buffers to write to the file server. This had several negative + results. The algorithm ate up ever increasing amounts of CPU time + even when AFS is idle as the size of the cache increases. Also, + buffers were written to the file server in an order based upon the + original buffer allocation which has nothing to do with the order + in which the buffers became dirty. + + The new algorithm maintains a dirty buffer list. Items are added + when the buffer is originally marked dirty. A buffer is only + removed from the list by the buf_IncrSyncer when the buffer is no + longer dirty. If the list is empty the thread goes back to sleep + immediately without additional processing requirements. + +Since 1.5.10: + + * Enable renaming of directories from the Explorer Shell when + Offline Folders is enabled + + * An error is reported in response to the SMB ReceiveCoreFlush + request when an error has not occurred. + +Since 1.5.9: + + * optimize dirty buffer flushes in response to suspend operations + do not flush if only loopback adapter is installed + do no retry dirty buffer writes + + * do not reset netbios when performing loopback checks. doing + so will break the existing lana bind + + * remove a deadlock in smb3.c QPathInfo + +Since 1.5.8: + + * Add NetIDMgr AFS Plug-in + + * "Show Tray Icon" checkbox removed from afs_config.exe + + * Disable DNS Registrations for the Loopback Adapter and make sure + that Netbios is turned on. + + * A reference count leak on stat cache objects was fixed + + * For debugging, tread ids of writers are now tracked on locks + + * Corrected an incorrect lock that was being held but not + freed in a rare error case + + * Changed trace log end of line to CR-LF so it can be read + with notepad.exe + + * modify the buffer synchronization thread to write all dirty + buffers and sleep only when there is no work to be done + + * improve behavior of cache manager when large numbers of + temporary files are being created by multiple clients within + the same directory. + + * do not permit dirty buffers that belong to deleted files + to be written to the file server. its a waste of bandwidth + + * do not leak stat cache references when the file server + returns VNOVNODE * afscreds: do not permit an attempt to obtain tokens if the afs service could not be started. this was causing stack overflows on Vista after resuming from a suspend -Since 1.4.2-rc3: (1.4.2-rc4 released 16 Sep 2006) - - * No changes - -Since 1.4.2-rc2: (1.4.2-rc3 released 6 Sep 2006) +Since 1.5.7: * better handling of dot directory - * fs sq adn fs mkm now behave as on UNIX - - * another backconnections hostnames fix + * fs sq and fs mkm now behave as on UNIX * add license to installers * Return Invalid Parameter error for unknown InfoLevels in SMB Tran2 Search Directory. -Since 1.4.2-rc1: (1.4.2-rc2 released 30 Aug 2006) - - * Fix rx usage of WSAStartup/WSACleanup + * Correctly use WSAStartup and WSACleanup within the RX library - * Correct afsauthent.dll export list. + * Check that afsd_service.exe is running before performing + a pioctl call. - * Fix renaming on Vista from Explorer. + * Force AFS Shell Extension to load resource DLL using + afs_shl_ext.dll as a base name. - * Allow the AFS Shell Extension to always find its resource library. + * (Wix) install afs_shl_ext_XXXX.dll and afs_creds_XXXX.dll in + OpenAFS\Client\Program - * Fix the code that writes the backconnectionhostnames value - to ensure that the data buffer is written with the correct - length. + * Fix SMB_SET_FILE_END_OF_FILE_LENGTH * Do not panic if the maximum number of volume entries are in use and one of them can be recycled. -Since 1.4.2-beta3: (1.4.2-rc1 released 22 Aug 2006) +Since 1.5.6: + + * Fix the code that reads the backconnnectionhostnames value + so that there is not an uninitialized variable + +Since 1.5.4/1.5.5: * integrated logon could cause winlogin.exe to blue screen windows if it was called with a domain that does not exist on the machine. this is possible during a sysprep. - * do not generate MessageBox dialogs on network errors. they - cause more trouble then they are worth. - * corrections to cm_buf_t handling to ensure that buffers are removed from queues before they are freed and that holds are obtained on the next buffer in a chain before releasing the current one. -Since 1.4.2-beta2: + * do not generate MessageBox dialogs on network errors. they + cause more trouble then they are worth. + + * move GlobalAutoMapper into a separate thread so that it does + not prevent service startup if the WNetAddConnection2 call + does not return. + + * restrict hard dead and connection timeouts to the CIFS Session + Timeout value. This is being done to try to prevent virtual + circuits from being destroyed prematurely. + + * Fix the code that writes the backconnectionhostnames value + to ensure that the data buffer is written with the correct + length. + + (there were no windows specific changes between 1.5.4 and 1.5.5) + +Since 1.5.3: + * Corrections to the Integrated Logon functionality that permits Kerberos 5 TGTs to be communicated into the user session. The transfer is now more secure and succeeds when the user does not @@ -118,7 +1791,18 @@ Since 1.4.2-beta2: * WiX installer updated to version 2.0.4221.0 -Since 1.4.2-beta1: + * Updates to the IFS functionality for 64-bit correctness and + permit compilation. The IFS functionality works for pioctl() + operations but not much else at this point. + + * A major re-write of the OpenAFS implementation of the CIFS Tran2 + query and set functions. + + * Ignore the Windows CIFS client session timeout entirely. Timeout + only after the AFS Hard Dead Timeout period expires. + +Since 1.5.2: + * move headers, libraries, and samples from OpenAFS\Client to OpenAFS\SDK @@ -133,23 +1817,46 @@ Since 1.4.2-beta1: continue to execute after the library is unloaded, the process will crash. + * implement inline bulk status calls. this will significantly + improve the performance of directory listings. + * prevent a crash when evaluating mountpoints to volumes that do not exist - * "over quota" and "disk full" errors were not being reported to the - caller. + * new command: fs uuid [-generate] + displays the current uuid and allows a new one to be generated + on the fly without restarting the afs client service. + + * fix the 64-bit installers to properly document the install + location * move help files to the proper location so they can be located by the system tray tool and the control panel. - * Prevent a panic caused by cm_SyncOp returning unlocked buffers. + * "over quota" and "disk full" errors were not being reported to the + caller. + + * largefile support has been added. Files greater than 31-bits can no + longer be written to file servers which do not support large files. + When file servers support large files, files up to 64-bits can be + read or written. - * Fix vlserver failover when mounting root.afs volume (Freelance - mode disabled) + * cm_SyncOp could return with the input buffer unlocked upon error + which would result in a panic condition. This bug was introduced + in 1.4.1. - * Allow Freelance Scache entries to be recycled + * vlserver failover when freelance mode did not work. This prevented + the root.afs volume from being loaded if the first vlserver could + not be reached. -Since 1.4.1d: 1.4.2-beta1 released 14 June 2006 +Since 1.5.1: + + * A bug in the CIFS Standard Info response packet caused directories + to appear as standard files. This prevented Microsoft Vista from + being able to walk the AFS directory tree. + + * Mount points must be reported as directories in response to + Query Path Info operations. * A deadlock was detected when performing "fs flushall" if the file server reports VNOVNODE. The scp->createBufferLock is @@ -178,15 +1885,6 @@ Since 1.4.1d: 1.4.2-beta1 released 14 June 2006 * In cm_GetNewSCache, do not allow Freelance SCache entries to be recycled. Choose a new entry if cm_RecycleSCache fails. - - -Since 1.4.1c: 1.4.1d (2 June 2006) - - * Add a missing lock that was lost during the pullup - of patchs for 1.4.1c - -Since 1.4.1b: 1.4.1c (31 May 2006) - * Speed up the performance of the cache manager by not holding the smb_fid_t mutex across calls to cm_SyncOp and AFS RPCs. @@ -208,9 +1906,6 @@ Since 1.4.1b: 1.4.1c (31 May 2006) being processed. The priority is bumped one level for every 15 seconds of processing time. - * smb_SendPacket cannot release a vcp since it doesn't - own the reference. - * The original openafs contribution mis-used the cm_GetCallback function. This function should only be called as a side effect of a call to @@ -222,8 +1917,6 @@ Since 1.4.1b: 1.4.1c (31 May 2006) cm_SyncOp. If nothing else this results in a significant performance penalty. -Since 1.4.1a: 1.4.1b (16 May 2006) - * More changes to cleanup of smb_vc_t objects in order to prevent race conditions. @@ -235,31 +1928,116 @@ Since 1.4.1a: 1.4.1b (16 May 2006) enables the file server to recognize that the client has moved. -Since 1.4.1: 1.4.1a (1 May 2006) - * Remove a race condition and deadlock associated with cleanup of smb_vc_t objects. * Fix the ANSI filename support. One function that required it was missing the translations. - * Fix the pthread library so that it can be loaded - and unloaded safely by an application. - -Since 1.4.1 rc10: 1.4.1 released (9 April 2006) - - * Add code to protect against an undercount of smb_vc_t - references in the smb_allVCsp list. This is a temporary - workaround until the cause of the undercount can be - identified. +Changes not present in 1.4.1 and since 1.5.0: 1.5.1 released +(24 April 2006) + + * Add a DllMain() function to afspthread.dll. Perform + cleanup of thread local storage, rx queues, critical + sections, event handles, etc. This was implemented + to avoid crashes in afspthread.dll when applications + which load/unload the dll attempt to terminate. + + * Lock request behavior has been altered. As of this + release a locally allocated lock will be used whenever + the volume is RO or the requesting user's permissions + are 'rl'. This will allow end users to execute programs + from RW volumes when they do not have the 'k' privilege. + + Note that a recent discovery indicates that the 'k' bit + is only supposed to control the ability to obtain read + locks. Write locks are to be controlled by the 'w' and + 'i' privilege bits. + + * Code has been added to enable the cache manager to be + able to obtain the AFSID of the authenticated user. + This is required to be able to determine when "Insert" + privileges should apply. AFS considers a file to be + a new file whenever the owner's AFSID matches the + AFSID of the user. The current implementation relies + on the name specified during the SetToken call to be + correct. This will be replaced in the future with a + new RPC that allows the AFSID of the authenticated + user to be obtained. + + * A 32-bit-tools installer for use on 64-bit systems + is now available. These tools are for use with 32-bit + versions of Kerberos for Windows or JPSoftware's 4NT. + +Since 1.4.1 rc10: 1.4.1 final released (9 April 2006) + + * Remove the use of the "active_vcp" variable. This variable + no longer serves any useful purpose and was the cause of + race conditions that produced under counts of the smb_vc_t + references. * Change default minidump output to include data segments - * restore access to cm_IoctlGetVolumeStatus and + * restore access to cm_IoctlGetVolumeStatus and cm_IoctlSetVolumeStatus calls for AFS pioctl operations. - Still need to figure out why they are being called + Still need to figure out why they are being called for SMB/CIFS IOCTL operations instead of Trans2GetFileInfo. +Changes not present in 1.4.1: 1.5.0 released (16 Feb 2006) + + * Update build system to include the "sys_name" in the + obj and dest paths. + + * optimize the number of calls to obtain the smb_user_t for a + smb virtual circuit. + + * add logging of server addresses, status and capabilities when + pinging the server. + + * prevent multiple threads from pinging the same server simultaneously. + instead, threads block and then use the result of the ping that was + already taking place. + + * Add registry values to allow the defaults for daemon checks to be altered + at startup. Log values to afsd_init.log. + + daemonCheckDownInterval + daemonCheckUpInterval + daemonCheckVolInterval + daemonCheckCBInterval + daemonCheckLockInterval + daemonCheckTokenInterval + + * Add EventLog messages for transitions in fs crypt state. + + * Byte range locking (when locks will be obtained from the + is still under discussion) + + * 64-bit Windows operating systems now supported + (XP SP2 64-bit, 2003 SP1 64-bit, 2003 R2 64-bit) + This is a native 64-bit implementation of OpenAFS for Windows. + There is currently no 64-bit version of KFW and therefore + there is no (easy) method for obtaining AFS credentials. + 32-bit KFW 3.0 can be used with 32-bit OAFW libraries + to obtain AFS tokens but there is not for the feint of + heart. + + * A faster implementation of the fcrypt algorithms improves + performance. + + * The afsd_service.exe now supplies Event Log Message Text. + The event log no longer generates warning text due to lack + of message configuration. + + * When afs servers are unreachable and network stack returns + a WSAEHOSTUNREACHABLE error, the AFS client will immediately + mark the attempted server as being down. This allows for + very fast response to the calling application. This change + has a pronounced improvement when the Windows Explorer is + used on disconnected mobile computers. + + * Added DebugOutputString debugging of the RX library + Since 1.4.1 rc9: 1.4.1 rc10 released (10 March 2006) * Fix the rx-lwp implementation to randomly generate rx call @@ -355,17 +2133,17 @@ Since 1.4.1 rc5: 1.4.1 rc6 released (2 Feb 2006) was never thread safe and it truly served no purpose. Since 1.4.1 rc4: 1.4.1 rc5 released (25 Jan 2006) - + * Re-enabled LogoffTokenTransfer and LogoffTokenTransferTimeout - registry settings. Default is ON and 120 seconds. If set to + registry settings. Default is ON and 120 seconds. If set to OFF, tokens will not be destroyed. - * Fixed a number of race conditions and reference count - problems associated with global queues. + * Fixed a number of race conditions and reference count problems + associated with global queues. - * Added a method to detect abandonded smb virtual circuits - so their associated file handles, locks, user tokens, - and smb session resources can be released. + * Added a method to detect abandoned smb virtual circuits so their + associated file handles, locks, user tokens, and smb session + resources can be released. * Added a mechanism to allow user tokens to be preserved during integrated login and be freed after logoff. @@ -388,10 +2166,10 @@ Since 1.4.1 rc3: 1.4.1 rc4 released (11 Jan 2006) * smb_username_t and smb_user_t objects are now properly reference counted and freed as appropriate. - * disable the use of AFS file locks. Byte range locking is still + * disable to use of AFS file locks. byte range locking is still implemented but all locks are managed locally. This prevents multiple processes from editing the same file on the same - machine but it does not prevent multiple processes on separate + machine but it does prevent multiple processes on separate machines from modifying the file. Since 1.4.1 rc2: 1.4.1 RC3 released (4 Jan 2006) @@ -426,7 +2204,7 @@ Since 1.4.1 rc1: 1.4.1 RC2 released (30 Nov 2005) * A down server should be marked up as long as it responds to the client. It doesn't matter if the server returned an error as long as the error - is something other than VRESTARTING. If there is such an error, all + is something other than VRESTARTING. If there is such an error, all connections on that server should be marked for replacement. * Change the check "up" servers period from once per hour to once every @@ -434,7 +2212,7 @@ Since 1.4.1 rc1: 1.4.1 RC2 released (30 Nov 2005) Post 1.4.0 revisions: 1.4.1 RC1 released (21 Oct 2005) * Byte Range Locking support has been added. Architectural documentation - is located within src/WINNT/afsd/cm_vnodeops.c. Best efforts are + is located within src/WINNT/afsd/cm_vnodeops.c. Best efforts are made to enforce Windows mandatory locking model using locally managed byte range locks with full file locks obtained from the file server. Read-only volumes provide the user with an implied locking privilege. @@ -445,7 +2223,7 @@ Post 1.4.0 revisions: 1.4.1 RC1 released (21 Oct 2005) * Implement error translation functions to convert Universal Error Codes output by modern servers to local errno and winsock error values. - This fixes the error message problems using pioctl() calls from fs.exe + This fixes the error message problems using pioctl() calls from fs.exe and the AFS Shell Extension. Since 1.4.0 rc8: 1.4.0 final tagged (20 Oct 2005); released (31 Oct 2005) diff --git a/doc/txt/winnotes/afs-integration.txt b/doc/txt/winnotes/afs-integration.txt index ab541f2fe..092797c75 100644 --- a/doc/txt/winnotes/afs-integration.txt +++ b/doc/txt/winnotes/afs-integration.txt @@ -1,4 +1,4 @@ -(This document is current as of release 1.4.000) +...(This document is current as of release 1.5.29) How to determine if OpenAFS is installed? @@ -200,3 +200,219 @@ the user via the OpenAFS provided command line tools: fs.exe and symlink.exe. These operations are performed via pioctl calls. + + +BOOL WhichCell(const char *strPath, char *cell, int len) +{ + struct ViceIoctl blob; + int code; + + blob.in_size = 0; + blob.out_size = len + blob.out = cell; + + code = pioctl((LPTSTR)((LPCTSTR)strPath), VIOC_FILE_CELL_NAME, &blob, 1); + if (code) + return FALSE; + return TRUE; +} + + +BOOL WorkstationCell(char *cell, int len) +{ + struct ViceIoctl blob; + int code; + + blob.in_size = 0; + blob.out_size = len + blob.out = cell; + + code = pioctl(NULL, VIOC_GET_WS_CELL, &blob, 1); + if (code) + return FALSE; + return TRUE; +} + +/* from afs/afsint.h */ +struct VolumeStatus { + afs_int32 Vid; + afs_int32 ParentId; + char Online; + char InService; + char Blessed; + char NeedsSalvage; + afs_int32 Type; + afs_int32 MinQuota; + afs_int32 MaxQuota; + afs_int32 BlocksInUse; + afs_int32 PartBlocksAvail; + afs_int32 PartMaxBlocks; +}; +typedef struct VolumeStatus VolumeStatus; + +BOOL WhichVolume(const char *strPath, DWORD * volID, char *volname, int len) +{ + struct ViceIoctl blob; + char space[2048]; + struct VolumeStatus *status; + char *name, *offmsg, *motd; + + int code; + + blob.in_size = 0; + blob.out_size = sizeof(space); + blob.out = space; + + code = pioctl(strPath, VIOCGETVOLSTAT, &blob, 1); + if (code) + return FALSE; + + status = (VolumeStatus *)space; + name = (char *)status + sizeof(*status); + offmsg = name + strlen(name) + 1; + motd = offmsg + strlen(offmsg) + 1; + + if (volID) + *volID = status->Vid; + + if (volname) { + strncpy(volname, name, len); + volname[len-1] = '\0'; + } + + /* Other items you could grab if you wanted + * if (*offmsg) + * then there is a message explaining why the volume is offline + * + * if (*motd) + * then there is a message of the day. (very rarely used) + * + * status->MaxQuota: 0 is unlimited; otherwise 32-bit number of Blocks + * status->BlocksInUse: 32-bit number of blocks + * status->PartBlocksAvail: 32-bit number of blocks available in + * the partition the volume is located on + * status->PartMaxBlocks: 32-bit number representing the actual size + * of the partition. + * + * These can be used to compute Quota Used, Partition Used, Space Avail, + * etc. A block is 1K. + * + * status->Type 0=ReadOnly; 1=ReadWrite + * status->Online (boolean) + * status->InService (boolean) + * status->Blessed (boolean) + * status->NeedsSalvage (boolean) + * status->ParentId Volume ID of the parent volume. (for readonly) + */ + return TRUE; +} + +BOOL IsSymlink(const char * dir, const char * entry) +{ + struct ViceIoctl blob; + char space[2048]; + int code; + + blob.in_size = strlen(entry); + blob.in = entry; + blob.out_size = sizeof(space); + blob.out = space; + + memset(space, 0, sizeof(space)); + + code = pioctl(dir, VIOC_LISTSYMLINK, &blob, 1); + if (code) + return FALSE; + + return TRUE; +} + +BOOL GetSymlink(const char * dir, const char * entry, char * dest, int len) +{ + struct ViceIoctl blob; + char space[2048]; + int code; + + blob.in_size = strlen(entry); + blob.in = entry; + blob.out_size = sizeof(space); + blob.out = space; + + memset(space, 0, sizeof(space)); + + code = pioctl(dir, VIOC_LISTSYMLINK, &blob, 1); + if (code) + return FALSE; + + strncpy(dest, space, len); + dest[len-1] = '\0'; + return TRUE; +} + +BOOL IsMountPoint(const char * dir, const char * entry) +{ + struct ViceIoctl blob; + char space[2048]; + int code; + + blob.in_size = strlen(entry); + blob.in = entry; + blob.out_size = sizeof(space); + blob.out = space; + + memset(space, 0, sizeof(space)); + + code = pioctl(dir, VIOC_AFS_STAT_MT_PT, &blob, 1); + if (code) + return FALSE; + + return TRUE; +} + +BOOL GetMountPoint(const char * dir, const char * entry, char * dest, int len) +{ + struct ViceIoctl blob; + char space[2048]; + int code; + + blob.in_size = strlen(entry); + blob.in = entry; + blob.out_size = sizeof(space); + blob.out = space; + + memset(space, 0, sizeof(space)); + + code = pioctl(dir, VIOC_AFS_STAT_MT_PT, &blob, 1); + if (code) + return FALSE; + + strncpy(dest, space, len); + dest[len-1] = '\0'; + return TRUE; +} + +BOOL IsOnline(const char *strPath) +{ + struct ViceIoctl blob; + char space[2048]; + struct VolumeStatus *status; + int code; + + blob.in_size = 0; + blob.out_size = sizeof(space); + blob.out = space; + + code = pioctl(strPath, VIOCGETVOLSTAT, &blob, 1); + if (code) + return FALSE; + + status = (VolumeStatus *)space; + + if (!status->Online || + !status->InService || + !status->Blessed || + status->NeedsSalvage) + return FALSE; + + return TRUE; +} diff --git a/doc/txt/winnotes/afs-issues.txt b/doc/txt/winnotes/afs-issues.txt index cdb3f7496..ec555fccf 100644 --- a/doc/txt/winnotes/afs-issues.txt +++ b/doc/txt/winnotes/afs-issues.txt @@ -1,66 +1,34 @@ -This file is a rough list of known issues with the 1.4.1xxx release of OpenAFS +This file is a rough list of known issues with the 1.5.50 release of OpenAFS on Windows. This list is not complete. There are probably other issues which can be found in the RT database or on the mailing list. +For all of these issues please review -(1) File/Directory access is not integrated with windows security - -(3) SMB LANA list is static. + http://www.openafs.org/roadmap.html + http://www.secure-endpoints.com/openafs-windows-roadmap.html -(3a) IP address changes cause the service to terminate due to an assertion -in smb_Listener() thread. -(3b) New IP addresses do not get bound to the SMB server +(1) File/Directory access is not integrated with windows security (3c) Loopback adapter hack: (i) prevents use of AFS Gateway (ii) requires installation of loopback adapter - (iii) the list of hack adapters is incomplete (VMWare, MS TV/Video, ...) - (iv) incompatible with Windows 2000 and earlier -(9) Convert to IFS!!!!!! - -(10) Kerberos 5 integration: -(10f) allow arbitrary cell to realm mappings -(10g) modify UI to allow user to choose whether to authenticate - using Kerberos or AFS -(10h) modify UI to allow user to select an existing principal to - be used to request AFS tokens -(10i) modify UI to display Kerberos 5 ticket info (principal, - ticket lifetimes, etc) - -(11) Default cell is system global just like everything else. Different - users logging in via Integrated Logon or using afscreds.exe cannot - be automatically prompted for different cells +(9) Convert to a native file system implementation built upon: + - a file system redirector + - a file system filter + - a network provider (12) AFS Integrated Logon: (12c) If network is not available must store the username and password somewhere until such time as the network starts. -(13) If a drive mapping is "in use", then afscreds cannot be used to Modify - or Delete the Mapping. If a map to "H:" to \afs\cell\foo" with - description "home" is modified to point to \afs\cell\bar, then the - description must be unique. "home" cannot be reused. We need a way - to remove "home" from the submount list. - - [Actually, an end user should not be able to modify the submount list] - -(14) No support for Unicode CIFS/SMB data structures. OEM Code Pages prevent - the use of interoperable file names; force the use of paths no longer - than 256 characters; force share names to be no longer than 13 - characters; restrict authentication to ASCII only names and passwords; - etc. - -(15) No auto-restart on service failure - (16) Better EventLog handling (17) Named Pipes Support [requires modifications to AFS servers to support] (18) Memory Mapped File support -(19) Large file support [both SMB/CIFS and AFS] - (20) NSIS Installer issues (a) integration with KFW install script (b) Optional removal of AFS Server volumes @@ -72,7 +40,7 @@ in smb_Listener() thread. (22) CIFS Remote Administration Protocol implementation is incomplete. Notifications are not made to requestors when the view of a file or folder changes due to token acquisition; token expiration; or - token destruction. + token destruction (23) Remove submount creation as a side effect of AFS drive mapping. @@ -91,23 +59,14 @@ in smb_Listener() thread. or by the new AFS Client Service Administration tool when executed by an authorized user. +(24) Compatibility with Vista User Account Control (UAC) + ------------------------------------------------------------------------- List of unfunded projects: - 1. No longer use AFS Client Service "cell" as the default cell for individual users - 2. Prevent panic situation when the root.afs volume is not reachable and - the AFS Client Server is not using Freelance mode - 3. Prevent panic situation when the IP address to which the SMB server is bound is removed - from the local machine's network configuration 4. Add support for Named Pipes within the afs filesystem (This is not currently a supported feature of AFS; it will require changes to the servers as well as the clients.) - 5. Re-write afscreds.exe to support: - 1. choosing between Kerberos 5 and Kerberos 4 on a per principal basis - 2. providing users with the ability to map multiple cells to a single principal - 3. providing change password functionality on a per principal basis - 4. no longer include drive mapping - 5. configuration of afscreds startup options in shortcut 6. Re-write afs_config.exe to be only "per user" functionality which does not require admin privileges 1. default cell and principal for the user @@ -128,23 +87,12 @@ List of unfunded projects: 11. network configuration 12. miscellaneous 13. need to add support for all of the new registry values since 1.2.8 - 8. Identify why 16-bit DOS applications executed out of AFS fail - 9. Add support for configurable Icon file representing AFS folders within the Explorer Shell - 10. Documentation Documentation Documentation - 11. Large File support (> 2GB) in SMB/CIFS client - 12. Integrate KFW installation into the NSIS and MSI installers - 13. Add support for byte range locking to AFS (requires changes to the servers) - 14. Unicode enable the SMB/CIFS server. OEM Code Pages: - 1. prevent the use of interoperable file names - 2. force the use of paths no longer than 256 characters - 3. force share names to be no longer than 13 characters - 4. restrict authentication to ASCII only names and passwords - 15. Complete implementation of CIFS Remote Administration Protocol - 16. Add support for SMB/CIFS Digital Signatures - 17. Development of afsmap.exe tool to provide AFS aware NET USE functionality - afsmap.exe [/PERSISTENT] - afsmap.exe [/PERSISTENT] - afsmap.exe /DELETE + 10. Add support for configurable Icon file representing AFS folders within the Explorer Shell + 11. Documentation Documentation Documentation + 13. Integrate KFW installation into the NSIS and MSI installers + 14. Add support for server side byte range locking. + 16. Complete implementation of CIFS Remote Administration Protocol + 17. Add support for SMB/CIFS Digital Signatures 18. Missing SMB/CIFS functions: Find FindUnique @@ -153,6 +101,7 @@ List of unfunded projects: WriteBulk WriteBulkData Tran2::SessionSetup + Tran2::Directory Search InfoLevel 0x105 / 0x106 19. StoreBehind mode is not implemented. Or more correctly, all data is written directly to the server and is not cached. Writes invalidate the local cache entries which are then read back from the server. @@ -162,7 +111,20 @@ List of unfunded projects: 22. Add support for storing Windows ACLs on files 23. Remove submount creation as a side effect of drive creation 24. Finish conversion from string.h to strsafe.h for VS.NET 2005 - 25. Implement RX Connection Pools in the Cache Manager allowing more than + 25. Implement RX Statistics gathering interfaces and reporting tools + (necessary to obtain profiling data) + 26. Implement RX Connection Pools in the Cache Manager allowing more than four simultaneous requests to a single server to be processed at a time for a single user - \ No newline at end of file + 27. Support the Vista User Account Control (UAC) interface + + + + + + + + + + + diff --git a/doc/txt/winnotes/performance.txt b/doc/txt/winnotes/performance.txt index be370b681..856639288 100644 --- a/doc/txt/winnotes/performance.txt +++ b/doc/txt/winnotes/performance.txt @@ -1,64 +1,90 @@ -argos.mit.edu with 1.3.73 client -171,194,368 byte file. "fs flush" before each command - -200mb cache; No MaxMTU - write/crypt 2.793 MB/sec - read/crypt 2.897 MB/sec - - write/clear 7.123 MB/sec - read/clear 5.991 MB/sec - -1.2.10(skyrope) - write/crypt: 1.836 MB/sec - read/crypt: 1.497 MB/sec - - write/clear: 2.927 MB/sec - read/clear: 2.065 MB/sec - - - 1.2.10 1.3.73 improvement - ------------ ------------ ----------- -write/crypt 1.836 MB/sec 2.793 MB/sec 52.1% -read/crypt 1.497 MB/sec 2.897 MB/sec 93.5% - -write/clear 2.927 MB/sec 7.123 MB/sec 143.4% -read/clear 2.065 MB/sec 5.991 MB/sec 190.1% - - - -mitz@ANDREW.CMU.EDU tested the 1.3.73 client on his machine -against his cell copying a 367181824 byte file. "fs flush" -was run prior to each command. - - -Default MaxMTU; Default cache - write/crypt: 4.158 MB/sec - read/crypt: 5.730 MB/sec - - write/clear: 4.537 MB/sec - read/clear: 16.762 MB/sec - -Changing the cache size made no difference - -No MaxMTU; 400MB cache - write/crypt: 4.863 MB/sec - read/crypt: 6.083 MB/sec - - write/clear: 14.286 MB/sec - read/clear: 16.257 MB/sec - -From Andrew Linux with 1.2.10 on the same machine: - write/crypt: 5.358 MB/sec - read/crypt: 12.855 MB/sec - - write/crypt 18.040 MB/sec (unique file names) - read/crypt 23.160 MB/sec (unique file names) - - write/clear: 16.401 MB/sec - read/clear: 25.192 MB/sec - - - - - - +argos.mit.edu with 1.3.73 client +171,194,368 byte file. "fs flush" before each command + +200mb cache; No MaxMTU + write/crypt 2.793 MB/sec + read/crypt 2.897 MB/sec + + write/clear 7.123 MB/sec + read/clear 5.991 MB/sec + +1.2.10(skyrope) + write/crypt: 1.836 MB/sec + read/crypt: 1.497 MB/sec + + write/clear: 2.927 MB/sec + read/clear: 2.065 MB/sec + + + 1.2.10 1.3.73 improvement + ------------ ------------ ----------- +write/crypt 1.836 MB/sec 2.793 MB/sec 52.1% +read/crypt 1.497 MB/sec 2.897 MB/sec 93.5% + +write/clear 2.927 MB/sec 7.123 MB/sec 143.4% +read/clear 2.065 MB/sec 5.991 MB/sec 190.1% + + +lxiv.mit.edu with 1.5.1407 client +171,194,368 byte file. "fs flush" before each command +1260 MaxMTU + +write/crypt 2.050 MB/sec +read/crypt 2.596 MB/sec + +write/clear 2.574 MB/sec +read/clear 7.371 MB/sec + +No MaxMTU + + 1.5.14 1.5.1408 change + -------------- ------------- ---------- + +write/crypt/flush 3.146 MB/sec 2.659 MB/sec -15.5% +read/crypt/noflush 2.951 MB/sec 54.421 MB/sec +1844.2% +read/crypt/flush 2.946 MB/sec 2.925 MB/sec - 0.7% + +write/clear/flush 8.221 MB/sec 5.542 MB/sec -32.6% +read/clear/noflush 10.493 MB/sec 54.421 MB/sec +518.6% +read/clear/flush 10.385 MB/sec 10.741 MB/sec +3.4% + + + + + +mitz@ANDREW.CMU.EDU tested the 1.3.73 client on his machine +against his cell copying a 367181824 byte file. "fs flush" +was run prior to each command. + + +Default MaxMTU; Default cache + write/crypt: 4.158 MB/sec + read/crypt: 5.730 MB/sec + + write/clear: 4.537 MB/sec + read/clear: 16.762 MB/sec + +Changing the cache size made no difference + +No MaxMTU; 400MB cache + write/crypt: 4.863 MB/sec + read/crypt: 6.083 MB/sec + + write/clear: 14.286 MB/sec + read/clear: 16.257 MB/sec + +From Andrew Linux with 1.2.10 on the same machine: + write/crypt: 5.358 MB/sec + read/crypt: 12.855 MB/sec + + write/crypt 18.040 MB/sec (unique file names) + read/crypt 23.160 MB/sec (unique file names) + + write/clear: 16.401 MB/sec + read/clear: 25.192 MB/sec + + + + + + diff --git a/regen.sh b/regen.sh index dc9f489b1..8d04e24ce 100755 --- a/regen.sh +++ b/regen.sh @@ -1,4 +1,19 @@ #!/bin/sh + +while getopts "q" flag +do + case "$flag" in + q) + skipman=1; + ;; + *) + echo "Usage ./regen.sh [-q]" + echo " -q skips man page generation" + exit + ;; + esac +done + echo "Updating configuration..." echo "Running aclocal" aclocal -I src/cf @@ -15,9 +30,13 @@ autoheader echo "Deleting autom4te.cache directory" rm -r autom4te.cache -# Rebuild the man pages, to not require those building from source to have -# pod2man available. -echo "Building man pages" -if test -d doc/man-pages ; then - (cd doc/man-pages && ./generate-man) +if [ $skipman ] ; then + echo "Skipping man page build" +else + # Rebuild the man pages, to not require those building from source to have + # pod2man available. + if test -d doc/man-pages ; then + echo "Building man pages" + (cd doc/man-pages && ./generate-man) + fi fi diff --git a/src/NTMake9x b/src/NTMake9x deleted file mode 100644 index 6be23b41f..000000000 --- a/src/NTMake9x +++ /dev/null @@ -1,332 +0,0 @@ -# Copyright 2000, International Business Machines Corporation and others. -# All Rights Reserved. -# -# This software has been released under the terms of the IBM Public -# License. For details, see the LICENSE file in the top-level source -# directory or online at http://www.openafs.org/dl/license10.html - -# Top level nmake NTMakefile driver for building AFS. -# -# This file simply imposes a reasonable total ordering on the set of -# directories to build; this ordering is of course more strict than the -# partial ordering established by the actual directory dependencies. -# -# When porting a new directory, simply add the directory into the -# dependence chain at the earliest point possible, updating its successor -# appropriately; if the new directory is the last in the chain, then -# update the 'finale' dependency to be the new directory. - - -CD = cd -NTMAKE = nmake /nologo /f ntmakefile install9x -NTMAKELANG = nmake /nologo /f ntmakefile en_install -NTMAKE_HEADERS = nmake /nologo /f ntmakefile install_headers -NTMAKE_LIBUTILS = nmake /nologo /f ntmakefile install_libutils -NTMAKE_OBJS = nmake /nologo /f ntmakefile install_objs -MKDIR = mkdir -OBJ = src - -# Standard install directory. -!IFDEF AFSDEV_DESTDIR -DESTDIR = $(AFSDEV_DESTDIR) -!ELSE -DESTDIR = $(AFSROOT)\DEST -!ENDIF - - -start: -! IF (!EXIST(src)) -! ERROR Execute nmake from directory above src, e.g., afs\3.5. -! ENDIF -! IF (!EXIST($(DESTDIR))) - $(MKDIR) $(DESTDIR) -! ENDIF - -config: start - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -procmgmt_headers: config - echo ***** $@ - $(CD) $(OBJ)\procmgmt - $(NTMAKE_HEADERS) - $(CD) ..\.. - -afsreg_headers: config - echo ***** $@ - $(CD) $(OBJ)\WINNT\afsreg - $(NTMAKE_HEADERS) - $(CD) ..\..\.. - -util: procmgmt_headers afsreg_headers - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -comerr: util - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -cmd: comerr - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -afsreg: cmd - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -eventlog: afsreg - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -lwp: eventlog - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -rxgen: lwp - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -des: rxgen - echo ***** $@ -! IF (EXIST($(OBJ)\des\NTMakefile)) - $(CD) $(OBJ)\des - $(NTMAKE) - $(CD) ..\.. -! ELSE - $(CD) $(OBJ)\des_stub - $(NTMAKE) - $(CD) ..\.. -! ENDIF - -rx: des - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -rxstat: rx - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -rxkad: rxstat - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -pthread: rxkad - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -procmgmt: pthread - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -fsint: procmgmt - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -audit: fsint - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -osi_headers: audit - echo ***** $@ - $(CD) $(OBJ)\WINNT\client_osi - $(NTMAKE_HEADERS) - $(CD) ..\..\.. - -libacl_headers: osi_headers - echo ***** $@ - $(CD) $(OBJ)\libacl - $(NTMAKE_HEADERS) - $(CD) ..\.. - -cm_headers: libacl_headers - echo ***** $@ - $(CD) $(OBJ)\WINNT\afsd - $(NTMAKE_HEADERS) - $(CD) ..\..\.. - -sys: cm_headers - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -afsdobjs: sys - echo ***** $@ - $(CD) $(OBJ)\WINNT\afsd - $(NTMAKE_OBJS) - $(CD) ..\..\.. - -auth: afsdobjs - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -ubik: auth - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -ptserver: ubik - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE_LIBUTILS) - $(CD) ..\.. - -libacl: ptserver - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -kauth: libacl - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -vlserver: kauth - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE_LIBUTILS) - $(CD) ..\.. - -usd: vlserver - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -libafsrpc: usd - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -libafsauthent: libafsrpc - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -libadmin: libafsauthent - echo ***** $@ - $(CD) $(OBJ)\$@ - $(NTMAKE) - $(CD) ..\.. - -client_talocale: libadmin - echo ***** $@ - $(CD) $(OBJ)\WINNT\talocale - $(NTMAKE) - $(CD) ..\..\.. - -client_osi: client_talocale - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -afsd: client_osi - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE_LIBUTILS) - $(CD) ..\..\.. - -client_cpa: afsd - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -client_config: client_cpa - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -client_exp: client_config - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - - -#Leave last echo in - it helps the build reconize the last $(CD) -win9xpanel : - echo ***** $@ - $(CD) $(OBJ)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - echo ***** End of Build - -install: start client_exp win9xpanel - -install9x: install - -# InstallShield dependencies - -#Leave last echo in - it helps the build reconize the last $(CD) -Win9x:: - echo ***** afs_setup_utils - $(CD) $(OBJ)\WINNT\afs_setup_utils - nmake -f ntmakefile install - $(CD) ..\..\.. - echo ***** Win9x - $(CD) $(OBJ)\WINNT\install\Win9x - nmake /nologo /f NTMakefile isinstall - $(CD) ..\..\..\.. - echo **** End of Install Scripts - -media: Win9x - -# Clean target for obj tree -# Fake the version copy so clean will go through the complete cycle with undefines -clean: start - if not exist .\src\config\NTMakefile.version copy .\src\config\NTMakefile.version-NOCML .\src\config\NTMakefile.version - nmake /nologo /f ntmake9x "NTMAKE = nmake /nologo /f ntmakefile clean" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile clean" "NTMAKE_LIBUTILS = nmake /nologo /f ntmakefile clean" "NTMAKE_OBJS = nmake /nologo /f ntmakefile clean" install - $(CD) $(OBJ)\WINNT\install\Win9x - nmake /nologo /f NTMakefile clean - $(CD) ..\..\..\.. - $(DESTDIR)\BIN\rmbat $(DESTDIR)\include\*.* $(DESTDIR)\include\afs\*.* $(DESTDIR)\include\WINNT\*.* $(DESTDIR)\include\rx\*.* - $(DESTDIR)\BIN\rmbat $(DESTDIR)\LIB\*.LIB $(DESTDIR)\LIB\*.DLL $(DESTDIR)\LIB\AFS\*.LIB - $(DESTDIR)\BIN\rmbat $(DESTDIR)\root.client\usr\vice\etc\*.* - $(CD) $(OBJ)\config - nmake /nologo /f ntmakefile clean_version - $(CD) ..\.. - echo **** End of Clean - -# Language-only build target -lang: - nmake /nologo /f ntmakefile "NTMAKE = nmake /nologo /f ntmakefile lang" "NTMAKE_HEADERS = nmake /nologo /f ntmakefile lang" install diff --git a/src/NTMakefile b/src/NTMakefile index 3fdc5f472..ac28edb06 100644 --- a/src/NTMakefile +++ b/src/NTMakefile @@ -18,20 +18,24 @@ # These three macros define the source, object, and destination folders SRC=$(AFSROOT)\src +DOC=$(AFSROOT)\doc + #If AFS_OBJDIR is not defined then use obj as relative obj folder !IFNDEF AFS_OBJDIR -AFS_OBJDIR=$(AFSROOT)\obj +AFS_OBJDIR=$(AFSROOT)\obj\$(SYS_NAME) !ENDIF + !IFNDEF DESTDIR -DESTDIR=$(AFSROOT)\dest +DESTDIR=$(AFSROOT)\dest\$(SYS_NAME) !ENDIF CD = cd +MKDIR = mkdir + NTMAKE = nmake /nologo /f ntmakefile install NTMAKELANG = nmake /nologo /f ntmakefile en_US NTMAKE_HEADERS = nmake /nologo /f ntmakefile install_headers NTMAKE_OBJS = nmake /nologo /f ntmakefile install_objs -MKDIR = mkdir #debug statement support jumping to last know error DOCD=$(SRC)\DOLASTCMP.BAT @@ -43,7 +47,14 @@ config: $(NTMAKE) $(CD) ..\.. -procmgmt_headers:config +man-pages: config + echo ***** $@ + $(DOCD) $(DOC)\man-pages + $(CD) $(DOC)\man-pages + $(NTMAKE) + $(CD) ..\.. + +procmgmt_headers: man-pages echo ***** $@ $(DOCD) $(SRC)\procmgmt $(CD) $(SRC)\procmgmt @@ -57,7 +68,14 @@ afsreg_headers: $(NTMAKE_HEADERS) $(CD) ..\..\.. -util: procmgmt_headers afsreg_headers +lwp_headers: + echo ***** $@ + $(DOCD) $(SRC)\lwp + $(CD) $(SRC)\lwp + $(NTMAKE_HEADERS) + $(CD) ..\.. + +util: procmgmt_headers afsreg_headers lwp_headers echo ***** $@ $(DOCD) $(SRC)\$@ $(CD) $(SRC)\$@ @@ -134,7 +152,14 @@ rx: des $(NTMAKE) $(CD) ..\.. -ubik_headers: rx +rxdebug: rx + echo ***** $@ + $(DOCD) $(SRC)\$@ + $(CD) $(SRC)\$@ + $(NTMAKE) + $(CD) ..\.. + +ubik_headers: rxdebug echo ***** $@ $(DOCD) $(SRC)\ubik $(CD) $(SRC)\ubik @@ -399,7 +424,35 @@ tbutc: tviced $(NTMAKE) $(CD) ..\.. -libadmin: tbutc +talocale: tbutc + echo ***** $@ + $(DOCD) $(SRC)\WINNT\$@ + $(CD) $(SRC)\WINNT\$@ + $(NTMAKE) + $(CD) ..\..\.. + +license: talocale + echo ***** $@ + $(DOCD) $(SRC)\WINNT\$@ + $(CD) $(SRC)\WINNT\$@ + $(NTMAKE) + $(CD) ..\..\.. + +client_osi: license + echo ***** $@ + $(DOCD) $(SRC)\WINNT\$@ + $(CD) $(SRC)\WINNT\$@ + $(NTMAKE) + $(CD) ..\..\.. + +afsd: client_osi + echo ***** $@ + $(DOCD) $(SRC)\WINNT\$@ + $(CD) $(SRC)\WINNT\$@ + $(NTMAKE) + $(CD) ..\..\.. + +libadmin: afsd echo ***** $@ $(DOCD) $(SRC)\$@ $(CD) $(SRC)\$@ @@ -462,35 +515,7 @@ admintest: cfg $(NTMAKE) $(CD) ..\..\.. -talocale: admintest - echo ***** $@ - $(DOCD) $(SRC)\WINNT\$@ - $(CD) $(SRC)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -license: talocale - echo ***** $@ - $(DOCD) $(SRC)\WINNT\$@ - $(CD) $(SRC)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -client_osi: license - echo ***** $@ - $(DOCD) $(SRC)\WINNT\$@ - $(CD) $(SRC)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -afsd: client_osi - echo ***** $@ - $(DOCD) $(SRC)\WINNT\$@ - $(CD) $(SRC)\WINNT\$@ - $(NTMAKE) - $(CD) ..\..\.. - -afsadmsvr: afsd +afsadmsvr: admintest echo ***** $@ $(DOCD) $(SRC)\WINNT\$@ $(CD) $(SRC)\WINNT\$@ @@ -567,7 +592,21 @@ aklog: client_creds $(NTMAKE) $(CD) ..\..\.. -extra: aklog +xstat: aklog + echo ***** $@ + $(DOCD) $(SRC)\$@ + $(CD) $(SRC)\$@ + $(NTMAKE) + $(CD) ..\.. + +netidmgr_plugin: xstat + echo ***** $@ + $(DOCD) $(SRC)\WINNT\$@ + $(CD) $(SRC)\WINNT\$@ + $(NTMAKE) + $(CD) ..\..\.. + +extra: netidmgr_plugin ! IF EXIST($(SRC)\WINNT\extra) && EXIST($(SRC)\WINNT\extra\NTMakefile) echo ***** $@ $(DOCD) $(SRC)\WINNT\$@ @@ -583,12 +622,11 @@ finale: extra $(DOCD) $(SRC)\$@ $(CD) $(SRC)\$@ $(NTMAKE) - $(CD) ..\.. - echo Build Finished Successfully + $(CD) ..\.. install: finale - -# InstallShield dependencies + echo Build Finished Successfully + # Clean target for obj tree clean: @@ -636,23 +674,10 @@ wix: loopback $(NTMAKE) $(CD) ..\..\..\.. -InstallShield5: - echo ***** afs_setup_utils - $(DOCD) $(SRC)\WINNT\afs_setup_utils - $(CD) $(SRC)\WINNT\afs_setup_utils - $(NTMAKE) - $(CD) ..\..\.. - - $(DOCD) $(SRC)\WINNT\install\$@ - $(CD) $(SRC)\WINNT\install\$@ - $(NTMAKE) - $(CD) ..\..\..\.. - -media: install InstallShield5 NSIS wix +media: install NSIS wix install-nsis: install NSIS install-wix: install wix -install-is5: install InstallShield5 diff --git a/src/TechNotes-WIN9X b/src/TechNotes-WIN9X deleted file mode 100644 index ced7f49e5..000000000 --- a/src/TechNotes-WIN9X +++ /dev/null @@ -1,154 +0,0 @@ -Win9x AFS Client: Technical Notes ---------------------------------- - -This file gives a technical overview of the Win9x AFS client and describes -the main differences from the NT client. - - -Overview --------- - -The Windows 9x client is based on the Windows NT/2000 client. Like the -NT client, it exports AFS through an SMB interface. Programs access AFS -files by mounting AFS submounts as SMB shares and using the built-in -Windows SMB client to communicate with the AFS client. The AFS client -acts as an SMB server. It runs entirely at user level. - -DOS box implementation and VXD's --------------------------------- - -The main program of the Win9x client, afsd.exe, is implemented as a -32-bit DOS program. It is compiled using the DJGPP compiler and runs in -a Windows 9x DOS virtual machine. This approach was necessary to avoid -a well-known deadlock problem in Windows 9x when the kernel calls up -to a user-level Win32 daemon: the original requesting program grabs the -Win16Mutex before entering the kernel. The request is then passed up to -the daemon, who attempts to service it using network or file I/O calls. -These calls also attempt to obtain the Win16Mutex, which is still being -held by the original requester, so there is a deadlock. - -To avoid this problem, the daemon runs in a DOS box. I/O calls from -a DOS program do not attempt to obtain the Win16Mutex, so the deadlock -is avoided. This approach was discovered by the Coda team at Carnegie -Mellon University and used to implement a Win9x version of their client. -The Win9x AFS client uses the same approach. It also uses the Coda team's -SOCK.VXD which was written to provide network functions to a DOS program. -Sockets functions which call SOCK.VXD were added to the DJGPP library. - -For more information about the Coda team's approach to this problem, see -their paper from Usenix 1999: -http://www.cs.cmu.edu/afs/cs/project/coda/Web/docdir/freenix99.pdf - -Note that the AFS client also requires the Coda team's MMAP.VXD. We are -not actually calling this VXD, but afsd crashes if it is built without -it (i.e., by building with dos-gcc -bw95 instead of -bmmap). Solutions to -this problem welcomed.. - -Netbios functions ------------------ - -The Windows AFS clients communicate with user applications using the -SMB protocol, as described above. SMB communication is done using the -Netbios interface. In Win32, there is a built-in function Netbios() -which accomplishes this. In a DOS program, however, this function is -unavailable. However, Netbios functionality is available in the BIOS -by calling interrupt 0x5c. The NCB (Netbios Control Block) and data -buffer must be in conventional DOS memory, i.e., below 1 MB. This memory -can only be accessed in DJGPP by using the DOS memory access functions: -dosmemget(), dosmemput(), _farpeekX() and _farpokeX(). The Win9x client -uses a separately-allocated DOS memory buffer and copies data to and from -DOS memory for network communication. - -Functions were also added to LWP's iomgr.c to check for the completion -of Netbios requests. The IOMGR now checks for NCB completion in addition -to checking for timer expiration, signal delivery, and performing select() -on file descriptors. - -See the new files: netbios95.c, dosutils95.c, and the various changes -(marked by "#ifdef DJGPP") to smb.c in WINNT/afsd. Also see lwp/iomgr.c. - -Thread functions ----------------- - -Unlike the NT client which uses Win32 thread and locking functions, -the Win9x client uses the LWP package from the AFS source distribution. -An interface layer was added to allow NT and Win9x to make the same calls. -For example, thrd_Create() is now used to create a thread. In NT, this -is just a macro to the Win32 function CreateThread(). In Win9x, it is a -function which calls the LWP function LWP_CreateProcess(). See the new -files osithrd95.c, osithrd95.h, and osithrdnt.h in WINNT/client_osi. - -Configuration parameters ------------------------- - -In DJGPP, it is not feasible to access the system registry, which is -where the NT client stores its configuration info. For the Win9x client, -the Unix approach is followed instead: the local cell is in a file called -"ThisCell", cache configuration is in a file called "cache.info", and -the cell database is stored in "CellServDB" instead of "afsdcell.ini". -Many parameters are passed via the command line to afsd.exe and are -processed just like the Unix clients. - -See the new files afsd_init95.c and afsd95.c in WINNT/afsd. - -Authentication --------------- - -In the functions SetToken() and GetToken(), the NT client sends and -receives the session key using a separate RPC which should use encryption, -rather than including the session key in the pioctl packet. The Win9x -version avoids this RPC and puts the session key back into the pioctl. -This should not be a security issue on Win9x since it is a single-user -machine. (The pioctl packet will not be visible externally.) See files -WINNT/afsd/cm_ioctl.c and auth/ktc_nt.c. - -Persistent (disk) caching -------------------------- - -Disk caching support was added for the 9x client. This has barely been -tested and is still very experimental! In addition, there are numerous -performance issues. It relies on the fact that LWP is a non-preemptive -threads package, so no locking is done to protect shared data structures. -In addition, it uses synchronous I/O to read and write disk files. Since -LWP is a user-level threads package, any calls to normal I/O system calls -like read() or write() will block the entire process. One better approach -would be to add support for local disk file descriptors to the select() -call used by IOMGR, and then to use IOMGR_Select to enqueue I/O requests -to the disk. Currently, the select() function supports only sockets. - -It should be fairly easy to adapt this code for the NT client. See the -implementation in WINNT/afsd/cm_diskcache95.c. To enable this code, -define DISKCACHE95 in WINNT/afsd/Makefile.djgpp. - -Utility programs ----------------- - -The utility programs, such as klog.exe and fs.exe, are Win32 programs and -are built using the Microsoft compiler. Changes to the code for these -files are marked by "#ifdef AFS_WIN95_ENV". - -GUI interface -------------- - -The Win9x client does not use the NT configuration GUI programs in -client_creds and client_cpa (Control Panel Applet.) It uses a separate -GUI program called WinAfsLoad.exe in WINNT/win9xpanel. This program can -start afsd.exe and keep track of submounts and token expiration. - -The Explorer shell extension, which allows right clicking on a file -in Windows Explorer to get an AFS submenu, is supported in Win9x. -See WINNT/client_exp. - -Integrated logon ----------------- - -Integrated logon is not supported in the 9x client. - -Known issues ------------- - -1) The Microsoft linker LINK386.exe causes a deadlock when attempting to -create an executable on an AFS filesystem. Somehow, the linker appears -to be preempting the entire machine so afsd.exe cannot run to service -requests. Solutions to this problem eagerly sought! (This problem does -not seem to occur with the Win9x Coda client.) diff --git a/src/afs/.cvsignore b/src/afs/.cvsignore index fb596ce66..286e2d2fd 100644 --- a/src/afs/.cvsignore +++ b/src/afs/.cvsignore @@ -5,3 +5,4 @@ afs_trace.msf afszcm.cat unified_afs.c unified_afs.h +_locks_ diff --git a/src/afs/AIX/osi_config.c b/src/afs/AIX/osi_config.c index eef35c8cb..5053d4804 100644 --- a/src/afs/AIX/osi_config.c +++ b/src/afs/AIX/osi_config.c @@ -37,7 +37,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/AIX/osi_config.c,v 1.8.2.2 2005/09/21 00:03:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/AIX/osi_config.c,v 1.10 2005/09/21 00:02:42 shadow Exp $"); #include "sys/limits.h" #include "sys/types.h" diff --git a/src/afs/AIX/osi_file.c b/src/afs/AIX/osi_file.c index 8264c03ca..1f346b2a0 100644 --- a/src/afs/AIX/osi_file.c +++ b/src/afs/AIX/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/AIX/osi_file.c,v 1.9.2.3 2007/12/13 19:18:49 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/AIX/osi_file.c,v 1.9.14.3 2007/12/13 19:18:31 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/AIX/osi_inode.c b/src/afs/AIX/osi_inode.c index a3b553b53..43360c375 100644 --- a/src/afs/AIX/osi_inode.c +++ b/src/afs/AIX/osi_inode.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/AIX/osi_inode.c,v 1.8.2.3 2007/08/16 03:54:26 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/AIX/osi_inode.c,v 1.10.4.1 2007/08/16 03:52:33 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/AIX/osi_sleep.c b/src/afs/AIX/osi_sleep.c index a23da68aa..9713ba6ab 100644 --- a/src/afs/AIX/osi_sleep.c +++ b/src/afs/AIX/osi_sleep.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/AIX/osi_sleep.c,v 1.10.2.1 2007/06/25 20:25:31 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/AIX/osi_sleep.c,v 1.10.14.1 2007/06/25 20:24:10 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/AIX/osi_vfsops.c b/src/afs/AIX/osi_vfsops.c index 959f13689..3fc6da6d5 100644 --- a/src/afs/AIX/osi_vfsops.c +++ b/src/afs/AIX/osi_vfsops.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/AIX/osi_vfsops.c,v 1.11.2.2 2007/12/13 19:18:49 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/AIX/osi_vfsops.c,v 1.12.8.1 2007/12/13 19:18:31 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/AIX/osi_vnodeops.c b/src/afs/AIX/osi_vnodeops.c index 45f40b2e0..a936c0bb0 100644 --- a/src/afs/AIX/osi_vnodeops.c +++ b/src/afs/AIX/osi_vnodeops.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/AIX/osi_vnodeops.c,v 1.15.2.3 2006/01/26 15:45:51 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/AIX/osi_vnodeops.c,v 1.18 2006/01/20 05:05:35 shadow Exp $"); #include "h/systm.h" #include "h/types.h" diff --git a/src/afs/DARWIN/osi_file.c b/src/afs/DARWIN/osi_file.c index 2260ecde3..ad9e4003c 100644 --- a/src/afs/DARWIN/osi_file.c +++ b/src/afs/DARWIN/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_file.c,v 1.8.2.8 2007/12/13 19:18:49 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_file.c,v 1.12.2.4 2007/12/13 19:18:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/DARWIN/osi_groups.c b/src/afs/DARWIN/osi_groups.c index ca9c467f9..88807103f 100644 --- a/src/afs/DARWIN/osi_groups.c +++ b/src/afs/DARWIN/osi_groups.c @@ -18,7 +18,8 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_groups.c,v 1.5.2.2 2005/11/29 05:02:24 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_groups.c,v 1.7 2005/11/29 04:58:49 shadow Exp $"); + /* We should be doing something better anyway */ #ifdef AFS_DARWIN80_ENV int @@ -29,7 +30,7 @@ setpag(proc, cred, pagvalue, newpag, change_parent) afs_uint32 *newpag; afs_uint32 change_parent; { - return -1; + return -1; } #else #include "afs/sysincludes.h" diff --git a/src/afs/DARWIN/osi_inode.c b/src/afs/DARWIN/osi_inode.c index b8af083d8..519e63363 100644 --- a/src/afs/DARWIN/osi_inode.c +++ b/src/afs/DARWIN/osi_inode.c @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_inode.c,v 1.7.2.1 2005/10/05 05:58:29 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_inode.c,v 1.8 2005/10/13 15:12:07 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/DARWIN/osi_misc.c b/src/afs/DARWIN/osi_misc.c index f308329d7..634e3d082 100644 --- a/src/afs/DARWIN/osi_misc.c +++ b/src/afs/DARWIN/osi_misc.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_misc.c,v 1.6.2.3 2008/03/24 17:10:40 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_misc.c,v 1.11.2.1 2007/10/23 17:39:19 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" @@ -127,13 +127,8 @@ uio_t afsio_darwin_partialcopy(uio_t auio, int size) { vfs_context_t afs_osi_ctxtp; int afs_osi_ctxtp_initialized; static thread_t vfs_context_owner; -#define RECURSIVE_VFS_CONTEXT 1 -#if RECURSIVE_VFS_CONTEXT static proc_t vfs_context_curproc; int vfs_context_ref; -#else -#define vfs_context_ref 1 -#endif void get_vfs_context(void) { int isglock = ISAFS_GLOCK(); @@ -145,7 +140,6 @@ void get_vfs_context(void) { return; } osi_Assert(vfs_context_owner != current_thread()); -#if RECURSIVE_VFS_CONTEXT if (afs_osi_ctxtp && current_proc() == vfs_context_curproc) { vfs_context_ref++; vfs_context_owner = current_thread(); @@ -153,25 +147,16 @@ void get_vfs_context(void) { AFS_GUNLOCK(); return; } -#endif while (afs_osi_ctxtp && vfs_context_ref) { - printf("[%d] waiting for afs_osi_ctxtp\n", proc_selfpid()); afs_osi_Sleep(&afs_osi_ctxtp); if (afs_osi_ctxtp_initialized) { - printf("[%d] ok\n", proc_selfpid()); if (!isglock) AFS_GUNLOCK(); return; } - if (!afs_osi_ctxtp || !vfs_context_ref) - printf("[%d] ok\n", proc_selfpid()); } -#if RECURSIVE_VFS_CONTEXT vfs_context_rele(afs_osi_ctxtp); vfs_context_ref=1; -#else - osi_Assert(vfs_context_owner == (thread_t)0); -#endif afs_osi_ctxtp = vfs_context_create(NULL); vfs_context_owner = current_thread(); vfs_context_curproc = current_proc(); @@ -189,16 +174,9 @@ void put_vfs_context(void) { AFS_GUNLOCK(); return; } -#if RECURSIVE_VFS_CONTEXT if (vfs_context_owner == current_thread()) vfs_context_owner = (thread_t)0; vfs_context_ref--; -#else - osi_Assert(vfs_context_owner == current_thread()); - vfs_context_rele(afs_osi_ctxtp); - afs_osi_ctxtp = NULL; - vfs_context_owner = (thread_t)0; -#endif afs_osi_Wakeup(&afs_osi_ctxtp); if (!isglock) AFS_GUNLOCK(); diff --git a/src/afs/DARWIN/osi_module.c b/src/afs/DARWIN/osi_module.c index 4dbd5c067..352db503d 100644 --- a/src/afs/DARWIN/osi_module.c +++ b/src/afs/DARWIN/osi_module.c @@ -2,7 +2,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_module.c,v 1.10.2.3 2005/11/19 04:35:40 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_module.c,v 1.15 2005/11/19 04:32:59 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" diff --git a/src/afs/DARWIN/osi_sleep.c b/src/afs/DARWIN/osi_sleep.c index 674d86868..2f22ca165 100644 --- a/src/afs/DARWIN/osi_sleep.c +++ b/src/afs/DARWIN/osi_sleep.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_sleep.c,v 1.10.2.3 2006/02/17 15:29:47 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_sleep.c,v 1.13 2006/02/17 15:22:24 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/DARWIN/osi_vfsops.c b/src/afs/DARWIN/osi_vfsops.c index 9fb51ca78..c1e412ab3 100644 --- a/src/afs/DARWIN/osi_vfsops.c +++ b/src/afs/DARWIN/osi_vfsops.c @@ -5,7 +5,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_vfsops.c,v 1.11.2.5 2007/01/04 22:09:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_vfsops.c,v 1.17.4.1 2007/01/04 22:17:57 shadow Exp $"); #include /* Standard vendor system headers */ #include /* Afs-based standard headers */ diff --git a/src/afs/DARWIN/osi_vm.c b/src/afs/DARWIN/osi_vm.c index a5c012a1d..911bf34ee 100644 --- a/src/afs/DARWIN/osi_vm.c +++ b/src/afs/DARWIN/osi_vm.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_vm.c,v 1.14.2.5 2006/01/28 18:04:05 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_vm.c,v 1.20 2006/01/28 18:02:42 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/DARWIN/osi_vnodeops.c b/src/afs/DARWIN/osi_vnodeops.c index 97a200dba..23ffb65b0 100644 --- a/src/afs/DARWIN/osi_vnodeops.c +++ b/src/afs/DARWIN/osi_vnodeops.c @@ -5,7 +5,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afs/DARWIN/osi_vnodeops.c,v 1.18.2.29 2007/11/27 20:04:13 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DARWIN/osi_vnodeops.c,v 1.41.2.11 2008/02/11 04:00:48 shadow Exp $"); #include /* Standard vendor system headers */ #include /* Afs-based standard headers */ @@ -651,7 +651,7 @@ afs_vop_access(ap) if (code) { code= 0; /* if access is ok */ } else { - code = afs_CheckCode(EACCES, &treq, 57); /* failure code */ + code = afs_CheckCode(EACCES, &treq, 57); /* failure code */ } out: afs_PutFakeStat(&fakestate); @@ -1420,8 +1420,18 @@ afs_vop_rename(ap) #if !defined(AFS_DARWIN80_ENV) VOP_UNLOCK(fvp, 0, p); #endif - FREE(fname, M_TEMP); - FREE(tname, M_TEMP); +#ifdef notdef + if (error == EXDEV) { + /* The idea would be to have a userspace handler like afsdb to + * run mv as the user, thus: + */ + printf("su %d -c /bin/mv /afs/.:mount/%d:%d:%d:%d/%s /afs/.:mount/%d:%d:%d:%d/%s\n", + (cn_cred(tcnp))->cr_uid, fvc->fid.Cell, fvc->fid.Fid.Volume, + fvc->fid.Fid.Vnode, fvc->fid.Fid.Unique, fname, + tvc->fid.Cell, tvc->fid.Fid.Volume, tvc->fid.Fid.Vnode, + tvc->fid.Fid.Unique, tname); + } +#endif #ifdef AFS_DARWIN80_ENV cache_purge(fdvp); cache_purge(fvp); @@ -1446,6 +1456,8 @@ afs_vop_rename(ap) vrele(fdvp); vrele(fvp); #endif + FREE(fname, M_TEMP); + FREE(tname, M_TEMP); return error; } diff --git a/src/afs/DUX/osi_file.c b/src/afs/DUX/osi_file.c index f83a90c60..21ba07b9d 100644 --- a/src/afs/DUX/osi_file.c +++ b/src/afs/DUX/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DUX/Attic/osi_file.c,v 1.9.2.1 2007/12/13 19:18:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DUX/Attic/osi_file.c,v 1.9.14.1 2007/12/13 19:18:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/DUX/osi_vnodeops.c b/src/afs/DUX/osi_vnodeops.c index d5f395d13..2980587ca 100644 --- a/src/afs/DUX/osi_vnodeops.c +++ b/src/afs/DUX/osi_vnodeops.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/DUX/Attic/osi_vnodeops.c,v 1.11.2.1 2005/01/31 03:49:11 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/DUX/Attic/osi_vnodeops.c,v 1.12 2004/12/24 06:08:18 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ diff --git a/src/afs/FBSD/osi_file.c b/src/afs/FBSD/osi_file.c index e31db7381..e989920b8 100644 --- a/src/afs/FBSD/osi_file.c +++ b/src/afs/FBSD/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/FBSD/osi_file.c,v 1.13.2.2 2007/12/13 19:18:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/FBSD/osi_file.c,v 1.13.14.2 2007/12/13 19:18:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/FBSD/osi_misc.c b/src/afs/FBSD/osi_misc.c index 7f178e7c9..ab2d43153 100644 --- a/src/afs/FBSD/osi_misc.c +++ b/src/afs/FBSD/osi_misc.c @@ -18,7 +18,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/FBSD/osi_misc.c,v 1.9.2.1 2005/03/11 06:50:37 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/FBSD/osi_misc.c,v 1.10 2005/03/08 21:57:53 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/FBSD/osi_module.c b/src/afs/FBSD/osi_module.c index 111f37752..d70a9cb72 100644 --- a/src/afs/FBSD/osi_module.c +++ b/src/afs/FBSD/osi_module.c @@ -12,7 +12,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afs/FBSD/osi_module.c,v 1.5.2.2 2005/05/23 21:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/FBSD/osi_module.c,v 1.7 2005/04/29 18:24:01 rees Exp $"); #include #include diff --git a/src/afs/FBSD/osi_vfsops.c b/src/afs/FBSD/osi_vfsops.c index d6825c9e3..7c4ef33bf 100644 --- a/src/afs/FBSD/osi_vfsops.c +++ b/src/afs/FBSD/osi_vfsops.c @@ -2,7 +2,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afs/FBSD/osi_vfsops.c,v 1.16.2.5 2005/07/11 19:27:27 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/FBSD/osi_vfsops.c,v 1.21 2005/07/08 16:53:43 rees Exp $"); #include /* Standard vendor system headers */ #include /* Afs-based standard headers */ diff --git a/src/afs/FBSD/osi_vm.c b/src/afs/FBSD/osi_vm.c index e19acbb47..d326edef3 100644 --- a/src/afs/FBSD/osi_vm.c +++ b/src/afs/FBSD/osi_vm.c @@ -22,7 +22,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/FBSD/osi_vm.c,v 1.11.2.2 2005/05/23 21:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/FBSD/osi_vm.c,v 1.15 2005/05/23 21:04:08 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/FBSD/osi_vnodeops.c b/src/afs/FBSD/osi_vnodeops.c index fb43ce5ac..5e66ab896 100644 --- a/src/afs/FBSD/osi_vnodeops.c +++ b/src/afs/FBSD/osi_vnodeops.c @@ -48,7 +48,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afs/FBSD/osi_vnodeops.c,v 1.18.2.4 2005/05/23 21:26:40 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/FBSD/osi_vnodeops.c,v 1.22.6.1 2008/01/15 06:09:11 shadow Exp $"); #include /* Standard vendor system headers */ #include /* Afs-based standard headers */ @@ -746,7 +746,11 @@ afs_vop_getpages(struct vop_getpages_args *ap) * now tell them that it is ok to use. */ if (!code) { +#if defined(AFS_FBSD70_ENV) + if(0) /* XXXX fixme for 7.0 */ +#else if (m->flags & PG_WANTED) +#endif vm_page_activate(m); else vm_page_deactivate(m); diff --git a/src/afs/HPUX/osi_file.c b/src/afs/HPUX/osi_file.c index e389c55f6..0663af358 100644 --- a/src/afs/HPUX/osi_file.c +++ b/src/afs/HPUX/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/HPUX/osi_file.c,v 1.8.2.2 2007/12/13 19:18:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/HPUX/osi_file.c,v 1.8.14.2 2007/12/13 19:18:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/HPUX/osi_inode.c b/src/afs/HPUX/osi_inode.c index 6c480004e..a61afdae9 100644 --- a/src/afs/HPUX/osi_inode.c +++ b/src/afs/HPUX/osi_inode.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/HPUX/osi_inode.c,v 1.8.2.2 2006/02/17 17:35:33 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/HPUX/osi_inode.c,v 1.10 2006/02/17 17:34:15 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/IRIX/osi_file.c b/src/afs/IRIX/osi_file.c index 265c86b8f..05d2ffb04 100644 --- a/src/afs/IRIX/osi_file.c +++ b/src/afs/IRIX/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/IRIX/osi_file.c,v 1.11.2.2 2007/12/13 19:18:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/IRIX/osi_file.c,v 1.11.14.2 2007/12/13 19:18:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/IRIX/osi_idbg.c b/src/afs/IRIX/osi_idbg.c index a066c9b41..ed3bb0b0e 100644 --- a/src/afs/IRIX/osi_idbg.c +++ b/src/afs/IRIX/osi_idbg.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/IRIX/osi_idbg.c,v 1.6.2.1 2004/08/25 07:09:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/IRIX/osi_idbg.c,v 1.7 2004/08/19 02:19:16 kolya Exp $"); #ifdef AFS_SGI62_ENV #include "afs/sysincludes.h" /* Standard vendor system headers */ diff --git a/src/afs/IRIX/osi_inode.c b/src/afs/IRIX/osi_inode.c index b86c7aad5..2af47bc03 100644 --- a/src/afs/IRIX/osi_inode.c +++ b/src/afs/IRIX/osi_inode.c @@ -43,7 +43,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/IRIX/osi_inode.c,v 1.12.2.3 2005/08/17 19:27:03 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/IRIX/osi_inode.c,v 1.17 2005/08/17 19:25:29 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/IRIX/osi_machdep.h b/src/afs/IRIX/osi_machdep.h index 241deabdd..196a7ac53 100644 --- a/src/afs/IRIX/osi_machdep.h +++ b/src/afs/IRIX/osi_machdep.h @@ -29,6 +29,9 @@ extern time_t time; /* This gets redefined from ucred to cred in osi_vfs.h, just do it right */ #define AFS_UCRED cred +#undef gop_lookupname +#define gop_lookupname(fnamep,segflg,followlink,compvpp) lookupname((fnamep),(segflg),(followlink),NULL,(compvpp), NULL) + #define osi_vnhold(avc, r) do { VN_HOLD(AFSTOV(avc)); } while(0) #undef afs_osi_Alloc_NoSleep diff --git a/src/afs/IRIX/osi_vfsops.c b/src/afs/IRIX/osi_vfsops.c index bdf14b486..4f127cdbc 100644 --- a/src/afs/IRIX/osi_vfsops.c +++ b/src/afs/IRIX/osi_vfsops.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/IRIX/osi_vfsops.c,v 1.13.2.2 2007/12/13 19:18:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/IRIX/osi_vfsops.c,v 1.14.8.1 2007/12/13 19:18:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/IRIX/osi_vnodeops.c b/src/afs/IRIX/osi_vnodeops.c index 5c71785a8..e01143ec8 100644 --- a/src/afs/IRIX/osi_vnodeops.c +++ b/src/afs/IRIX/osi_vnodeops.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/IRIX/osi_vnodeops.c,v 1.14.2.2 2004/11/09 17:13:17 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/IRIX/osi_vnodeops.c,v 1.16 2004/11/05 04:21:29 shadow Exp $"); #ifdef AFS_SGI62_ENV #include "afs/sysincludes.h" /* Standard vendor system headers */ diff --git a/src/afs/LINUX/osi_alloc.c b/src/afs/LINUX/osi_alloc.c index 636d354bd..3cdacf859 100644 --- a/src/afs/LINUX/osi_alloc.c +++ b/src/afs/LINUX/osi_alloc.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_alloc.c,v 1.22.2.2 2007/04/18 18:04:10 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_alloc.c,v 1.23.8.1 2007/04/18 18:02:47 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" diff --git a/src/afs/LINUX/osi_cred.c b/src/afs/LINUX/osi_cred.c index 73c2b5d13..6f3faad1b 100644 --- a/src/afs/LINUX/osi_cred.c +++ b/src/afs/LINUX/osi_cred.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_cred.c,v 1.10.2.3 2006/12/19 02:29:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_cred.c,v 1.12.6.1 2006/12/19 02:29:39 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" diff --git a/src/afs/LINUX/osi_export.c b/src/afs/LINUX/osi_export.c new file mode 100644 index 000000000..6332865b9 --- /dev/null +++ b/src/afs/LINUX/osi_export.c @@ -0,0 +1,958 @@ +/* + * vi:set cin noet sw=4 tw=70: + * Copyright 2006, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Filesystem export operations for Linux + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/LINUX/osi_export.c,v 1.1.2.4 2008/07/01 03:35:23 shadow Exp $"); + +#include /* early to avoid printf->printk mapping */ +#include +#ifdef EXPORTFS_H_EXISTS +#include +#endif +#include "afs/sysincludes.h" +#include "afsincludes.h" +#include "afs/afs_dynroot.h" +#include "h/smp_lock.h" + +/* #define OSI_EXPORT_DEBUG */ + +extern struct dentry_operations afs_dentry_operations; +#if defined(NEW_EXPORT_OPS) +static struct dentry *afs_export_get_dentry(struct super_block *sb, + void *inump); +#endif + +struct get_name_data { + char *name; + struct VenusFid fid; + int found; +}; + +/* + * Linux reserved the following filehandle types: + * - 0 is always the filesystem root; NFS deals with this for us + * - 1,2 are reserved by Linux for inode-number-based filehandles + * - 0xff is reserved by linux + * + * We encode filehandles for AFS files using the types defined below. + * Internally, our "object ID" is a VenusFid; if we get a filehandle + * with a more-stable cell ID, we'll turn it into a cell number in + * the decode_fh wrapper. + */ + +#define AFSFH_VENUSFID 0xa0 /* cell, volume, vnode, uniq */ +#define AFSFH_CELLFID 0xa1 /* cellhandle, volume, vnode, uniq */ +#define AFSFH_NET_VENUSFID 0xa2 /* net cell, volume, vnode, uniq */ +#define AFSFH_NET_CELLFID 0xa3 /* net cellhandle, volume, vnode, uniq */ +#define AFSFH_DYN_RO_CELL 0xd0 /* cellhandle for RO root.cell mount */ +#define AFSFH_DYN_RW_CELL 0xd1 /* cellhandle for RW root.cell mount */ +#define AFSFH_DYN_RO_LINK 0xd2 /* cellhandle for RO root.cell symlink */ +#define AFSFH_DYN_RW_LINK 0xd3 /* cellhandle for RW root.cell symlink */ +#define AFSFH_DYN_MOUNT 0xd4 /* cellhandle, volume for mount point */ +#define AFSFH_DYN_SYMLINK 0xd5 /* hash of dynroot symlink target */ + +static int afs_encode_fh(struct dentry *de, __u32 *fh, int *max_len, + int connectable) +{ + struct vcache *tvc; + struct cell *tc; + int vntype; + + if (!de->d_inode) /* encode a negative dentry?! */ + return 255; + if (*max_len < 4) /* not enough space */ + return 255; + + tvc = VTOAFS(de->d_inode); + +#ifdef OSI_EXPORT_DEBUG + printk("afs: encode_fh(0x%08x/%d/%d.%d)\n", + tvc->fid.Cell, tvc->fid.Fid.Volume, + tvc->fid.Fid.Vnode, tvc->fid.Fid.Unique); +#endif + if (afs_IsDynrootAnyFid(&tvc->fid)) { + vntype = VNUM_TO_VNTYPE(tvc->fid.Fid.Vnode); + switch (vntype) { + case 0: + /* encode as a normal filehandle */ + break; + + case VN_TYPE_MOUNT: + if (*max_len < 5) { + return 255; + } + /* fall through */ + + case VN_TYPE_CELL: + case VN_TYPE_ALIAS: + AFS_GLOCK(); + tc = afs_GetCellByIndex(VNUM_TO_CIDX(tvc->fid.Fid.Vnode), + READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return 255; + } + memcpy((void *)fh, tc->cellHandle, 16); + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + if (vntype == VN_TYPE_MOUNT) { + fh[4] = htonl(tvc->fid.Fid.Unique); + *max_len = 5; + return AFSFH_DYN_MOUNT; + } + *max_len = 4; + if (vntype == VN_TYPE_CELL) { + return AFSFH_DYN_RO_CELL | VNUM_TO_RW(tvc->fid.Fid.Vnode); + } else { + return AFSFH_DYN_RO_LINK | VNUM_TO_RW(tvc->fid.Fid.Vnode); + } + + case VN_TYPE_SYMLINK: + /* XXX fill in filehandle for dynroot symlink */ + /* XXX return AFSFH_DYN_SYMLINK; */ + + default: + return 255; + } + } + + if (*max_len < 7) { + /* not big enough for a migratable filehandle */ + /* always encode in network order */ + fh[0] = htonl(tvc->fid.Cell); + fh[1] = htonl(tvc->fid.Fid.Volume); + fh[2] = htonl(tvc->fid.Fid.Vnode); + fh[3] = htonl(tvc->fid.Fid.Unique); + *max_len = 4; + return AFSFH_NET_VENUSFID; + } + + AFS_GLOCK(); + tc = afs_GetCell(tvc->fid.Cell, READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return 255; + } + memcpy((void *)fh, tc->cellHandle, 16); + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + /* always encode in network order */ + fh[4] = htonl(tvc->fid.Fid.Volume); + fh[5] = htonl(tvc->fid.Fid.Vnode); + fh[6] = htonl(tvc->fid.Fid.Unique); + + *max_len = 7; + return AFSFH_NET_CELLFID; +} + +#if defined(NEW_EXPORT_OPS) +static struct dentry *afs_fh_to_dentry(struct super_block *sb, struct fid *fh_fid, + int fh_len, int fh_type) +#else +static struct dentry *afs_decode_fh(struct super_block *sb, __u32 *fh, + int fh_len, int fh_type, + int (*acceptable)(void *, struct dentry *), + void *context) +#endif +{ + struct VenusFid fid; + struct cell *tc; + struct dentry *result; +#if defined(NEW_EXPORT_OPS) + __u32 *fh = (__u32 *)fh_fid->raw; +#endif + + + switch (fh_type) { + case AFSFH_VENUSFID: + if (fh_len != 4) + return NULL; + fid.Cell = fh[0]; + fid.Fid.Volume = fh[1]; + fid.Fid.Vnode = fh[2]; + fid.Fid.Unique = fh[3]; + break; + + case AFSFH_CELLFID: + if (fh_len != 7) + return NULL; + AFS_GLOCK(); + tc = afs_GetCellByHandle((void *)fh, READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return NULL; + } + fid.Cell = tc->cellNum; + fid.Fid.Volume = fh[4]; + fid.Fid.Vnode = fh[5]; + fid.Fid.Unique = fh[6]; + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + break; + + case AFSFH_NET_VENUSFID: + fid.Cell = ntohl(fh[0]); + fid.Fid.Volume = ntohl(fh[1]); + fid.Fid.Vnode = ntohl(fh[2]); + fid.Fid.Unique = ntohl(fh[3]); + break; + + case AFSFH_NET_CELLFID: + if (fh_len != 7) + return NULL; + AFS_GLOCK(); + tc = afs_GetCellByHandle((void *)fh, READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return NULL; + } + fid.Cell = tc->cellNum; + fid.Fid.Volume = ntohl(fh[4]); + fid.Fid.Vnode = ntohl(fh[5]); + fid.Fid.Unique = ntohl(fh[6]); + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + break; + + case AFSFH_DYN_RO_CELL: + case AFSFH_DYN_RW_CELL: + if (fh_len != 4) + return NULL; + AFS_GLOCK(); + tc = afs_GetCellByHandle((void *)fh, READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return NULL; + } + afs_GetDynrootFid(&fid); + fid.Fid.Vnode = VNUM_FROM_CIDX_RW(tc->cellIndex, fh_type & 1); + fid.Fid.Unique = 1; + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + break; + + case AFSFH_DYN_RO_LINK: + case AFSFH_DYN_RW_LINK: + if (fh_len != 4) + return NULL; + AFS_GLOCK(); + tc = afs_GetCellByHandle((void *)fh, READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return NULL; + } + afs_GetDynrootFid(&fid); + fid.Fid.Vnode = VNUM_FROM_CAIDX_RW(tc->cellIndex, fh_type & 1); + fid.Fid.Unique = 1; + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + break; + + case AFSFH_DYN_MOUNT: + if (fh_len != 5) + return NULL; + AFS_GLOCK(); + tc = afs_GetCellByHandle((void *)fh, READ_LOCK); + if (!tc) { + AFS_GUNLOCK(); + return NULL; + } + afs_GetDynrootFid(&fid); + fid.Fid.Vnode = VNUM_FROM_TYPEID(VN_TYPE_MOUNT, + tc->cellIndex << 2); + fid.Fid.Unique = ntohl(fh[4]); + afs_PutCell(tc, READ_LOCK); + AFS_GUNLOCK(); + break; + + case AFSFH_DYN_SYMLINK: + /* XXX parse dynroot symlink filehandle */ + /* break; */ + + default: + return NULL; + } + +#if defined(NEW_EXPORT_OPS) + result = afs_export_get_dentry(sb, &fid); +#else + result = sb->s_export_op->find_exported_dentry(sb, &fid, 0, + acceptable, context); + +#endif + +#ifdef OSI_EXPORT_DEBUG + if (!result) { + printk("afs: decode_fh(0x%08x/%d/%d.%d): no dentry\n", + fid.Cell, fid.Fid.Volume, + fid.Fid.Vnode, fid.Fid.Unique); + } else if (IS_ERR(result)) { + printk("afs: decode_fh(0x%08x/%d/%d.%d): error %ld\n", + fid.Cell, fid.Fid.Volume, + fid.Fid.Vnode, fid.Fid.Unique, PTR_ERR(result)); + } +#endif + return result; +} + +static int update_dir_parent(struct vrequest *areq, struct vcache *adp) +{ + struct VenusFid tfid; + struct dcache *tdc; + afs_size_t dirOffset, dirLen; + int code; + +redo: + if (!(adp->states & CStatd)) { + if ((code = afs_VerifyVCache2(adp, areq))) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: update_dir_parent(0x%08x/%d/%d.%d): VerifyVCache2: %d\n", + adp->fid.Cell, adp->fid.Fid.Volume, + adp->fid.Fid.Vnode, adp->fid.Fid.Unique, code); +#endif + return code; + } + } + + tdc = afs_GetDCache(adp, (afs_size_t) 0, areq, &dirOffset, &dirLen, 1); + if (!tdc) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: update_dir_parent(0x%08x/%d/%d.%d): no dcache\n", + adp->fid.Cell, adp->fid.Fid.Volume, + adp->fid.Fid.Vnode, adp->fid.Fid.Unique); +#endif + return EIO; + } + + /* now we will just call dir package with appropriate inode. + * Dirs are always fetched in their entirety for now */ + ObtainSharedLock(&adp->lock, 801); + ObtainReadLock(&tdc->lock); + + /* + * Make sure that the data in the cache is current. There are two + * cases we need to worry about: + * 1. The cache data is being fetched by another process. + * 2. The cache data is no longer valid + */ + while ((adp->states & CStatd) + && (tdc->dflags & DFFetching) + && hsame(adp->m.DataVersion, tdc->f.versionNo)) { + ReleaseReadLock(&tdc->lock); + ReleaseSharedLock(&adp->lock); + afs_osi_Sleep(&tdc->validPos); + ObtainSharedLock(&adp->lock, 802); + ObtainReadLock(&tdc->lock); + } + if (!(adp->states & CStatd) + || !hsame(adp->m.DataVersion, tdc->f.versionNo)) { + ReleaseReadLock(&tdc->lock); + ReleaseSharedLock(&adp->lock); + afs_PutDCache(tdc); +#ifdef OSI_EXPORT_DEBUG + printk("afs: update_dir_parent(0x%08x/%d/%d.%d): dir changed; retrying\n", + adp->fid.Cell, adp->fid.Fid.Volume, + adp->fid.Fid.Vnode, adp->fid.Fid.Unique); +#endif + goto redo; + } + + /* lookup the name in the appropriate dir, and return a cache entry + * on the resulting fid */ + code = afs_dir_Lookup(tdc, "..", &tfid.Fid); + + ReleaseReadLock(&tdc->lock); + afs_PutDCache(tdc); + + if (!code) { + UpgradeSToWLock(&adp->lock, 803); + adp->parentVnode = tfid.Fid.Vnode; + adp->parentUnique = tfid.Fid.Unique; + } +#ifdef OSI_EXPORT_DEBUG + if (code) { + printk("afs: update_dir_parent(0x%08x/%d/%d.%d): afs_dir_Lookup: %d\n", + adp->fid.Cell, adp->fid.Fid.Volume, + adp->fid.Fid.Vnode, adp->fid.Fid.Unique, code); + } else { + printk("afs: update_dir_parent(0x%08x/%d/%d.%d) => %d.%d\n", + adp->fid.Cell, adp->fid.Fid.Volume, + adp->fid.Fid.Vnode, adp->fid.Fid.Unique, + adp->parentVnode, adp->parentUnique); + } +#endif + ReleaseSharedLock(&adp->lock); + return code; +} + + +static int UnEvalFakeStat(struct vrequest *areq, struct vcache **vcpp) +{ + struct VenusFid tfid; + struct volume *tvp; + struct vcache *tvc; + int code; + + if (!afs_fakestat_enable) + return 0; + + if (*vcpp == afs_globalVp || vType(*vcpp) != VDIR || (*vcpp)->mvstat != 2) + return 0; + + /* Figure out what FID to look for */ + tvp = afs_GetVolume(&(*vcpp)->fid, 0, READ_LOCK); + if (!tvp) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: UnEvalFakeStat(0x%08x/%d/%d.%d): no volume\n", + (*vcpp)->fid.Cell, (*vcpp)->fid.Fid.Volume, + (*vcpp)->fid.Fid.Vnode, (*vcpp)->fid.Fid.Unique); +#endif + return ENOENT; + } + tfid = tvp->mtpoint; + afs_PutVolume(tvp, READ_LOCK); + + tvc = afs_GetVCache(&tfid, areq, NULL, NULL); + if (!tvc) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: UnEvalFakeStat(0x%08x/%d/%d.%d): GetVCache(0x%08x/%d/%d.%d) failed\n", + (*vcpp)->fid.Cell, (*vcpp)->fid.Fid.Volume, + (*vcpp)->fid.Fid.Vnode, (*vcpp)->fid.Fid.Unique, + tfid.Cell, tfid.Fid.Volume, + tfid.Fid.Vnode, tfid.Fid.Unique); +#endif + return ENOENT; + } + + if (afs_fakestat_enable == 2) { + ObtainWriteLock(&tvc->lock, 806); + code = afs_HandleLink(tvc, areq); + if (code) { + ReleaseWriteLock(&tvc->lock); + afs_PutVCache(tvc); + return code; + } + if (!strchr(tvc->linkData, ':')) { + ReleaseWriteLock(&tvc->lock); + afs_PutVCache(tvc); + return 0; + } + ReleaseWriteLock(&tvc->lock); + } + + afs_PutVCache(*vcpp); + *vcpp = tvc; + return 0; +} + + +/* + * Given a FID, obtain or construct a dentry, or return an error. + * This should be called with the BKL and AFS_GLOCK held. + */ +static struct dentry *get_dentry_from_fid(cred_t *credp, struct VenusFid *afid) +{ + struct vrequest treq; + struct vcache *vcp; + struct vattr vattr; + struct inode *ip; + struct dentry *dp; + afs_int32 code; + + code = afs_InitReq(&treq, credp); + if (code) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_dentry_from_fid(0x%08x/%d/%d.%d): afs_InitReq: %d\n", + afid->Cell, afid->Fid.Volume, afid->Fid.Vnode, afid->Fid.Unique, + code); +#endif + return ERR_PTR(-afs_CheckCode(code, &treq, 101)); + } + vcp = afs_GetVCache(afid, &treq, NULL, NULL); + if (vcp == NULL) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_dentry_from_fid(0x%08x/%d/%d.%d): no vcache\n", + afid->Cell, afid->Fid.Volume, afid->Fid.Vnode, afid->Fid.Unique); +#endif + return NULL; + } + + /* + * Now, it might be that we just caused a directory vnode to + * spring into existence, in which case its parent FID is unset. + * We need to do something about that, but only because we care + * in our own get_parent(), below -- the common code never looks + * at parentVnode on directories, except for VIOCGETVCXSTATUS. + * So, if this fails, we don't really care very much. + */ + if (vType(vcp) == VDIR && vcp->mvstat != 2 && !vcp->parentVnode) + update_dir_parent(&treq, vcp); + + /* + * If this is a volume root directory and fakestat is enabled, + * we might need to replace the directory by a mount point. + */ + code = UnEvalFakeStat(&treq, &vcp); + if (code) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_dentry_from_fid(0x%08x/%d/%d.%d): UnEvalFakeStat: %d\n", + afid->Cell, afid->Fid.Volume, afid->Fid.Vnode, afid->Fid.Unique, + code); +#endif + afs_PutVCache(vcp); + return ERR_PTR(-afs_CheckCode(code, &treq, 101)); + } + + ip = AFSTOV(vcp); + afs_getattr(vcp, &vattr, credp); + afs_fill_inode(ip, &vattr); + + /* d_alloc_anon might block, so we shouldn't hold the glock */ + AFS_GUNLOCK(); + dp = d_alloc_anon(ip); + AFS_GLOCK(); + + if (!dp) { + iput(ip); +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_dentry_from_fid(0x%08x/%d/%d.%d): out of memory\n", + afid->Cell, afid->Fid.Volume, afid->Fid.Vnode, afid->Fid.Unique); +#endif + return ERR_PTR(-ENOMEM); + } + + dp->d_op = &afs_dentry_operations; + return dp; +} + +static struct dentry *afs_export_get_dentry(struct super_block *sb, + void *inump) +{ + struct dentry *dp; + cred_t *credp; + + credp = crref(); + lock_kernel(); + AFS_GLOCK(); + + dp = get_dentry_from_fid(credp, inump); + + AFS_GUNLOCK(); + unlock_kernel(); + crfree(credp); + + return dp; +} + + +static int get_name_hook(void *hdata, char *name, + afs_int32 vnode, afs_int32 unique) +{ + struct get_name_data *data = (struct get_name_data *)hdata; + int len; + + if (vnode == data->fid.Fid.Vnode && unique == data->fid.Fid.Unique) { + len = strlen(name); + if (len > NAME_MAX) len = NAME_MAX; + memcpy(data->name, name, len); + data->name[len] = '\0'; + data->found = 1; + } + return 0; +} + +static int afs_export_get_name(struct dentry *parent, char *name, + struct dentry *child) +{ + struct afs_fakestat_state fakestate; + struct get_name_data data; + struct vrequest treq; + struct volume *tvp; + struct vcache *vcp; + struct dcache *tdc; + cred_t *credp; + afs_size_t dirOffset, dirLen; + afs_int32 code = 0; + + if (!parent->d_inode) { +#ifdef OSI_EXPORT_DEBUG + /* can't lookup name in a negative dentry */ + printk("afs: get_name(%s, %s): no parent inode\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + child->d_name.name ? (char *)child->d_name.name : "?"); +#endif + return -EIO; + } + if (!child->d_inode) { +#ifdef OSI_EXPORT_DEBUG + /* can't find the FID of negative dentry */ + printk("afs: get_name(%s, %s): no child inode\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + child->d_name.name ? (char *)child->d_name.name : "?"); +#endif + return -ENOENT; + } + + afs_InitFakeStat(&fakestate); + + credp = crref(); + lock_kernel(); + AFS_GLOCK(); + + vcp = VTOAFS(child->d_inode); + + /* special case dynamic mount directory */ + if (afs_IsDynrootMount(vcp)) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): this is the dynmount dir\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique); +#endif + data.fid = vcp->fid; + if (VTOAFS(parent->d_inode) == afs_globalVp) + strcpy(name, AFS_DYNROOT_MOUNTNAME); + else + code = -ENOENT; + goto done; + } + + /* Figure out what FID to look for */ + if (vcp->mvstat == 2) { /* volume root */ + tvp = afs_GetVolume(&vcp->fid, 0, READ_LOCK); + if (!tvp) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): no volume for root\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique); +#endif + code = ENOENT; + goto done; + } + data.fid = tvp->mtpoint; + afs_PutVolume(tvp, READ_LOCK); + } else { + data.fid = vcp->fid; + } + + vcp = VTOAFS(parent->d_inode); +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): parent is 0x%08x/%d/%d.%d\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique); +#endif + + code = afs_InitReq(&treq, credp); + if (code) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): afs_InitReq: %d\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, code); +#endif + goto done; + } + + /* a dynamic mount point in the dynamic mount directory */ + if (afs_IsDynrootMount(vcp) && afs_IsDynrootAnyFid(&data.fid) + && VNUM_TO_VNTYPE(data.fid.Fid.Vnode) == VN_TYPE_MOUNT) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): dynamic mount point\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique); +#endif + vcp = afs_GetVCache(&data.fid, &treq, NULL, NULL); + if (vcp) { + ObtainReadLock(&vcp->lock); + if (strlen(vcp->linkData + 1) <= NAME_MAX) + strcpy(name, vcp->linkData + 1); + else + code = ENOENT; + ReleaseReadLock(&vcp->lock); + afs_PutVCache(vcp); + } else { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): no vcache\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique); +#endif + code = ENOENT; + } + goto done; + } + + code = afs_EvalFakeStat(&vcp, &fakestate, &treq); + if (code) + goto done; + + if (vcp->fid.Cell != data.fid.Cell || + vcp->fid.Fid.Volume != data.fid.Fid.Volume) { + /* parent is not the expected cell and volume; thus it + * cannot possibly contain the fid we are looking for */ +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): wrong parent 0x%08x/%d\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, + vcp->fid.Cell, vcp->fid.Fid.Volume); +#endif + code = ENOENT; + goto done; + } + + +redo: + if (!(vcp->states & CStatd)) { + if ((code = afs_VerifyVCache2(vcp, &treq))) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): VerifyVCache2(0x%08x/%d/%d.%d): %d\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique, code); +#endif + goto done; + } + } + + tdc = afs_GetDCache(vcp, (afs_size_t) 0, &treq, &dirOffset, &dirLen, 1); + if (!tdc) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): GetDCache(0x%08x/%d/%d.%d): %d\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique, code); +#endif + code = EIO; + goto done; + } + + ObtainReadLock(&vcp->lock); + ObtainReadLock(&tdc->lock); + + /* + * Make sure that the data in the cache is current. There are two + * cases we need to worry about: + * 1. The cache data is being fetched by another process. + * 2. The cache data is no longer valid + */ + while ((vcp->states & CStatd) + && (tdc->dflags & DFFetching) + && hsame(vcp->m.DataVersion, tdc->f.versionNo)) { + ReleaseReadLock(&tdc->lock); + ReleaseReadLock(&vcp->lock); + afs_osi_Sleep(&tdc->validPos); + ObtainReadLock(&vcp->lock); + ObtainReadLock(&tdc->lock); + } + if (!(vcp->states & CStatd) + || !hsame(vcp->m.DataVersion, tdc->f.versionNo)) { + ReleaseReadLock(&tdc->lock); + ReleaseReadLock(&vcp->lock); + afs_PutDCache(tdc); +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): dir (0x%08x/%d/%d.%d) changed; retrying\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique); +#endif + goto redo; + } + + data.name = name; + data.found = 0; + code = afs_dir_EnumerateDir(tdc, get_name_hook, &data); + if (!code && !data.found) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): not found\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique); +#endif + code = ENOENT; + } else if (code) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_name(%s, 0x%08x/%d/%d.%d): Enumeratedir(0x%08x/%d/%d.%d): %d\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique, code); +#endif + } + + ReleaseReadLock(&tdc->lock); + ReleaseReadLock(&vcp->lock); + afs_PutDCache(tdc); + +done: + if (!code) { + printk("afs: get_name(%s, 0x%08x/%d/%d.%d) => %s\n", + parent->d_name.name ? (char *)parent->d_name.name : "?", + data.fid.Cell, data.fid.Fid.Volume, + data.fid.Fid.Vnode, data.fid.Fid.Unique, name); + } + afs_PutFakeStat(&fakestate); + AFS_GUNLOCK(); + unlock_kernel(); + crfree(credp); + code = afs_CheckCode(code, &treq, 102); + return -code; +} + + +static struct dentry *afs_export_get_parent(struct dentry *child) +{ + struct VenusFid tfid; + struct vrequest treq; + struct cell *tcell; + struct vcache *vcp; + struct dentry *dp = NULL; + cred_t *credp; + afs_uint32 cellidx; + int code; + + if (!child->d_inode) { + /* can't find the parent of a negative dentry */ +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_parent(%s): no inode\n", + child->d_name.name ? (char *)child->d_name.name : "?"); +#endif + return ERR_PTR(-EIO); + } + + credp = crref(); + lock_kernel(); + AFS_GLOCK(); + + vcp = VTOAFS(child->d_inode); + + if (afs_IsDynrootMount(vcp)) { + /* the dynmount directory; parent is always the AFS root */ + tfid = afs_globalVp->fid; + + } else if (afs_IsDynrootAny(vcp) && + VNUM_TO_VNTYPE(vcp->fid.Fid.Vnode) == VN_TYPE_MOUNT) { + /* a mount point in the dynmount directory */ + afs_GetDynrootMountFid(&tfid); + + } else if (vcp->mvstat == 2) { + /* volume root */ + ObtainReadLock(&vcp->lock); + if (vcp->mvid && vcp->mvid->Fid.Volume) { + tfid = *vcp->mvid; + ReleaseReadLock(&vcp->lock); + } else { + ReleaseReadLock(&vcp->lock); + tcell = afs_GetCell(vcp->fid.Cell, READ_LOCK); + if (!tcell) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_parent(0x%08x/%d/%d.%d): no cell\n", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique); +#endif + dp = ERR_PTR(-ENOENT); + goto done; + } + + cellidx = tcell->cellIndex; + afs_PutCell(tcell, READ_LOCK); + + afs_GetDynrootMountFid(&tfid); + tfid.Fid.Vnode = VNUM_FROM_TYPEID(VN_TYPE_MOUNT, cellidx << 2); + tfid.Fid.Unique = vcp->fid.Fid.Volume; + } + + } else { + /* any other vnode */ + if (vType(vcp) == VDIR && !vcp->parentVnode && vcp->mvstat != 1) { + code = afs_InitReq(&treq, credp); + if (code) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_parent(0x%08x/%d/%d.%d): InitReq: %d\n", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique, code); +#endif + dp = ERR_PTR(-ENOENT); + goto done; + } else { + code = update_dir_parent(&treq, vcp); + if (code) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_parent(0x%08x/%d/%d.%d): update_dir_parent: %d\n", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique, code); +#endif + dp = ERR_PTR(-ENOENT); + goto done; + } + } + } + + tfid.Cell = vcp->fid.Cell; + tfid.Fid.Volume = vcp->fid.Fid.Volume; + tfid.Fid.Vnode = vcp->parentVnode; + tfid.Fid.Unique = vcp->parentUnique; + } + +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_parent(0x%08x/%d/%d.%d): => 0x%08x/%d/%d.%d\n", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique, + tfid.Cell, tfid.Fid.Volume, tfid.Fid.Vnode, tfid.Fid.Unique); +#endif + + dp = get_dentry_from_fid(credp, &tfid); + if (!dp) { +#ifdef OSI_EXPORT_DEBUG + printk("afs: get_parent(0x%08x/%d/%d.%d): no dentry\n", + vcp->fid.Cell, vcp->fid.Fid.Volume, + vcp->fid.Fid.Vnode, vcp->fid.Fid.Unique); +#endif + dp = ERR_PTR(-ENOENT); + } + +done: + AFS_GUNLOCK(); + unlock_kernel(); + crfree(credp); + + return dp; +} + + +struct export_operations afs_export_ops = { + .encode_fh = afs_encode_fh, +#if defined(NEW_EXPORT_OPS) + .fh_to_dentry = afs_fh_to_dentry, +#else + .decode_fh = afs_decode_fh, + .get_dentry = afs_export_get_dentry, +#endif + .get_name = afs_export_get_name, + .get_parent = afs_export_get_parent, +}; diff --git a/src/afs/LINUX/osi_file.c b/src/afs/LINUX/osi_file.c index 268917130..e6e1c1942 100644 --- a/src/afs/LINUX/osi_file.c +++ b/src/afs/LINUX/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_file.c,v 1.19.2.16 2008/03/26 04:10:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_file.c,v 1.28.2.10 2008/03/26 04:10:39 shadow Exp $"); #ifdef AFS_LINUX24_ENV #include "h/module.h" /* early to avoid printf->printk mapping */ @@ -20,12 +20,13 @@ RCSID #include "afsincludes.h" /* Afs-based standard headers */ #include "afs/afs_stats.h" /* afs statistics */ #include "h/smp_lock.h" +#if defined(AFS_LINUX26_ENV) +#include "h/namei.h" +#endif #if !defined(HAVE_IGET) #include "h/exportfs.h" #endif -int afs_osicred_initialized = 0; -struct AFS_UCRED afs_osi_cred; afs_lock_t afs_xosi; /* lock is for tvattr */ extern struct osi_dev cacheDev; #if defined(AFS_LINUX24_ENV) @@ -365,3 +366,190 @@ shutdown_osifile(void) afs_osicred_initialized = 0; } } + +/* Intialize cache device info and fragment size for disk cache partition. */ +int +osi_InitCacheInfo(char *aname) +{ + int code; + struct dentry *dp; + extern ino_t cacheInode; + extern struct osi_dev cacheDev; + extern afs_int32 afs_fsfragsize; + extern struct super_block *afs_cacheSBp; + extern struct vfsmount *afs_cacheMnt; + code = osi_lookupname_internal(aname, 1, &afs_cacheMnt, &dp); + if (code) + return ENOENT; + + cacheInode = dp->d_inode->i_ino; + cacheDev.dev = dp->d_inode->i_sb->s_dev; + afs_fsfragsize = dp->d_inode->i_sb->s_blocksize - 1; + afs_cacheSBp = dp->d_inode->i_sb; + + dput(dp); + + return 0; +} + + +#define FOP_READ(F, B, C) (F)->f_op->read(F, B, (size_t)(C), &(F)->f_pos) +#define FOP_WRITE(F, B, C) (F)->f_op->write(F, B, (size_t)(C), &(F)->f_pos) + +/* osi_rdwr + * seek, then read or write to an open inode. addrp points to data in + * kernel space. + */ +int +osi_rdwr(struct osi_file *osifile, uio_t * uiop, int rw) +{ +#ifdef AFS_LINUX26_ENV + struct file *filp = osifile->filp; +#else + struct file *filp = &osifile->file; +#endif + KERNEL_SPACE_DECL; + int code = 0; + struct iovec *iov; + afs_size_t count; + unsigned long savelim; + + savelim = current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur; + current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY; + + if (uiop->uio_seg == AFS_UIOSYS) + TO_USER_SPACE(); + + /* seek to the desired position. Return -1 on error. */ + if (filp->f_op->llseek) { + if (filp->f_op->llseek(filp, (loff_t) uiop->uio_offset, 0) != uiop->uio_offset) + return -1; + } else + filp->f_pos = uiop->uio_offset; + + while (code == 0 && uiop->uio_resid > 0 && uiop->uio_iovcnt > 0) { + iov = uiop->uio_iov; + count = iov->iov_len; + if (count == 0) { + uiop->uio_iov++; + uiop->uio_iovcnt--; + continue; + } + + if (rw == UIO_READ) + code = FOP_READ(filp, iov->iov_base, count); + else + code = FOP_WRITE(filp, iov->iov_base, count); + + if (code < 0) { + code = -code; + break; + } else if (code == 0) { + /* + * This is bad -- we can't read any more data from the + * file, but we have no good way of signaling a partial + * read either. + */ + code = EIO; + break; + } + + iov->iov_base += code; + iov->iov_len -= code; + uiop->uio_resid -= code; + uiop->uio_offset += code; + code = 0; + } + + if (uiop->uio_seg == AFS_UIOSYS) + TO_KERNEL_SPACE(); + + current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur = savelim; + + return code; +} + +/* setup_uio + * Setup a uio struct. + */ +void +setup_uio(uio_t * uiop, struct iovec *iovecp, const char *buf, afs_offs_t pos, + int count, uio_flag_t flag, uio_seg_t seg) +{ + iovecp->iov_base = (char *)buf; + iovecp->iov_len = count; + uiop->uio_iov = iovecp; + uiop->uio_iovcnt = 1; + uiop->uio_offset = pos; + uiop->uio_seg = seg; + uiop->uio_resid = count; + uiop->uio_flag = flag; +} + + +/* uiomove + * UIO_READ : dp -> uio + * UIO_WRITE : uio -> dp + */ +int +uiomove(char *dp, int length, uio_flag_t rw, uio_t * uiop) +{ + int count; + struct iovec *iov; + int code; + + while (length > 0 && uiop->uio_resid > 0 && uiop->uio_iovcnt > 0) { + iov = uiop->uio_iov; + count = iov->iov_len; + + if (!count) { + uiop->uio_iov++; + uiop->uio_iovcnt--; + continue; + } + + if (count > length) + count = length; + + switch (uiop->uio_seg) { + case AFS_UIOSYS: + switch (rw) { + case UIO_READ: + memcpy(iov->iov_base, dp, count); + break; + case UIO_WRITE: + memcpy(dp, iov->iov_base, count); + break; + default: + printf("uiomove: Bad rw = %d\n", rw); + return -EINVAL; + } + break; + case AFS_UIOUSER: + switch (rw) { + case UIO_READ: + AFS_COPYOUT(dp, iov->iov_base, count, code); + break; + case UIO_WRITE: + AFS_COPYIN(iov->iov_base, dp, count, code); + break; + default: + printf("uiomove: Bad rw = %d\n", rw); + return -EINVAL; + } + break; + default: + printf("uiomove: Bad seg = %d\n", uiop->uio_seg); + return -EINVAL; + } + + dp += count; + length -= count; + iov->iov_base += count; + iov->iov_len -= count; + uiop->uio_offset += count; + uiop->uio_resid -= count; + } + return 0; +} + diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c index cd8fb5035..8ba86e23c 100644 --- a/src/afs/LINUX/osi_groups.c +++ b/src/afs/LINUX/osi_groups.c @@ -20,11 +20,12 @@ #endif RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.25.2.15 2008/04/19 21:56:11 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.28.4.14 2008/06/09 03:39:16 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" #include "afs/afs_stats.h" /* statistics */ +#include "afs/nfsclient.h" #ifdef AFS_LINUX22_ENV #include "h/smp_lock.h" #endif @@ -333,8 +334,7 @@ setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag, code = __setpag(cr, pagvalue, newpag, change_parent); #ifdef LINUX_KEYRING_SUPPORT - if (code == 0) { - + if (code == 0 && (*cr)->cr_rgid != NFSXLATOR_CRED) { (void) install_session_keyring(current, NULL); if (current->signal->session_keyring) { @@ -646,7 +646,11 @@ void osi_keyring_init(void) # endif rcu_read_lock(); # endif +#if defined(EXPORTED_FIND_TASK_BY_PID) p = find_task_by_pid(1); +#else + p = find_task_by_vpid(1); +#endif if (p && p->user->session_keyring) __key_type_keyring = p->user->session_keyring->type; # ifdef EXPORTED_TASKLIST_LOCK diff --git a/src/afs/LINUX/osi_ioctl.c b/src/afs/LINUX/osi_ioctl.c new file mode 100644 index 000000000..3466fd50e --- /dev/null +++ b/src/afs/LINUX/osi_ioctl.c @@ -0,0 +1,145 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Linux module support routines. + * + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/LINUX/osi_ioctl.c,v 1.1.2.2 2006/07/31 21:27:39 shadow Exp $"); + +#include /* early to avoid printf->printk mapping */ +#include "afs/sysincludes.h" +#include "afsincludes.h" +#include "h/unistd.h" /* For syscall numbers. */ +#include "h/mm.h" + +#ifdef AFS_AMD64_LINUX20_ENV +#include +#endif +#ifdef AFS_SPARC64_LINUX20_ENV +#include +#endif + +#include +#include +#include +#include +#include + +extern struct proc_dir_entry *openafs_procfs; +#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) +static int ioctl32_done; +#endif + +extern asmlinkage long +afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); + +static int +afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd, + unsigned long arg) +{ + + struct afsprocdata sysargs; +#ifdef NEED_IOCTL32 + struct afsprocdata32 sysargs32; +#endif + + if (cmd != VIOC_SYSCALL && cmd != VIOC_SYSCALL32) return -EINVAL; + +#ifdef NEED_IOCTL32 +#ifdef AFS_LINUX26_ENV +#ifdef AFS_S390X_LINUX26_ENV + if (test_thread_flag(TIF_31BIT)) +#elif AFS_AMD64_LINUX20_ENV + if (test_thread_flag(TIF_IA32)) +#else + if (test_thread_flag(TIF_32BIT)) +#endif /* AFS_S390X_LINUX26_ENV */ +#else +#ifdef AFS_SPARC64_LINUX24_ENV + if (current->thread.flags & SPARC_FLAG_32BIT) +#elif defined(AFS_SPARC64_LINUX20_ENV) + if (current->tss.flags & SPARC_FLAG_32BIT) +#elif defined(AFS_AMD64_LINUX20_ENV) + if (current->thread.flags & THREAD_IA32) +#elif defined(AFS_PPC64_LINUX20_ENV) + if (current->thread.flags & PPC_FLAG_32BIT) +#elif defined(AFS_S390X_LINUX20_ENV) + if (current->thread.flags & S390_FLAG_31BIT) +#else +#error Not done for this linux type +#endif /* AFS_LINUX26_ENV */ +#endif /* NEED_IOCTL32 */ + { + if (copy_from_user(&sysargs32, (void *)arg, + sizeof(struct afsprocdata32))) + return -EFAULT; + + return afs_syscall((unsigned long)sysargs32.syscall, + (unsigned long)sysargs32.param1, + (unsigned long)sysargs32.param2, + (unsigned long)sysargs32.param3, + (unsigned long)sysargs32.param4); + } else +#endif + { + if (copy_from_user(&sysargs, (void *)arg, sizeof(struct afsprocdata))) + return -EFAULT; + + return afs_syscall(sysargs.syscall, sysargs.param1, + sysargs.param2, sysargs.param3, sysargs.param4); + } +} + +#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL) +static long afs_unlocked_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) { + return afs_ioctl(FILE_INODE(file), file, cmd, arg); +} +#endif + +static struct file_operations afs_syscall_fops = { +#ifdef HAVE_UNLOCKED_IOCTL + .unlocked_ioctl = afs_unlocked_ioctl, +#else + .ioctl = afs_ioctl, +#endif +#ifdef HAVE_COMPAT_IOCTL + .compat_ioctl = afs_unlocked_ioctl, +#endif +}; + +void +osi_ioctl_init(void) +{ + struct proc_dir_entry *entry; + + entry = create_proc_entry(PROC_SYSCALL_NAME, 0666, openafs_procfs); + entry->proc_fops = &afs_syscall_fops; + entry->owner = THIS_MODULE; + +#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) + if (register_ioctl32_conversion(VIOC_SYSCALL32, NULL) == 0) + ioctl32_done = 1; +#endif +} + +void +osi_ioctl_clean(void) +{ + remove_proc_entry(PROC_SYSCALL_NAME, openafs_procfs); +#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) + if (ioctl32_done) + unregister_ioctl32_conversion(VIOC_SYSCALL32); +#endif +} diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c index 29eb1c0df..90f6a67c1 100644 --- a/src/afs/LINUX/osi_misc.c +++ b/src/afs/LINUX/osi_misc.c @@ -15,8 +15,9 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_misc.c,v 1.34.2.12 2008/03/10 19:05:28 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_misc.c,v 1.44.4.6 2008/07/01 03:35:23 shadow Exp $"); +#include /* early to avoid printf->printk mapping */ #include "afs/sysincludes.h" #include "afsincludes.h" #include "afs/afs_stats.h" @@ -25,8 +26,54 @@ RCSID #endif #if defined(AFS_LINUX26_ENV) #include "h/namei.h" +#include "h/kthread.h" #endif +int afs_osicred_initialized = 0; +struct AFS_UCRED afs_osi_cred; + +void +afs_osi_SetTime(osi_timeval_t * tvp) +{ +#if defined(AFS_LINUX24_ENV) + +#if defined(AFS_LINUX26_ENV) + struct timespec tv; + tv.tv_sec = tvp->tv_sec; + tv.tv_nsec = tvp->tv_usec * NSEC_PER_USEC; +#else + struct timeval tv; + tv.tv_sec = tvp->tv_sec; + tv.tv_usec = tvp->tv_usec; +#endif + + AFS_STATCNT(osi_SetTime); + + do_settimeofday(&tv); +#else + extern int (*sys_settimeofdayp) (struct timeval * tv, + struct timezone * tz); + + KERNEL_SPACE_DECL; + + AFS_STATCNT(osi_SetTime); + + TO_USER_SPACE(); + if (sys_settimeofdayp) + (void)(*sys_settimeofdayp) (tvp, NULL); + TO_KERNEL_SPACE(); +#endif +} + +void +osi_linux_mask(void) +{ + SIG_LOCK(current); + sigfillset(¤t->blocked); + RECALC_SIGPENDING(current); + SIG_UNLOCK(current); +} + #if defined(AFS_LINUX24_ENV) /* LOOKUP_POSITIVE is becoming the default */ #ifndef LOOKUP_POSITIVE @@ -112,254 +159,61 @@ osi_lookupname(char *aname, uio_seg_t seg, int followlink, struct dentry **dpp) } #endif -/* Intialize cache device info and fragment size for disk cache partition. */ -int -osi_InitCacheInfo(char *aname) -{ - int code; - struct dentry *dp; - extern ino_t cacheInode; - extern struct osi_dev cacheDev; - extern afs_int32 afs_fsfragsize; - extern struct super_block *afs_cacheSBp; - extern struct vfsmount *afs_cacheMnt; - code = osi_lookupname_internal(aname, 1, &afs_cacheMnt, &dp); - if (code) - return ENOENT; - - cacheInode = dp->d_inode->i_ino; - cacheDev.dev = dp->d_inode->i_sb->s_dev; - afs_fsfragsize = dp->d_inode->i_sb->s_blocksize - 1; - afs_cacheSBp = dp->d_inode->i_sb; - - dput(dp); - - return 0; -} - - -#define FOP_READ(F, B, C) (F)->f_op->read(F, B, (size_t)(C), &(F)->f_pos) -#define FOP_WRITE(F, B, C) (F)->f_op->write(F, B, (size_t)(C), &(F)->f_pos) -/* osi_rdwr - * seek, then read or write to an open inode. addrp points to data in - * kernel space. +#ifdef AFS_LINUX26_ENV +/* This is right even for Linux 2.4, but on that version d_path is inline + * and implemented in terms of __d_path, which is not exported. */ -int -osi_rdwr(struct osi_file *osifile, uio_t * uiop, int rw) +int osi_abspath(char *aname, char *buf, int buflen, + int followlink, char **pathp) { -#ifdef AFS_LINUX26_ENV - struct file *filp = osifile->filp; + struct dentry *dp = NULL; + struct vfsmount *mnt = NULL; + char *tname, *path; + int code; + + code = ENOENT; + tname = getname(aname); + if (IS_ERR(tname)) + return -PTR_ERR(tname); + code = osi_lookupname_internal(tname, followlink, &mnt, &dp); + if (!code) { +#if defined(D_PATH_TAKES_STRUCT_PATH) + struct path p = { mnt, dp }; + path = d_path(&p, buf, buflen); #else - struct file *filp = &osifile->file; + path = d_path(dp, mnt, buf, buflen); #endif - KERNEL_SPACE_DECL; - int code = 0; - struct iovec *iov; - afs_size_t count; - unsigned long savelim; - - savelim = current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur; - current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur = RLIM_INFINITY; - - if (uiop->uio_seg == AFS_UIOSYS) - TO_USER_SPACE(); - - /* seek to the desired position. Return -1 on error. */ - if (filp->f_op->llseek) { - if (filp->f_op->llseek(filp, (loff_t) uiop->uio_offset, 0) != uiop->uio_offset) - return -1; - } else - filp->f_pos = uiop->uio_offset; - - while (code == 0 && uiop->uio_resid > 0 && uiop->uio_iovcnt > 0) { - iov = uiop->uio_iov; - count = iov->iov_len; - if (count == 0) { - uiop->uio_iov++; - uiop->uio_iovcnt--; - continue; - } - - if (rw == UIO_READ) - code = FOP_READ(filp, iov->iov_base, count); - else - code = FOP_WRITE(filp, iov->iov_base, count); - if (code < 0) { - code = -code; - break; - } else if (code == 0) { - /* - * This is bad -- we can't read any more data from the - * file, but we have no good way of signaling a partial - * read either. - */ - code = EIO; - break; + if (IS_ERR(path)) { + code = -PTR_ERR(path); + } else { + *pathp = path; } - iov->iov_base += code; - iov->iov_len -= code; - uiop->uio_resid -= code; - uiop->uio_offset += code; - code = 0; + dput(dp); + mntput(mnt); } - if (uiop->uio_seg == AFS_UIOSYS) - TO_KERNEL_SPACE(); - - current->TASK_STRUCT_RLIM[RLIMIT_FSIZE].rlim_cur = savelim; - + putname(tname); return code; } -/* setup_uio - * Setup a uio struct. - */ -void -setup_uio(uio_t * uiop, struct iovec *iovecp, const char *buf, afs_offs_t pos, - int count, uio_flag_t flag, uio_seg_t seg) -{ - iovecp->iov_base = (char *)buf; - iovecp->iov_len = count; - uiop->uio_iov = iovecp; - uiop->uio_iovcnt = 1; - uiop->uio_offset = pos; - uiop->uio_seg = seg; - uiop->uio_resid = count; - uiop->uio_flag = flag; -} - -/* uiomove - * UIO_READ : dp -> uio - * UIO_WRITE : uio -> dp - */ -int -uiomove(char *dp, int length, uio_flag_t rw, uio_t * uiop) +/* This could use some work, and support on more platforms. */ +int afs_thread_wrapper(void *rock) { - int count; - struct iovec *iov; - int code; - - while (length > 0 && uiop->uio_resid > 0 && uiop->uio_iovcnt > 0) { - iov = uiop->uio_iov; - count = iov->iov_len; - - if (!count) { - uiop->uio_iov++; - uiop->uio_iovcnt--; - continue; - } - - if (count > length) - count = length; - - switch (uiop->uio_seg) { - case AFS_UIOSYS: - switch (rw) { - case UIO_READ: - memcpy(iov->iov_base, dp, count); - break; - case UIO_WRITE: - memcpy(dp, iov->iov_base, count); - break; - default: - printf("uiomove: Bad rw = %d\n", rw); - return -EINVAL; - } - break; - case AFS_UIOUSER: - switch (rw) { - case UIO_READ: - AFS_COPYOUT(dp, iov->iov_base, count, code); - break; - case UIO_WRITE: - AFS_COPYIN(iov->iov_base, dp, count, code); - break; - default: - printf("uiomove: Bad rw = %d\n", rw); - return -EINVAL; - } - break; - default: - printf("uiomove: Bad seg = %d\n", uiop->uio_seg); - return -EINVAL; - } - - dp += count; - length -= count; - iov->iov_base += count; - iov->iov_len -= count; - uiop->uio_offset += count; - uiop->uio_resid -= count; - } + void (*proc)(void) = rock; + __module_get(THIS_MODULE); + AFS_GLOCK(); + (*proc)(); + AFS_GUNLOCK(); + module_put(THIS_MODULE); return 0; } -void -afs_osi_SetTime(osi_timeval_t * tvp) +void afs_start_thread(void (*proc)(void), char *name) { -#if defined(AFS_LINUX24_ENV) - -#if defined(AFS_LINUX26_ENV) - struct timespec tv; - tv.tv_sec = tvp->tv_sec; - tv.tv_nsec = tvp->tv_usec * NSEC_PER_USEC; -#else - struct timeval tv; - tv.tv_sec = tvp->tv_sec; - tv.tv_usec = tvp->tv_usec; -#endif - - AFS_STATCNT(osi_SetTime); - - do_settimeofday(&tv); -#else - extern int (*sys_settimeofdayp) (struct timeval * tv, - struct timezone * tz); - - KERNEL_SPACE_DECL; - - AFS_STATCNT(osi_SetTime); - - TO_USER_SPACE(); - if (sys_settimeofdayp) - (void)(*sys_settimeofdayp) (tvp, NULL); - TO_KERNEL_SPACE(); -#endif -} - -/* osi_linux_free_inode_pages - * - * Free all vnodes remaining in the afs hash. Must be done before - * shutting down afs and freeing all memory. - */ -void -osi_linux_free_inode_pages(void) -{ - int i; - struct vcache *tvc, *nvc; - extern struct vcache *afs_vhashT[VCSIZE]; - - for (i = 0; i < VCSIZE; i++) { - for (tvc = afs_vhashT[i]; tvc; ) { - int slept; - - nvc = tvc->hnext; - if (afs_FlushVCache(tvc, &slept)) /* slept always 0 for linux? */ - printf("Failed to invalidate all pages on inode 0x%p\n", tvc); - tvc = nvc; - } - } -} - -void -osi_linux_mask(void) -{ - SIG_LOCK(current); - sigfillset(¤t->blocked); - RECALC_SIGPENDING(current); - SIG_UNLOCK(current); + kthread_run(afs_thread_wrapper, proc, "%s", name); } +#endif diff --git a/src/afs/LINUX/osi_module.c b/src/afs/LINUX/osi_module.c index 52d2ced82..5af5aeb66 100644 --- a/src/afs/LINUX/osi_module.c +++ b/src/afs/LINUX/osi_module.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.52.2.29 2007/10/24 18:09:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.74.2.9 2007/10/24 18:22:21 shadow Exp $"); #include /* early to avoid printf->printk mapping */ #include "afs/sysincludes.h" @@ -38,10 +38,6 @@ RCSID #include #endif -#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H -#include -#endif - extern struct file_system_type afs_fs_type; #if !defined(AFS_LINUX24_ENV) @@ -60,285 +56,6 @@ int afs_global_owner = 0; unsigned long afs_linux_page_offset = 0; /* contains the PAGE_OFFSET value */ #endif -static inline int afs_ioctl(struct inode *, struct file *, unsigned int, - unsigned long); -#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL) -static long afs_unlocked_ioctl(struct file *, unsigned int, unsigned long); -#endif - -static struct file_operations afs_syscall_fops = { -#ifdef HAVE_UNLOCKED_IOCTL - .unlocked_ioctl = afs_unlocked_ioctl, -#else - .ioctl = afs_ioctl, -#endif -#ifdef HAVE_COMPAT_IOCTL - .compat_ioctl = afs_unlocked_ioctl, -#endif -}; - -#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H -static void *c_start(struct seq_file *m, loff_t *pos) -{ - struct afs_q *cq, *tq; - loff_t n = 0; - - ObtainReadLock(&afs_xcell); - for (cq = CellLRU.next; cq != &CellLRU; cq = tq) { - tq = QNext(cq); - - if (n++ == *pos) - break; - } - if (cq == &CellLRU) - return NULL; - - return cq; -} - -static void *c_next(struct seq_file *m, void *p, loff_t *pos) -{ - struct afs_q *cq = p, *tq; - - (*pos)++; - tq = QNext(cq); - - if (tq == &CellLRU) - return NULL; - - return tq; -} - -static void c_stop(struct seq_file *m, void *p) -{ - ReleaseReadLock(&afs_xcell); -} - -static int c_show(struct seq_file *m, void *p) -{ - struct afs_q *cq = p; - struct cell *tc = QTOC(cq); - int j; - - seq_printf(m, ">%s #(%d/%d)\n", tc->cellName, - tc->cellNum, tc->cellIndex); - - for (j = 0; j < MAXCELLHOSTS; j++) { - afs_uint32 addr; - - if (!tc->cellHosts[j]) break; - - addr = tc->cellHosts[j]->addr->sa_ip; - seq_printf(m, "%u.%u.%u.%u #%u.%u.%u.%u\n", - NIPQUAD(addr), NIPQUAD(addr)); - } - - return 0; -} - -static struct seq_operations afs_csdb_op = { - .start = c_start, - .next = c_next, - .stop = c_stop, - .show = c_show, -}; - -static int afs_csdb_open(struct inode *inode, struct file *file) -{ - return seq_open(file, &afs_csdb_op); -} - -static struct file_operations afs_csdb_operations = { - .open = afs_csdb_open, - .read = seq_read, - .llseek = seq_lseek, - .release = seq_release, -}; - -#else /* HAVE_KERNEL_LINUX_SEQ_FILE_H */ - -int -csdbproc_info(char *buffer, char **start, off_t offset, int -length) -{ - int len = 0; - off_t pos = 0; - int cnt; - struct afs_q *cq, *tq; - struct cell *tc; - char tbuffer[16]; - /* 90 - 64 cellname, 10 for 32 bit num and index, plus - decor */ - char temp[91]; - afs_uint32 addr; - - ObtainReadLock(&afs_xcell); - - for (cq = CellLRU.next; cq != &CellLRU; cq = tq) { - tc = QTOC(cq); tq = QNext(cq); - - pos += 90; - - if (pos <= offset) { - len = 0; - } else { - sprintf(temp, ">%s #(%d/%d)\n", tc->cellName, - tc->cellNum, tc->cellIndex); - sprintf(buffer + len, "%-89s\n", temp); - len += 90; - if (pos >= offset+length) { - ReleaseReadLock(&afs_xcell); - goto done; - } - } - - for (cnt = 0; cnt < MAXCELLHOSTS; cnt++) { - if (!tc->cellHosts[cnt]) break; - pos += 90; - if (pos <= offset) { - len = 0; - } else { - addr = ntohl(tc->cellHosts[cnt]->addr->sa_ip); - sprintf(tbuffer, "%d.%d.%d.%d", - (int)((addr>>24) & 0xff), -(int)((addr>>16) & 0xff), - (int)((addr>>8) & 0xff), (int)( addr & 0xff)); - sprintf(temp, "%s #%s\n", tbuffer, tbuffer); - sprintf(buffer + len, "%-89s\n", temp); - len += 90; - if (pos >= offset+length) { - ReleaseReadLock(&afs_xcell); - goto done; - } - } - } - } - - ReleaseReadLock(&afs_xcell); - -done: - *start = buffer + len - (pos - offset); - len = pos - offset; - if (len > length) - len = length; - return len; -} - -#endif /* HAVE_KERNEL_LINUX_SEQ_FILE_H */ - -static struct proc_dir_entry *openafs_procfs; -#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) -static int ioctl32_done; -#endif - -#ifdef AFS_LINUX24_ENV -static int -afsproc_init(void) -{ - struct proc_dir_entry *entry1; - struct proc_dir_entry *entry2; - - openafs_procfs = proc_mkdir(PROC_FSDIRNAME, proc_root_fs); - entry1 = create_proc_entry(PROC_SYSCALL_NAME, 0666, openafs_procfs); - - entry1->proc_fops = &afs_syscall_fops; - - entry1->owner = THIS_MODULE; - -#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H - entry2 = create_proc_entry(PROC_CELLSERVDB_NAME, 0, openafs_procfs); - if (entry2) - entry2->proc_fops = &afs_csdb_operations; -#else - entry2 = create_proc_info_entry(PROC_CELLSERVDB_NAME, (S_IFREG|S_IRUGO), openafs_procfs, csdbproc_info); -#endif - -#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) - if (register_ioctl32_conversion(VIOC_SYSCALL32, NULL) == 0) - ioctl32_done = 1; -#endif - return 0; -} - -static void -afsproc_exit(void) -{ - remove_proc_entry(PROC_CELLSERVDB_NAME, openafs_procfs); - remove_proc_entry(PROC_SYSCALL_NAME, openafs_procfs); - remove_proc_entry(PROC_FSDIRNAME, proc_root_fs); -#if defined(NEED_IOCTL32) && !defined(HAVE_COMPAT_IOCTL) - if (ioctl32_done) - unregister_ioctl32_conversion(VIOC_SYSCALL32); -#endif -} -#endif - -extern asmlinkage long -afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4); - -static int -afs_ioctl(struct inode *inode, struct file *file, unsigned int cmd, - unsigned long arg) -{ - - struct afsprocdata sysargs; -#ifdef NEED_IOCTL32 - struct afsprocdata32 sysargs32; -#endif - - if (cmd != VIOC_SYSCALL && cmd != VIOC_SYSCALL32) return -EINVAL; - -#ifdef NEED_IOCTL32 -#ifdef AFS_LINUX26_ENV -#ifdef AFS_S390X_LINUX26_ENV - if (test_thread_flag(TIF_31BIT)) -#elif AFS_AMD64_LINUX20_ENV - if (test_thread_flag(TIF_IA32)) -#else - if (test_thread_flag(TIF_32BIT)) -#endif /* AFS_S390X_LINUX26_ENV */ -#else -#ifdef AFS_SPARC64_LINUX24_ENV - if (current->thread.flags & SPARC_FLAG_32BIT) -#elif defined(AFS_SPARC64_LINUX20_ENV) - if (current->tss.flags & SPARC_FLAG_32BIT) -#elif defined(AFS_AMD64_LINUX20_ENV) - if (current->thread.flags & THREAD_IA32) -#elif defined(AFS_PPC64_LINUX20_ENV) - if (current->thread.flags & PPC_FLAG_32BIT) -#elif defined(AFS_S390X_LINUX20_ENV) - if (current->thread.flags & S390_FLAG_31BIT) -#else -#error Not done for this linux type -#endif /* AFS_LINUX26_ENV */ -#endif /* NEED_IOCTL32 */ - { - if (copy_from_user(&sysargs32, (void *)arg, - sizeof(struct afsprocdata32))) - return -EFAULT; - - return afs_syscall((unsigned long)sysargs32.syscall, - (unsigned long)sysargs32.param1, - (unsigned long)sysargs32.param2, - (unsigned long)sysargs32.param3, - (unsigned long)sysargs32.param4); - } else -#endif - { - if (copy_from_user(&sysargs, (void *)arg, sizeof(struct afsprocdata))) - return -EFAULT; - - return afs_syscall(sysargs.syscall, sysargs.param1, - sysargs.param2, sysargs.param3, sysargs.param4); - } -} - -#if defined(HAVE_UNLOCKED_IOCTL) || defined(HAVE_COMPAT_IOCTL) -static long afs_unlocked_ioctl(struct file *file, unsigned int cmd, - unsigned long arg) { - return afs_ioctl(FILE_INODE(file), file, cmd, arg); -} -#endif #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) int __init @@ -365,15 +82,18 @@ init_module(void) #endif /* !defined(AFS_LINUX24_ENV) */ osi_Init(); +#ifdef AFS_LINUX26_ENV +#if !defined(AFS_NONFSTRANS) + osi_linux_nfssrv_init(); +#endif +#endif err = osi_syscall_init(); if (err) return err; err = afs_init_inodecache(); if (err) { -#ifndef LINUX_KEYRING_SUPPORT osi_syscall_clean(); -#endif return err; } err = register_filesystem(&afs_fs_type); @@ -388,7 +108,8 @@ init_module(void) osi_keyring_init(); #endif #ifdef AFS_LINUX24_ENV - afsproc_init(); + osi_proc_init(); + osi_ioctl_init(); #endif return 0; @@ -410,10 +131,16 @@ cleanup_module(void) unregister_filesystem(&afs_fs_type); afs_destroy_inodecache(); +#ifdef AFS_LINUX26_ENV +#if !defined(AFS_NONFSTRANS) + osi_linux_nfssrv_shutdown(); +#endif +#endif osi_linux_free_afs_memory(); #ifdef AFS_LINUX24_ENV - afsproc_exit(); + osi_ioctl_clean(); + osi_proc_clean(); #endif return; } diff --git a/src/afs/LINUX/osi_nfssrv.c b/src/afs/LINUX/osi_nfssrv.c new file mode 100644 index 000000000..22422abfd --- /dev/null +++ b/src/afs/LINUX/osi_nfssrv.c @@ -0,0 +1,265 @@ +/* + * vi:set cin noet sw=4 tw=70: + * Copyright 2006, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Filesystem export operations for Linux + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/LINUX/osi_nfssrv.c,v 1.1.2.7 2008/07/01 03:35:23 shadow Exp $"); + +#if !defined(AFS_NONFSTRANS) || defined(AFS_AIX_IAUTH_ENV) +#include /* early to avoid printf->printk mapping */ +#include +#include "afs/sysincludes.h" +#include "afsincludes.h" +#include "nfsclient.h" +#include "h/smp_lock.h" +#include +#include + +static unsigned long authtab_addr = 0; +#if defined(module_param) && LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) +module_param(authtab_addr, long, 0); +#else +MODULE_PARM(authtab_addr, "l"); +#endif +MODULE_PARM_DESC(authtab_addr, "Address of the authtab array."); + +extern struct auth_ops *authtab[] __attribute__((weak)); +static struct auth_ops **afs_authtab; +static struct auth_ops *afs_new_authtab[RPC_AUTH_MAXFLAVOR]; +static struct auth_ops *afs_orig_authtab[RPC_AUTH_MAXFLAVOR]; + +static int whine_memory = 0; + +afs_lock_t afs_xnfssrv; + +struct nfs_server_thread { + struct nfs_server_thread *next; /* next in chain */ + pid_t pid; /* pid of this thread */ + int active; /* this thread is servicing an RPC */ + struct sockaddr_in client_addr; /* latest client of this thread */ + int client_addrlen; + afs_int32 uid; /* AFS UID/PAG for this thread */ + afs_int32 code; /* What should InitReq return? */ + int flavor; /* auth flavor */ + uid_t client_uid; /* UID claimed by client */ + gid_t client_gid; /* GID claimed by client */ + gid_t client_g0, client_g1; /* groups claimed by client */ +}; + +static struct nfs_server_thread *nfssrv_list = 0; + +static struct nfs_server_thread *find_nfs_thread(int create) +{ + struct nfs_server_thread *this; + + /* Check that this is an nfsd kernel thread */ + if (current->files != init_task.files || strcmp(current->comm, "nfsd")) + return 0; + + ObtainWriteLock(&afs_xnfssrv, 804); + for (this = nfssrv_list; this; this = this->next) + if (this->pid == current->pid) + break; + if (!this && create) { + this = afs_osi_Alloc(sizeof(struct nfs_server_thread)); + if (this) { + this->next = nfssrv_list; + this->pid = current->pid; + this->client_addrlen = 0; + nfssrv_list = this; + printk("afs: added nfsd task %d/%d\n", + current->tgid, current->pid); + } else if (!whine_memory) { + whine_memory = 1; + printk("afs: failed to allocate memory for nfsd task %d/%d\n", + current->tgid, current->pid); + } + } + ReleaseWriteLock(&afs_xnfssrv); + return this; +} + +static int +svcauth_afs_accept(struct svc_rqst *rqstp, u32 *authp) +{ + struct nfs_server_thread *ns; + struct afs_exporter *outexp; + struct AFS_UCRED *credp; + struct sockaddr_in *addr; + int code; + + code = afs_orig_authtab[rqstp->rq_authop->flavour]->accept(rqstp, authp); + if (code != SVC_OK) + return code; + + AFS_GLOCK(); + ns = find_nfs_thread(1); + if (!ns) { + AFS_GUNLOCK(); + /* XXX maybe we should fail this with rpc_system_err? */ + return SVC_OK; + } +#if HAVE_SVC_ADDR_IN + addr = svc_addr_in(rqstp); +#else + addr = &rqstp->rq_addr; +#endif + + ns->active = 1; + ns->flavor = rqstp->rq_authop->flavour; + ns->code = EACCES; + ns->client_addr = *addr; + ns->client_addrlen = rqstp->rq_addrlen; + ns->client_uid = rqstp->rq_cred.cr_uid; + ns->client_gid = rqstp->rq_cred.cr_gid; + if (rqstp->rq_cred.cr_group_info->ngroups > 0) + ns->client_g0 = GROUP_AT(rqstp->rq_cred.cr_group_info, 0); + else + ns->client_g0 = -1; + if (rqstp->rq_cred.cr_group_info->ngroups > 1) + ns->client_g1 = GROUP_AT(rqstp->rq_cred.cr_group_info, 1); + else + ns->client_g1 = -1; + + if (addr->sin_family != AF_INET) { + printk("afs: NFS request from non-IPv4 client (family %d len %d)\n", + addr->sin_family, rqstp->rq_addrlen); + goto done; + } + + credp = crget(); + credp->cr_uid = rqstp->rq_cred.cr_uid; + credp->cr_gid = rqstp->rq_cred.cr_gid; + get_group_info(rqstp->rq_cred.cr_group_info); + credp->cr_group_info = rqstp->rq_cred.cr_group_info; + + /* avoid creating wildcard entries by mapping anonymous + * clients to afs_nobody */ + if (credp->cr_uid == -1) + credp->cr_uid = -2; + code = afs_nfsclient_reqhandler(0, &credp, addr->sin_addr.s_addr, + &ns->uid, &outexp); + if (!code && outexp) EXP_RELE(outexp); + if (!code) ns->code = 0; + if (code) + printk("afs: svcauth_afs_accept: afs_nfsclient_reqhandler: %d\n", code); + crfree(credp); + +done: + AFS_GUNLOCK(); + return SVC_OK; +} + + +#if 0 +/* This doesn't work, because they helpfully NULL out rqstp->authop + * before calling us, so we have no way to tell what the original + * auth flavor was. + */ +static int +svcauth_afs_release(struct svc_rqst *rqstp) +{ + struct nfs_server_thread *ns; + + AFS_GLOCK(); + ns = find_nfs_thread(0); + if (ns) ns->active = 0; + AFS_GUNLOCK(); + + return afs_orig_authtab[rqstp->rq_authop->flavour]->release(rqstp); +} +#endif + + +int osi_linux_nfs_initreq(struct vrequest *av, struct AFS_UCRED *cr, int *code) +{ + struct nfs_server_thread *ns; + + ns = find_nfs_thread(0); + if (!ns || !ns->active) + return 0; + + *code = ns->code; + if (!ns->code) { + cr->cr_ruid = NFSXLATOR_CRED; + av->uid = ns->uid; + } + return 1; +} + +void osi_linux_nfssrv_init(void) +{ + int i; + + nfssrv_list = 0; + RWLOCK_INIT(&afs_xnfssrv, "afs_xnfssrv"); + + if (authtab && !IS_ERR(authtab)) + afs_authtab = authtab; + else if (authtab_addr) afs_authtab = (struct auth_ops **)authtab_addr; + else { + printk("Warning: Unable to find the address of authtab\n"); + printk("NFS Translator hooks will not be installed\n"); + printk("To correct, specify authtab_addr=\n"); + afs_authtab = 0; + return; + } + + for (i = 0; i < RPC_AUTH_MAXFLAVOR; i++) { + afs_orig_authtab[i] = afs_authtab[i]; + if (!afs_orig_authtab[i] || afs_orig_authtab[i]->flavour != i || + !try_module_get(afs_orig_authtab[i]->owner)) { + afs_orig_authtab[i] = 0; + continue; + } + + afs_new_authtab[i] = afs_osi_Alloc(sizeof(struct auth_ops)); + *(afs_new_authtab[i]) = *(afs_orig_authtab[i]); + afs_new_authtab[i]->owner = THIS_MODULE; + afs_new_authtab[i]->accept = svcauth_afs_accept; + /* afs_new_authtab[i]->release = svcauth_afs_release; */ + svc_auth_unregister(i); + svc_auth_register(i, afs_new_authtab[i]); + } +} + +void osi_linux_nfssrv_shutdown(void) +{ + struct nfs_server_thread *next; + int i; + + if (afs_authtab) { + for (i = 0; i < RPC_AUTH_MAXFLAVOR; i++) { + if (!afs_orig_authtab[i]) + continue; + svc_auth_unregister(i); + svc_auth_register(i, afs_orig_authtab[i]); + module_put(afs_orig_authtab[i]->owner); + afs_osi_Free(afs_new_authtab[i], sizeof(struct auth_ops)); + } + } + + AFS_GLOCK(); + ObtainWriteLock(&afs_xnfssrv, 805); + while (nfssrv_list) { + next = nfssrv_list->next; + afs_osi_Free(nfssrv_list, sizeof(struct nfs_server_thread)); + nfssrv_list = next; + } + ReleaseWriteLock(&afs_xnfssrv); + AFS_GUNLOCK(); +} +#endif /* AFS_NONFSTRANS */ + diff --git a/src/afs/LINUX/osi_pag_module.c b/src/afs/LINUX/osi_pag_module.c new file mode 100644 index 000000000..d0f20f618 --- /dev/null +++ b/src/afs/LINUX/osi_pag_module.c @@ -0,0 +1,161 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Linux module support routines. + * + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/LINUX/osi_pag_module.c,v 1.1.2.8 2008/06/12 20:08:33 shadow Exp $"); + +#if !defined(AFS_NONFSTRANS) || defined(AFS_AIX_IAUTH_ENV) +#include /* early to avoid printf->printk mapping */ +#include "afs/sysincludes.h" +#include "afsincludes.h" +#include "h/unistd.h" /* For syscall numbers. */ +#include "h/mm.h" + +#ifdef AFS_AMD64_LINUX20_ENV +#include +#endif +#ifdef AFS_SPARC64_LINUX20_ENV +#include +#endif + +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) +#include +#include +#include +#endif + +static unsigned long nfs_server_addr = 0; +#if defined(module_param) && LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) +module_param(nfs_server_addr, long, 0); +#else +MODULE_PARM(nfs_server_addr, "l"); +#endif +MODULE_PARM_DESC(nfs_server_addr, "IP Address of NFS Server"); + +static char *this_cell = 0; +#if defined(module_param_array) && LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9) +module_param(this_cell, charp, 0); +#else +MODULE_PARM(this_cell, "s"); +#endif +MODULE_PARM_DESC(this_cell, "Local cell name"); + +#if defined(AFS_LINUX24_ENV) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +DEFINE_MUTEX(afs_global_lock); +#else +DECLARE_MUTEX(afs_global_lock); +#endif +struct proc_dir_entry *openafs_procfs; +#else +struct semaphore afs_global_lock = MUTEX; +#endif +int afs_global_owner = 0; + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) +int __init +afspag_init(void) +#else +int +init_module(void) +#endif +{ +#if !defined(EXPORTED_PROC_ROOT_FS) && defined(AFS_LINUX24_ENV) + char path[64]; +#endif + int err; + + osi_Init(); + + err = osi_syscall_init(); + if (err) + return err; +#ifdef AFS_LINUX24_ENV +#if defined(EXPORTED_PROC_ROOT_FS) + openafs_procfs = proc_mkdir(PROC_FSDIRNAME, proc_root_fs); +#else + sprintf(path, "fs/%s", PROC_FSDIRNAME); + openafs_procfs = proc_mkdir(path, NULL); +#endif + osi_ioctl_init(); +#endif + + afspag_Init(htonl(nfs_server_addr)); + if (this_cell) + afspag_SetPrimaryCell(this_cell); + + return 0; +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) +void __exit +afspag_cleanup(void) +#else +void +cleanup_module(void) +#endif +{ +#if !defined(EXPORTED_PROC_ROOT_FS) && defined(AFS_LINUX24_ENV) + char path[64]; +#endif + osi_syscall_clean(); + + osi_linux_free_afs_memory(); + +#ifdef AFS_LINUX24_ENV + osi_ioctl_clean(); +#if defined(EXPORTED_PROC_ROOT_FS) + remove_proc_entry(PROC_FSDIRNAME, proc_root_fs); +#else + sprintf(path, "fs/%s", PROC_FSDIRNAME); + remove_proc_entry(path, NULL); +#endif +#endif + return; +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +module_init(afspag_init); +module_exit(afspag_cleanup); +#endif + +#ifdef AFS_LINUX26_ENV +/* Hack alert! + * These will never be called in the standalone PAG manager, because + * they are only referenced in afs_InitReq, and nothing calls that. + * However, we need to define them in order to resolve the reference, + * unless we want to move afs_InitReq out of afs_osi_pag.c. + */ +int osi_linux_nfs_initreq(struct vrequest *av, struct AFS_UCRED *cr, int *code) +{ + *code = EACCES; + return 1; +} + +int +afs_nfsclient_reqhandler(struct afs_exporter *exporter, + struct AFS_UCRED **cred, + afs_int32 host, afs_int32 *pagparam, + struct afs_exporter **outexporter) +{ + return EINVAL; +} +#endif +#endif /* AFS_NONFSTRANS */ + diff --git a/src/afs/LINUX/osi_probe.c b/src/afs/LINUX/osi_probe.c index e1a0aaa1f..f661e9ea3 100644 --- a/src/afs/LINUX/osi_probe.c +++ b/src/afs/LINUX/osi_probe.c @@ -45,7 +45,6 @@ /* Code to find the Linux syscall table */ -#if defined(EXPORTED_INIT_MM) #ifdef OSI_PROBE_STANDALONE #define OSI_PROBE_DEBUG #endif @@ -53,6 +52,7 @@ #include #include "afs/param.h" #endif +#if defined(EXPORTED_INIT_MM) #ifdef AFS_LINUX24_ENV #include /* early to avoid printf->printk mapping */ #ifndef OSI_PROBE_STANDALONE diff --git a/src/afs/LINUX/osi_proc.c b/src/afs/LINUX/osi_proc.c new file mode 100644 index 000000000..3fc968ac8 --- /dev/null +++ b/src/afs/LINUX/osi_proc.c @@ -0,0 +1,362 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Linux module support routines. + * + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/LINUX/osi_proc.c,v 1.1.2.5 2008/07/01 03:35:23 shadow Exp $"); + +#include /* early to avoid printf->printk mapping */ +#include "afs/sysincludes.h" +#include "afsincludes.h" +#include "afs/nfsclient.h" +#include "h/unistd.h" /* For syscall numbers. */ +#include "h/mm.h" + +#ifdef AFS_AMD64_LINUX20_ENV +#include +#endif + +#include +#include +#include +#include +#include + +#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H +#include +#endif + +struct proc_dir_entry *openafs_procfs; + +#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H +static void *c_start(struct seq_file *m, loff_t *pos) +{ + struct afs_q *cq, *tq; + loff_t n = 0; + + ObtainReadLock(&afs_xcell); + for (cq = CellLRU.next; cq != &CellLRU; cq = tq) { + tq = QNext(cq); + + if (n++ == *pos) + break; + } + if (cq == &CellLRU) + return NULL; + + return cq; +} + +static void *c_next(struct seq_file *m, void *p, loff_t *pos) +{ + struct afs_q *cq = p, *tq; + + (*pos)++; + tq = QNext(cq); + + if (tq == &CellLRU) + return NULL; + + return tq; +} + +static void c_stop(struct seq_file *m, void *p) +{ + ReleaseReadLock(&afs_xcell); +} + +static int c_show(struct seq_file *m, void *p) +{ + struct afs_q *cq = p; + struct cell *tc = QTOC(cq); + int j; + + seq_printf(m, ">%s #(%d/%d)\n", tc->cellName, + tc->cellNum, tc->cellIndex); + + for (j = 0; j < MAXCELLHOSTS; j++) { + afs_uint32 addr; + + if (!tc->cellHosts[j]) break; + + addr = tc->cellHosts[j]->addr->sa_ip; + seq_printf(m, "%u.%u.%u.%u #%u.%u.%u.%u\n", + NIPQUAD(addr), NIPQUAD(addr)); + } + + return 0; +} + +static struct seq_operations afs_csdb_op = { + .start = c_start, + .next = c_next, + .stop = c_stop, + .show = c_show, +}; + +static int afs_csdb_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &afs_csdb_op); +} + +static struct file_operations afs_csdb_operations = { + .open = afs_csdb_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + + +static void *uu_start(struct seq_file *m, loff_t *pos) +{ + struct unixuser *tu; + loff_t n = 0; + afs_int32 i; + + ObtainReadLock(&afs_xuser); + if (!*pos) + return (void *)(1); + + for (i = 0; i < NUSERS; i++) { + for (tu = afs_users[i]; tu; tu = tu->next) { + if (++n == *pos) + return tu; + } + } + + return NULL; +} + +static void *uu_next(struct seq_file *m, void *p, loff_t *pos) +{ + struct unixuser *tu = p; + afs_int32 i = 0; + + (*pos)++; + if (!p) return NULL; + + if (p != (void *)1) { + if (tu->next) return tu->next; + i = UHash(tu->uid) + 1; + } + + for (; i < NUSERS; i++) + if (afs_users[i]) return afs_users[i]; + return NULL; +} + +static void uu_stop(struct seq_file *m, void *p) +{ + ReleaseReadLock(&afs_xuser); +} + +static int uu_show(struct seq_file *m, void *p) +{ + struct cell *tc = 0; + struct unixuser *tu = p; + char *cellname; + + if (p == (void *)1) { + seq_printf(m, "%10s %4s %-6s %-25s %10s", + "UID/PAG", "Refs", "States", "Cell", "ViceID"); + seq_printf(m, " %10s %10s %10s %3s", + "Tok Set", "Tok Begin", "Tok Expire", "vno"); + seq_printf(m, " %-15s %10s %10s %s\n", + "NFS Client", "UID/PAG", "Client UID", "Sysname(s)"); + + return 0; + } + + if (tu->cell == -1) { + cellname = ""; + } else { + tc = afs_GetCellStale(tu->cell, READ_LOCK); + if (tc) cellname = tc->cellName; + else cellname = ""; + } + + seq_printf(m, "%10d %4d %04x %-25s %10d", + tu->uid, tu->refCount, tu->states, cellname, tu->vid); + + if (tc) afs_PutCell(tc, READ_LOCK); + + if (tu->states & UHasTokens) { + seq_printf(m, " %10d %10d %10d %3d", + tu->tokenTime, tu->ct.BeginTimestamp, tu->ct.EndTimestamp, + tu->ct.AuthHandle); + } else { + seq_printf(m, " %-36s", "Tokens Not Set"); + } + + if (tu->exporter && tu->exporter->exp_type == EXP_NFS) { + struct nfsclientpag *np = (struct nfsclientpag *)(tu->exporter); + char ipaddr[16]; + int i; + + sprintf(ipaddr, "%u.%u.%u.%u", NIPQUAD(np->host)); + seq_printf(m, " %-15s %10d %10d", ipaddr, np->uid, np->client_uid); + if (np->sysnamecount) { + for (i = 0; i < np->sysnamecount; i++) + seq_printf(m, " %s", np->sysname[i]); + } else { + seq_printf(m, " "); + } + + } else if (tu->exporter) { + seq_printf(m, " Unknown exporter type %d", tu->exporter->exp_type); + } + seq_printf(m, "\n"); + + return 0; +} + +static struct seq_operations afs_unixuser_seqop = { + .start = uu_start, + .next = uu_next, + .stop = uu_stop, + .show = uu_show, +}; + +static int afs_unixuser_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &afs_unixuser_seqop); +} + +static struct file_operations afs_unixuser_fops = { + .open = afs_unixuser_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + + +#else /* HAVE_KERNEL_LINUX_SEQ_FILE_H */ + +static int +csdbproc_info(char *buffer, char **start, off_t offset, int +length) +{ + int len = 0; + off_t pos = 0; + int cnt; + struct afs_q *cq, *tq; + struct cell *tc; + char tbuffer[16]; + /* 90 - 64 cellname, 10 for 32 bit num and index, plus + decor */ + char temp[91]; + afs_uint32 addr; + + ObtainReadLock(&afs_xcell); + + for (cq = CellLRU.next; cq != &CellLRU; cq = tq) { + tc = QTOC(cq); tq = QNext(cq); + + pos += 90; + + if (pos <= offset) { + len = 0; + } else { + sprintf(temp, ">%s #(%d/%d)\n", tc->cellName, + tc->cellNum, tc->cellIndex); + sprintf(buffer + len, "%-89s\n", temp); + len += 90; + if (pos >= offset+length) { + ReleaseReadLock(&afs_xcell); + goto done; + } + } + + for (cnt = 0; cnt < MAXCELLHOSTS; cnt++) { + if (!tc->cellHosts[cnt]) break; + pos += 90; + if (pos <= offset) { + len = 0; + } else { + addr = ntohl(tc->cellHosts[cnt]->addr->sa_ip); + sprintf(tbuffer, "%d.%d.%d.%d", + (int)((addr>>24) & 0xff), +(int)((addr>>16) & 0xff), + (int)((addr>>8) & 0xff), (int)( addr & 0xff)); + sprintf(temp, "%s #%s\n", tbuffer, tbuffer); + sprintf(buffer + len, "%-89s\n", temp); + len += 90; + if (pos >= offset+length) { + ReleaseReadLock(&afs_xcell); + goto done; + } + } + } + } + + ReleaseReadLock(&afs_xcell); + +done: + *start = buffer + len - (pos - offset); + len = pos - offset; + if (len > length) + len = length; + return len; +} + +#endif /* HAVE_KERNEL_LINUX_SEQ_FILE_H */ + +void +osi_proc_init(void) +{ + struct proc_dir_entry *entry; +#if !defined(EXPORTED_PROC_ROOT_FS) + char path[64]; +#endif + +#if defined(EXPORTED_PROC_ROOT_FS) + openafs_procfs = proc_mkdir(PROC_FSDIRNAME, proc_root_fs); +#else + sprintf(path, "fs/%s", PROC_FSDIRNAME); + openafs_procfs = proc_mkdir(path, NULL); +#endif +#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H + entry = create_proc_entry("unixusers", 0, openafs_procfs); + if (entry) { + entry->proc_fops = &afs_unixuser_fops; + entry->owner = THIS_MODULE; + } + entry = create_proc_entry(PROC_CELLSERVDB_NAME, 0, openafs_procfs); + if (entry) + entry->proc_fops = &afs_csdb_operations; +#else + entry = create_proc_info_entry(PROC_CELLSERVDB_NAME, (S_IFREG|S_IRUGO), openafs_procfs, csdbproc_info); +#endif + entry->owner = THIS_MODULE; +} + +void +osi_proc_clean(void) +{ +#if !defined(EXPORTED_PROC_ROOT_FS) + char path[64]; +#endif + + remove_proc_entry(PROC_CELLSERVDB_NAME, openafs_procfs); +#ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H + remove_proc_entry("unixusers", openafs_procfs); +#endif +#if defined(EXPORTED_PROC_ROOT_FS) + remove_proc_entry(PROC_FSDIRNAME, proc_root_fs); +#else + sprintf(path, "fs/%s", PROC_FSDIRNAME); + remove_proc_entry(path, NULL); +#endif +} diff --git a/src/afs/LINUX/osi_prototypes.h b/src/afs/LINUX/osi_prototypes.h index 10d85ce0e..a82143d66 100644 --- a/src/afs/LINUX/osi_prototypes.h +++ b/src/afs/LINUX/osi_prototypes.h @@ -27,20 +27,39 @@ extern cred_t *crdup(cred_t * cr); extern cred_t *crref(void); extern void crset(cred_t * cr); +/* osi_nfssrv.c */ +extern int osi_linux_nfs_initreq(struct vrequest *av, struct AFS_UCRED *cr, + int *code); +extern void osi_linux_nfssrv_init(void); +extern void osi_linux_nfssrv_shutdown(void); +extern afs_rwlock_t afs_xnfssrv; + /* osi_file.c */ extern afs_rwlock_t afs_xosi; +extern int osi_InitCacheInfo(char *aname); +extern int osi_rdwr(struct osi_file *osifile, uio_t * uiop, int rw); + +/* osi_ioctl.c */ +extern void osi_ioctl_init(void); +extern void osi_ioctl_clean(void); /* osi_misc.c */ +extern void afs_osi_SetTime(osi_timeval_t * tvp); +extern int osi_lookupname_internal(char *aname, int followlink, + struct vfsmount **mnt, struct dentry **dpp); extern int osi_lookupname(char *aname, uio_seg_t seg, int followlink, struct dentry **dpp); -extern int osi_InitCacheInfo(char *aname); -extern int osi_rdwr(struct osi_file *osifile, uio_t * uiop, int rw); -extern void afs_osi_SetTime(osi_timeval_t * tvp); -extern void osi_linux_free_inode_pages(void); +extern int osi_abspath(char *aname, char *buf, int buflen, + int followlink, char **pathp); +extern void afs_start_thread(void (*proc)(void), char *name); /* osi_probe.c */ extern void *osi_find_syscall_table(int which); +/* osi_proc.c */ +extern void osi_proc_init(void); +extern void osi_proc_clean(void); + /* osi_syscall.c */ extern int osi_syscall_init(void); extern void osi_syscall_clean(void); @@ -63,6 +82,7 @@ extern void osi_VM_Truncate(struct vcache *avc, int alen, extern void vattr2inode(struct inode *ip, struct vattr *vp); extern int afs_init_inodecache(void); extern void afs_destroy_inodecache(void); +extern void osi_linux_free_inode_pages(void); /* osi_vnodeops.c */ extern void afs_fill_inode(struct inode *ip, struct vattr *vattr); diff --git a/src/afs/LINUX/osi_sleep.c b/src/afs/LINUX/osi_sleep.c index e54718cef..9fe3fbc56 100644 --- a/src/afs/LINUX/osi_sleep.c +++ b/src/afs/LINUX/osi_sleep.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_sleep.c,v 1.22.2.11 2007/06/12 05:47:47 rra Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_sleep.c,v 1.30.4.3 2007/06/12 05:44:05 rra Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/LINUX/osi_syscall.c b/src/afs/LINUX/osi_syscall.c index 0d66fbb1f..1dd8ae169 100644 --- a/src/afs/LINUX/osi_syscall.c +++ b/src/afs/LINUX/osi_syscall.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_syscall.c,v 1.1.2.9 2007/03/27 03:22:25 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_syscall.c,v 1.7.4.2 2007/03/27 03:23:41 shadow Exp $"); #ifdef AFS_LINUX24_ENV #include /* early to avoid printf->printk mapping */ diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c index 9303083d1..b76b63c53 100644 --- a/src/afs/LINUX/osi_sysctl.c +++ b/src/afs/LINUX/osi_sysctl.c @@ -1,7 +1,7 @@ /* * osi_sysctl.c: Linux sysctl interface to OpenAFS * - * $Id: osi_sysctl.c,v 1.7.2.6 2007/11/23 13:45:04 shadow Exp $ + * $Id: osi_sysctl.c,v 1.9.2.6 2008/06/12 20:08:33 shadow Exp $ * * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates) */ @@ -18,10 +18,18 @@ #include #endif +/* From afs_util.c */ +extern afs_int32 afs_new_inum; + /* From afs_analyze.c */ extern afs_int32 hm_retry_RO; extern afs_int32 hm_retry_RW; extern afs_int32 hm_retry_int; +extern afs_int32 afs_blocksUsed_0; +extern afs_int32 afs_blocksUsed_1; +extern afs_int32 afs_blocksUsed_2; +extern afs_int32 afs_pct1; +extern afs_int32 afs_pct2; #ifdef CONFIG_SYSCTL static struct ctl_table_header *afs_sysctl = NULL; @@ -99,6 +107,102 @@ static ctl_table afs_sysctl_table[] = { .mode = 0644, .proc_handler = &proc_dointvec }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 7, +#endif + .procname = "afs_blocksUsed", + .data = &afs_blocksUsed, + .maxlen = sizeof(afs_int32), + .mode = 0444, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 8, +#endif + .procname = "afs_blocksUsed_0", + .data = &afs_blocksUsed_0, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 9, +#endif + .procname = "afs_blocksUsed_1", + .data = &afs_blocksUsed_1, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 10, +#endif + .procname = "afs_blocksUsed_2", + .data = &afs_blocksUsed_2, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 11, +#endif + .procname = "afs_pct1", + .data = &afs_pct1, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 12, +#endif + .procname = "afs_pct2", + .data = &afs_pct2, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 13, +#endif + .procname = "afs_cacheBlocks", + .data = &afs_cacheBlocks, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, + { +#if defined(SYSCTL_TABLE_CHECKING) + .ctl_name = CTL_UNNUMBERED, +#else + .ctl_name = 14, +#endif + .procname = "md5inum", + .data = &afs_new_inum, + .maxlen = sizeof(afs_int32), + .mode = 0644, + .proc_handler = &proc_dointvec + }, {0} }; diff --git a/src/afs/LINUX/osi_vfsops.c b/src/afs/LINUX/osi_vfsops.c index d7fc11911..480f42a26 100644 --- a/src/afs/LINUX/osi_vfsops.c +++ b/src/afs/LINUX/osi_vfsops.c @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.28 2007/11/23 13:45:04 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.42.4.22 2008/07/01 03:35:23 shadow Exp $"); #define __NO_VERSION__ /* don't define kernel_version in module.h */ #include /* early to avoid printf->printk mapping */ @@ -39,6 +39,9 @@ struct vfsmount *afs_cacheMnt; int afs_was_mounted = 0; /* Used to force reload if mount/unmount/mount */ extern struct super_operations afs_sops; +#if defined(AFS_LINUX26_ENV) && !defined(AFS_NONFSTRANS) +extern struct export_operations afs_export_ops; +#endif extern afs_rwlock_t afs_xvcache; extern struct afs_q VLRU; @@ -143,6 +146,9 @@ afs_read_super(struct super_block *sb, void *data, int silent) sb->s_blocksize_bits = 10; sb->s_magic = AFS_VFSMAGIC; sb->s_op = &afs_sops; /* Super block (vfs) ops */ +#if defined(AFS_LINUX26_ENV) && !defined(AFS_NONFSTRANS) + sb->s_export_op = &afs_export_ops; +#endif #if defined(MAX_NON_LFS) #ifdef AFS_64BIT_CLIENT #if !defined(MAX_LFS_FILESIZE) @@ -470,6 +476,7 @@ struct super_operations afs_sops = { #endif }; + /************** Support routines ************************/ /* vattr_setattr @@ -537,7 +544,11 @@ vattr2inode(struct inode *ip, struct vattr *vp) ip->i_atime.tv_sec = vp->va_atime.tv_sec; ip->i_atime.tv_nsec = 0; ip->i_mtime.tv_sec = vp->va_mtime.tv_sec; - ip->i_mtime.tv_nsec = 0; + /* Set the mtime nanoseconds to the sysname generation number. + * This convinces NFS clients that all directories have changed + * any time the sysname list changes. + */ + ip->i_mtime.tv_nsec = afs_sysnamegen; ip->i_ctime.tv_sec = vp->va_ctime.tv_sec; ip->i_ctime.tv_nsec = 0; #else @@ -546,3 +557,27 @@ vattr2inode(struct inode *ip, struct vattr *vp) ip->i_ctime = vp->va_ctime.tv_sec; #endif } + +/* osi_linux_free_inode_pages + * + * Free all vnodes remaining in the afs hash. Must be done before + * shutting down afs and freeing all memory. + */ +void +osi_linux_free_inode_pages(void) +{ + int i; + struct vcache *tvc, *nvc; + extern struct vcache *afs_vhashT[VCSIZE]; + + for (i = 0; i < VCSIZE; i++) { + for (tvc = afs_vhashT[i]; tvc; ) { + int slept; + + nvc = tvc->hnext; + if (afs_FlushVCache(tvc, &slept)) /* slept always 0 for linux? */ + printf("Failed to invalidate all pages on inode 0x%p\n", tvc); + tvc = nvc; + } + } +} diff --git a/src/afs/LINUX/osi_vm.c b/src/afs/LINUX/osi_vm.c index f6c9edc74..99d45db1e 100644 --- a/src/afs/LINUX/osi_vm.c +++ b/src/afs/LINUX/osi_vm.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_vm.c,v 1.16.2.1 2005/07/11 19:29:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_vm.c,v 1.17 2005/07/11 18:45:51 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 8cc52cdd5..f2401b7f1 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -22,7 +22,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.64 2008/04/15 12:29:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.126.2.28 2008/07/07 16:53:59 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" @@ -50,8 +50,6 @@ RCSID #endif extern struct vcache *afs_globalVp; - - static ssize_t afs_linux_read(struct file *fp, char *buf, size_t count, loff_t * offp) { @@ -197,7 +195,8 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) code = -ENOENT; goto out; } - ObtainReadLock(&avc->lock); + ObtainSharedLock(&avc->lock, 810); + UpgradeSToWLock(&avc->lock, 811); ObtainReadLock(&tdc->lock); /* * Make sure that the data in the cache is current. There are two @@ -209,19 +208,27 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) && (tdc->dflags & DFFetching) && hsame(avc->m.DataVersion, tdc->f.versionNo)) { ReleaseReadLock(&tdc->lock); - ReleaseReadLock(&avc->lock); + ReleaseSharedLock(&avc->lock); afs_osi_Sleep(&tdc->validPos); - ObtainReadLock(&avc->lock); + ObtainSharedLock(&avc->lock, 812); ObtainReadLock(&tdc->lock); } if (!(avc->states & CStatd) || !hsame(avc->m.DataVersion, tdc->f.versionNo)) { ReleaseReadLock(&tdc->lock); - ReleaseReadLock(&avc->lock); + ReleaseSharedLock(&avc->lock); afs_PutDCache(tdc); goto tagain; } + /* Set the readdir-in-progress flag, and downgrade the lock + * to shared so others will be able to acquire a read lock. + */ + avc->states |= CReadDir; + avc->dcreaddir = tdc; + avc->readdir_pid = MyPidxx; + ConvertWToSLock(&avc->lock); + /* Fill in until we get an error or we're done. This implementation * takes an offset in units of blobs, rather than bytes. */ @@ -236,16 +243,16 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) if (!de) break; - ino = (avc->fid.Fid.Volume << 16) + ntohl(de->fid.vnode); - ino &= 0x7fffffff; /* Assumes 32 bit ino_t ..... */ + ino = afs_calc_inum (avc->fid.Fid.Volume, ntohl(de->fid.vnode)); + if (de->name) len = strlen(de->name); else { printf("afs_linux_readdir: afs_dir_GetBlob failed, null name (inode %lx, dirpos %d)\n", (unsigned long)&tdc->f.inode, dirpos); DRelease((struct buffer *) de, 0); + ReleaseSharedLock(&avc->lock); afs_PutDCache(tdc); - ReleaseReadLock(&avc->lock); code = -ENOENT; goto out; } @@ -282,7 +289,14 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) /* clean up from afs_FindVCache */ afs_PutVCache(tvc); } + /* + * If this is NFS readdirplus, then the filler is going to + * call getattr on this inode, which will deadlock if we're + * holding the GLOCK. + */ + AFS_GUNLOCK(); code = (*filldir) (dirbuf, de->name, len, offset, ino, type); + AFS_GLOCK(); } #else code = (*filldir) (dirbuf, de->name, len, offset, ino); @@ -299,7 +313,11 @@ afs_linux_readdir(struct file *fp, void *dirbuf, filldir_t filldir) ReleaseReadLock(&tdc->lock); afs_PutDCache(tdc); - ReleaseReadLock(&avc->lock); + UpgradeSToWLock(&avc->lock, 813); + avc->states &= ~CReadDir; + avc->dcreaddir = 0; + avc->readdir_pid = 0; + ReleaseSharedLock(&avc->lock); code = 0; out: @@ -472,21 +490,21 @@ afs_linux_lock(struct file *fp, int cmd, struct file_lock *flp) #ifdef AFS_LINUX24_ENV if ((code == 0 || flp->fl_type == F_UNLCK) && - (cmd == F_SETLK || cmd == F_SETLKW)) { + (cmd == F_SETLK || cmd == F_SETLKW)) { #ifdef POSIX_LOCK_FILE_WAIT_ARG - code = posix_lock_file(fp, flp, 0); + code = posix_lock_file(fp, flp, 0); #else - flp->fl_flags &=~ FL_SLEEP; - code = posix_lock_file(fp, flp); -#endif - if (code && flp->fl_type != F_UNLCK) { - struct AFS_FLOCK flock2; - flock2 = flock; - flock2.l_type = F_UNLCK; - AFS_GLOCK(); - afs_lockctl(vcp, &flock2, F_SETLK, credp); - AFS_GUNLOCK(); - } + flp->fl_flags &=~ FL_SLEEP; + code = posix_lock_file(fp, flp); +#endif + if (code && flp->fl_type != F_UNLCK) { + struct AFS_FLOCK flock2; + flock2 = flock; + flock2.l_type = F_UNLCK; + AFS_GLOCK(); + afs_lockctl(vcp, &flock2, F_SETLK, credp); + AFS_GUNLOCK(); + } } #endif /* Convert flock back to Linux's file_lock */ @@ -998,6 +1016,9 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) struct vcache *vcp = NULL; const char *comp = dp->d_name.name; struct inode *ip = NULL; +#if defined(AFS_LINUX26_ENV) + struct dentry *newdp = NULL; +#endif int code; #if defined(AFS_LINUX26_ENV) @@ -1012,7 +1033,15 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) ip = AFSTOV(vcp); afs_getattr(vcp, &vattr, credp); afs_fill_inode(ip, &vattr); - if (hlist_unhashed(&ip->i_hash)) + if ( +#ifdef HAVE_KERNEL_HLIST_UNHASHED + hlist_unhashed(&ip->i_hash) +#elif defined(AFS_LINUX26_ENV) + ip->i_hash.pprev == NULL +#else + ip->i_hash.prev == NULL +#endif + ) insert_inode_hash(ip); } dp->d_op = &afs_dentry_operations; @@ -1023,8 +1052,14 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) if (ip && S_ISDIR(ip->i_mode)) { struct dentry *alias; + /* Try to invalidate an existing alias in favor of our new one */ alias = d_find_alias(ip); +#if defined(AFS_LINUX26_ENV) + /* But not if it's disconnected; then we want d_splice_alias below */ + if (alias && !(alias->d_flags & DCACHE_DISCONNECTED)) { +#else if (alias) { +#endif if (d_invalidate(alias) == 0) { dput(alias); } else { @@ -1038,7 +1073,11 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) } } #endif +#if defined(AFS_LINUX26_ENV) + newdp = d_splice_alias(ip, dp); +#else d_add(dp, ip); +#endif #if defined(AFS_LINUX26_ENV) unlock_kernel(); @@ -1049,8 +1088,13 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) * seeing that the dp->d_inode field is NULL. */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,10) +#if defined(AFS_LINUX26_ENV) + if (!code || code == ENOENT) + return newdp; +#else if (code == ENOENT) return ERR_PTR(0); +#endif else return ERR_PTR(-code); #else @@ -1263,13 +1307,7 @@ afs_linux_rename(struct inode *oldip, struct dentry *olddp, #if defined(AFS_LINUX26_ENV) /* Prevent any new references during rename operation. */ lock_kernel(); -#endif - /* Remove old and new entries from name hash. New one will change below. - * While it's optimal to catch failures and re-insert newdp into hash, - * it's also error prone and in that case we're already dealing with error - * cases. Let another lookup put things right, if need be. - */ -#if defined(AFS_LINUX26_ENV) + if (!d_unhashed(newdp)) { d_drop(newdp); rehash = newdp; @@ -1290,6 +1328,9 @@ afs_linux_rename(struct inode *oldip, struct dentry *olddp, code = afs_rename(VTOAFS(oldip), oldname, VTOAFS(newip), newname, credp); AFS_GUNLOCK(); + if (!code) + olddp->d_time = 0; /* force to revalidate */ + if (rehash) d_rehash(rehash); diff --git a/src/afs/Makefile.am b/src/afs/Makefile.am deleted file mode 100644 index 58ac16009..000000000 --- a/src/afs/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:49 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -SUBDIRS= "foo" diff --git a/src/afs/NBSD/osi_file.c b/src/afs/NBSD/osi_file.c index 99331d05e..2a6487936 100644 --- a/src/afs/NBSD/osi_file.c +++ b/src/afs/NBSD/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/NBSD/osi_file.c,v 1.5.2.2 2007/12/13 19:18:55 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/NBSD/osi_file.c,v 1.5.14.2 2007/12/13 19:18:33 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/NBSD/osi_machdep.h b/src/afs/NBSD/osi_machdep.h index 8703c92ab..f513d8149 100644 --- a/src/afs/NBSD/osi_machdep.h +++ b/src/afs/NBSD/osi_machdep.h @@ -37,6 +37,9 @@ extern struct timeval time; #define afs_bufferpages bufpages +#undef gop_lookupname +#define gop_lookupname(fnamep,segflg,followlink,compvpp) lookupname((fnamep),(segflg),(followlink),NULL,(compvpp)) + #define osi_vnhold(avc,r) do { \ if ((avc)->vrefCount) { VN_HOLD((struct vnode *)(avc)); } \ else osi_Panic("refcnt==0"); } while(0) diff --git a/src/afs/NBSD/osi_vm.c b/src/afs/NBSD/osi_vm.c index 675e1fb47..e48832e9e 100644 --- a/src/afs/NBSD/osi_vm.c +++ b/src/afs/NBSD/osi_vm.c @@ -22,7 +22,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/NBSD/osi_vm.c,v 1.4.2.1 2005/04/03 18:15:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/NBSD/osi_vm.c,v 1.5 2005/04/03 18:09:10 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/NBSD/osi_vnodeops.c b/src/afs/NBSD/osi_vnodeops.c index 78dbee0a9..063a12ab1 100644 --- a/src/afs/NBSD/osi_vnodeops.c +++ b/src/afs/NBSD/osi_vnodeops.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/NBSD/osi_vnodeops.c,v 1.5.2.1 2005/04/03 18:15:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/NBSD/osi_vnodeops.c,v 1.6 2005/04/03 18:09:10 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ diff --git a/src/afs/OBSD/osi_file.c b/src/afs/OBSD/osi_file.c index 5433633d1..4259bfc90 100644 --- a/src/afs/OBSD/osi_file.c +++ b/src/afs/OBSD/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/OBSD/osi_file.c,v 1.10.2.3 2008/01/04 17:56:41 rees Exp $"); + ("$Header: /cvs/openafs/src/afs/OBSD/osi_file.c,v 1.11.2.1 2006/11/09 23:30:54 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afs/afsincludes.h" /* Afs-based standard headers */ @@ -136,7 +136,7 @@ osi_DisableAtimes(struct vnode *avp) int afs_osi_Read(struct osi_file *afile, int offset, void *aptr, afs_int32 asize) { - size_t resid; + unsigned int resid; afs_int32 code; AFS_STATCNT(osi_Read); @@ -164,8 +164,8 @@ afs_osi_Read(struct osi_file *afile, int offset, void *aptr, afs_int32 asize) afile->offset += code; osi_DisableAtimes(afile->vnode); } else { - afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, - (unsigned int) resid, ICL_TYPE_INT32, code); + afs_Trace2(afs_iclSetp, CM_TRACE_READFAILED, ICL_TYPE_INT32, resid, + ICL_TYPE_INT32, code); code = -1; } return code; @@ -176,7 +176,7 @@ int afs_osi_Write(struct osi_file *afile, afs_int32 offset, void *aptr, afs_int32 asize) { - size_t resid; + unsigned int resid; afs_int32 code; AFS_STATCNT(osi_Write); diff --git a/src/afs/OBSD/osi_groups.c b/src/afs/OBSD/osi_groups.c index f28cd3752..5d2ff41c1 100644 --- a/src/afs/OBSD/osi_groups.c +++ b/src/afs/OBSD/osi_groups.c @@ -19,7 +19,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/OBSD/osi_groups.c,v 1.5.2.1 2006/06/23 14:21:12 rees Exp $"); + ("$Header: /cvs/openafs/src/afs/OBSD/osi_groups.c,v 1.6 2006/03/13 16:26:27 rees Exp $"); #include "afs/sysincludes.h" #include "afs/afsincludes.h" diff --git a/src/afs/OBSD/osi_machdep.h b/src/afs/OBSD/osi_machdep.h index c8c96930d..720466d22 100644 --- a/src/afs/OBSD/osi_machdep.h +++ b/src/afs/OBSD/osi_machdep.h @@ -16,7 +16,7 @@ * afs_osi.h. */ -/* $Id: osi_machdep.h,v 1.16.2.9 2008/01/04 17:53:37 rees Exp $ */ +/* $Id: osi_machdep.h,v 1.27.2.1 2006/11/10 00:11:07 shadow Exp $ */ #ifndef _OSI_MACHDEP_H_ #define _OSI_MACHDEP_H_ @@ -69,7 +69,7 @@ /* time */ #define afs_hz hz #define osi_GetTime(x) microtime(x) -extern time_t osi_Time(); +#define osi_Time() (time.tv_sec) /* str */ #define afs_strcasecmp(s1, s2) strncasecmp((s1), (s2), 65535) diff --git a/src/afs/OBSD/osi_sleep.c b/src/afs/OBSD/osi_sleep.c index a8abf5682..06936fab5 100644 --- a/src/afs/OBSD/osi_sleep.c +++ b/src/afs/OBSD/osi_sleep.c @@ -1,5 +1,5 @@ /* - * $Id: osi_sleep.c,v 1.7.2.3 2008/01/04 17:53:37 rees Exp $ + * $Id: osi_sleep.c,v 1.9 2005/07/26 15:25:43 rees Exp $ */ /* @@ -45,7 +45,7 @@ such damages. #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/OBSD/osi_sleep.c,v 1.7.2.3 2008/01/04 17:53:37 rees Exp $"); + ("$Header: /cvs/openafs/src/afs/OBSD/osi_sleep.c,v 1.9 2005/07/26 15:25:43 rees Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afs/afsincludes.h" /* Afs-based standard headers */ @@ -54,21 +54,6 @@ RCSID static char waitV; -time_t -osi_Time() -{ - struct timeval now; - - getmicrotime(&now); - return now.tv_sec; -} - -void -afs_osi_SetTime(osi_timeval_t * atv) -{ - printf("afs attempted to set clock; use \"afsd -nosettime\"\n"); -} - /* cancel osi_Wait */ void afs_osi_CancelWait(struct afs_osi_WaitHandle *achandle) @@ -91,14 +76,13 @@ int afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, int aintok) { int timo, code = 0; - struct timeval atv, now, endTime; + struct timeval atv, endTime; AFS_STATCNT(osi_Wait); atv.tv_sec = ams / 1000; atv.tv_usec = (ams % 1000) * 1000; - getmicrotime(&now); - timeradd(&atv, &now, &endTime); + timeradd(&atv, &time, &endTime); if (ahandle) ahandle->proc = (caddr_t) curproc; @@ -106,7 +90,7 @@ afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, int aintok) AFS_GUNLOCK(); do { - timersub(&endTime, &now, &atv); + timersub(&endTime, &time, &atv); timo = atv.tv_sec * hz + atv.tv_usec * hz / 1000000 + 1; if (aintok) { code = tsleep(&waitV, PCATCH | PVFS, "afs_W1", timo); @@ -120,8 +104,7 @@ afs_osi_Wait(afs_int32 ams, struct afs_osi_WaitHandle *ahandle, int aintok) /* we've been signalled */ break; } - getmicrotime(&now); - } while (timercmp(&now, &endTime, <)); + } while (timercmp(&time, &endTime, <)); AFS_GLOCK(); return code; diff --git a/src/afs/OBSD/osi_vfsops.c b/src/afs/OBSD/osi_vfsops.c index 8b93e44d6..4ee9a5df7 100644 --- a/src/afs/OBSD/osi_vfsops.c +++ b/src/afs/OBSD/osi_vfsops.c @@ -3,7 +3,7 @@ * Original NetBSD version for Transarc afs by John Kohl * OpenBSD version by Jim Rees * - * $Id: osi_vfsops.c,v 1.18.2.2 2005/03/11 06:50:43 shadow Exp $ + * $Id: osi_vfsops.c,v 1.20 2005/03/08 21:58:04 shadow Exp $ */ /* @@ -94,7 +94,7 @@ NONINFRINGEMENT. #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/OBSD/osi_vfsops.c,v 1.18.2.2 2005/03/11 06:50:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/OBSD/osi_vfsops.c,v 1.20 2005/03/08 21:58:04 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afs/afsincludes.h" /* Afs-based standard headers */ @@ -457,7 +457,7 @@ afs_vfs_load(struct lkm_table *lkmtp, int cmd) if (memname[M_AFSBUFFER] == NULL) memname[M_AFSBUFFER] = afsbfrmem; lkmid = lkmtp->id; - printf("OpenAFS ($Revision: 1.18.2.2 $) lkm loaded\n"); + printf("OpenAFS ($Revision: 1.20 $) lkm loaded\n"); return 0; } diff --git a/src/afs/OBSD/osi_vm.c b/src/afs/OBSD/osi_vm.c index e6e37f1f1..51746e1fb 100644 --- a/src/afs/OBSD/osi_vm.c +++ b/src/afs/OBSD/osi_vm.c @@ -22,12 +22,12 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/OBSD/osi_vm.c,v 1.2.2.1 2008/01/03 17:15:19 rees Exp $"); + ("$Header: /cvs/openafs/src/afs/OBSD/osi_vm.c,v 1.2 2003/07/15 23:14:25 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afs/afsincludes.h" /* Afs-based standard headers */ #include "afs/afs_stats.h" /* statistics */ -#include +/* #include */ #include #include @@ -50,16 +50,6 @@ RCSID int osi_VM_FlushVCache(struct vcache *avc, int *slept) { - struct vnode *vp = AFSTOV(avc); - - if (!vp) - return 0; - AFS_GUNLOCK(); - - cache_purge(vp); - uvm_vnp_uncache(vp); - - AFS_GLOCK(); return 0; } @@ -67,7 +57,6 @@ osi_VM_FlushVCache(struct vcache *avc, int *slept) * * Locking: the vcache entry's lock is held. It will usually be dropped and * re-obtained. - * */ void osi_VM_StoreAllSegments(struct vcache *avc) @@ -86,9 +75,6 @@ osi_VM_StoreAllSegments(struct vcache *avc) void osi_VM_TryToSmush(struct vcache *avc, struct AFS_UCRED *acred, int sync) { - ReleaseWriteLock(&avc->lock); - osi_VM_FlushVCache(avc, NULL); - ObtainWriteLock(&avc->lock, 59); } /* Purge VM for a file when its callback is revoked. @@ -98,13 +84,6 @@ osi_VM_TryToSmush(struct vcache *avc, struct AFS_UCRED *acred, int sync) void osi_VM_FlushPages(struct vcache *avc, struct AFS_UCRED *credp) { - struct vnode *vp = AFSTOV(avc); - - if (!vp) - return; - cache_purge(vp); - uvm_vnp_uncache(vp); - uvm_vnp_setsize(vp, avc->m.Length); } /* Purge pages beyond end-of-file, when truncating a file. @@ -116,5 +95,4 @@ osi_VM_FlushPages(struct vcache *avc, struct AFS_UCRED *credp) void osi_VM_Truncate(struct vcache *avc, int alen, struct AFS_UCRED *acred) { - uvm_vnp_setsize(AFSTOV(avc), alen); } diff --git a/src/afs/OBSD/osi_vnodeops.c b/src/afs/OBSD/osi_vnodeops.c index c28613e63..265274b32 100644 --- a/src/afs/OBSD/osi_vnodeops.c +++ b/src/afs/OBSD/osi_vnodeops.c @@ -3,7 +3,7 @@ * Original NetBSD version for Transarc afs by John Kohl * OpenBSD version by Jim Rees * - * $Id: osi_vnodeops.c,v 1.18.2.5 2008/01/08 17:06:59 rees Exp $ + * $Id: osi_vnodeops.c,v 1.20 2006/03/09 15:27:17 rees Exp $ */ /* @@ -99,7 +99,7 @@ NONINFRINGEMENT. #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/OBSD/osi_vnodeops.c,v 1.18.2.5 2008/01/08 17:06:59 rees Exp $"); + ("$Header: /cvs/openafs/src/afs/OBSD/osi_vnodeops.c,v 1.20 2006/03/09 15:27:17 rees Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afs/afsincludes.h" /* Afs-based standard headers */ @@ -920,12 +920,6 @@ afs_nbsd_reclaim(void *v) #endif } -#ifdef AFS_OBSD42_ENV -#define VP_INTERLOCK NULL -#else -#define VP_INTERLOCK (&vp->v_interlock) -#endif - int afs_nbsd_lock(void *v) { @@ -939,7 +933,8 @@ afs_nbsd_lock(void *v) if (!vc) panic("afs_nbsd_lock: null vcache"); - return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, VP_INTERLOCK, ap->a_p); + return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, &vp->v_interlock, + ap->a_p); } int @@ -955,7 +950,8 @@ afs_nbsd_unlock(void *v) if (!vc) panic("afs_nbsd_unlock: null vcache"); - return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, VP_INTERLOCK, ap->a_p); + return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, &vp->v_interlock, + ap->a_p); } int @@ -972,7 +968,7 @@ afs_nbsd_bmap(void *v) AFS_STATCNT(afs_bmap); if (ap->a_bnp) - *ap->a_bnp = ap->a_bn * btodb(8192); + ap->a_bnp = (daddr_t *) (ap->a_bn * (8192 / DEV_BSIZE)); if (ap->a_vpp) *ap->a_vpp = (vcp) ? AFSTOV(vcp) : NULL; return 0; @@ -998,14 +994,15 @@ afs_nbsd_strategy(void *v) tuio.afsio_iovcnt = 1; tuio.afsio_seg = AFS_UIOSYS; tuio.afsio_resid = len; - tiovec[0].iov_base = abp->b_data; + tiovec[0].iov_base = abp->b_un.b_addr; tiovec[0].iov_len = len; AFS_GLOCK(); if ((abp->b_flags & B_READ) == B_READ) { code = afs_rdwr(tvc, &tuio, UIO_READ, 0, credp); if (code == 0 && tuio.afsio_resid > 0) - bzero(abp->b_data + len - tuio.afsio_resid, tuio.afsio_resid); + bzero(abp->b_un.b_addr + len - tuio.afsio_resid, + tuio.afsio_resid); } else code = afs_rdwr(tvc, &tuio, UIO_WRITE, 0, credp); AFS_GUNLOCK(); diff --git a/src/afs/SOLARIS/osi_file.c b/src/afs/SOLARIS/osi_file.c index 44a4d1432..6a3bd6a98 100644 --- a/src/afs/SOLARIS/osi_file.c +++ b/src/afs/SOLARIS/osi_file.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_file.c,v 1.13.2.3 2008/03/17 15:28:55 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_file.c,v 1.13.14.3 2008/03/17 15:28:33 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/SOLARIS/osi_groups.c b/src/afs/SOLARIS/osi_groups.c index 199c32786..af2306313 100644 --- a/src/afs/SOLARIS/osi_groups.c +++ b/src/afs/SOLARIS/osi_groups.c @@ -23,7 +23,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_groups.c,v 1.7.2.1 2006/12/20 20:09:09 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_groups.c,v 1.7.14.1 2006/12/20 20:08:33 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" diff --git a/src/afs/SOLARIS/osi_inode.c b/src/afs/SOLARIS/osi_inode.c index 5f5022c67..cce6ea7dc 100644 --- a/src/afs/SOLARIS/osi_inode.c +++ b/src/afs/SOLARIS/osi_inode.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_inode.c,v 1.15.2.1 2007/01/02 07:36:10 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_inode.c,v 1.15.14.1 2007/01/02 07:34:46 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/SOLARIS/osi_vfsops.c b/src/afs/SOLARIS/osi_vfsops.c index f54432987..68fc6c8e5 100644 --- a/src/afs/SOLARIS/osi_vfsops.c +++ b/src/afs/SOLARIS/osi_vfsops.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vfsops.c,v 1.18.2.6 2008/03/17 15:28:55 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vfsops.c,v 1.18.14.7 2008/07/07 17:15:58 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -418,7 +418,7 @@ afsinit(struct vfssw *vfsswp, int fstype) #ifdef AFS_SUN510_ENV #ifdef AFS_SUN511_ENV -static struct vfsdef_v4 afs_vfsdef = { +static vfsdef_t afs_vfsdef = { VFSDEF_VERSION, "afs", afsinit, diff --git a/src/afs/SOLARIS/osi_vm.c b/src/afs/SOLARIS/osi_vm.c index b45adfc31..1362f508e 100644 --- a/src/afs/SOLARIS/osi_vm.c +++ b/src/afs/SOLARIS/osi_vm.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vm.c,v 1.8.2.1 2005/04/03 18:15:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vm.c,v 1.9 2005/04/03 18:09:12 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/SOLARIS/osi_vnodeops.c b/src/afs/SOLARIS/osi_vnodeops.c index 03be3cb91..b619ed03d 100644 --- a/src/afs/SOLARIS/osi_vnodeops.c +++ b/src/afs/SOLARIS/osi_vnodeops.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.20.2.12 2008/03/17 15:28:55 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.28.2.4 2008/03/17 15:28:33 shadow Exp $"); /* * SOLARIS/osi_vnodeops.c diff --git a/src/afs/UKERNEL/afs_usrops.c b/src/afs/UKERNEL/afs_usrops.c index aa9a9a665..245a83d45 100644 --- a/src/afs/UKERNEL/afs_usrops.c +++ b/src/afs/UKERNEL/afs_usrops.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/UKERNEL/afs_usrops.c,v 1.27.2.7 2008/01/31 20:18:51 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/UKERNEL/afs_usrops.c,v 1.30.6.8 2008/07/01 20:56:38 shadow Exp $"); #ifdef UKERNEL @@ -987,10 +987,9 @@ shutdown_osifile(void) return; } -int +void afs_nfsclient_init(void) { - return 0; } void @@ -1638,11 +1637,6 @@ uafs_Init(char *rn, char *mountDirParam, char *confDirParam, printf("%s: My home cell is '%s'\n", rn, afs_LclCellName); } - /* - * Set the primary cell name. - */ - call_syscall(AFSOP_SET_THISCELL, (long)afs_LclCellName, 0, 0, 0, 0); - if ((logfd = fopen(fullpn_AFSLogFile, "r+")) == 0) { if (afsd_verbose) printf("%s: Creating '%s'\n", rn, fullpn_AFSLogFile); @@ -1678,24 +1672,6 @@ uafs_Init(char *rn, char *mountDirParam, char *confDirParam, sprintf(fullpn_VFile, "%s/V", cacheBaseDir); vFileNumber = fullpn_VFile + strlen(fullpn_VFile); - /* - * Start the RX listener. - */ - if (afsd_debug) - printf("%s: Calling AFSOP_RXLISTENER_DAEMON\n", rn); - fork_syscall(AFSCALL_CALL, AFSOP_RXLISTENER_DAEMON, FALSE, FALSE, FALSE); - - /* - * Start the RX event handler. - */ - if (afsd_debug) - printf("%s: Calling AFSOP_RXEVENT_DAEMON\n", rn); - fork_syscall(AFSCALL_CALL, AFSOP_RXEVENT_DAEMON, FALSE); - - /* - * Set up all the kernel processes needed for AFS. - */ - /* initialize AFS callback interface */ { /* parse multihomed address files */ @@ -1714,6 +1690,13 @@ uafs_Init(char *rn, char *mountDirParam, char *confDirParam, } } + /* + * Start the RX listener. + */ + if (afsd_debug) + printf("%s: Calling AFSOP_RXLISTENER_DAEMON\n", rn); + fork_syscall(AFSCALL_CALL, AFSOP_RXLISTENER_DAEMON, FALSE, FALSE, FALSE); + if (afsd_verbose) printf("%s: Forking rx callback listener.\n", rn); /* Child */ @@ -1721,6 +1704,17 @@ uafs_Init(char *rn, char *mountDirParam, char *confDirParam, preallocs = cacheStatEntries + 50; fork_syscall(AFSCALL_CALL, AFSOP_START_RXCALLBACK, preallocs); + /* + * Start the RX event handler. + */ + if (afsd_debug) + printf("%s: Calling AFSOP_RXEVENT_DAEMON\n", rn); + fork_syscall(AFSCALL_CALL, AFSOP_RXEVENT_DAEMON, FALSE); + + /* + * Set up all the kernel processes needed for AFS. + */ + if (afsd_verbose) printf("%s: Initializing AFS daemon.\n", rn); call_syscall(AFSCALL_CALL, AFSOP_BASIC_INIT, 1, 0, 0, 0); @@ -1815,6 +1809,11 @@ uafs_Init(char *rn, char *mountDirParam, char *confDirParam, afsconf_CellApply(afs_cdir, ConfigCell, NULL); afsconf_CellAliasApply(afs_cdir, ConfigCellAlias, NULL); + /* + * Set the primary cell name. + */ + call_syscall(AFSCALL_CALL, AFSOP_SET_THISCELL, (long)afs_LclCellName, 0, 0, 0); + if (afsd_verbose) printf("%s: Forking AFS daemon.\n", rn); fork_syscall(AFSCALL_CALL, AFSOP_START_AFS); @@ -1870,7 +1869,7 @@ uafs_Init(char *rn, char *mountDirParam, char *confDirParam, rc = lpioctl(0, _VICEIOCTL(8), &iob, 0); #endif if (rc < 0) { - usr_assert(errno == EDOM || errno == ENOSYS); + usr_assert(errno == EDOM || errno == ENOSYS || errno == ERANGE); break; } diff --git a/src/afs/UKERNEL/afsincludes.h b/src/afs/UKERNEL/afsincludes.h index 049475d21..9ae9a17c4 100644 --- a/src/afs/UKERNEL/afsincludes.h +++ b/src/afs/UKERNEL/afsincludes.h @@ -26,3 +26,4 @@ #include "afs/icl.h" #include "afs/afs_stats.h" #include "afs/afs_prototypes.h" +#include "afs/discon.h" diff --git a/src/afs/UKERNEL/osi_groups.c b/src/afs/UKERNEL/osi_groups.c index 9d901d12a..d67703cfb 100644 --- a/src/afs/UKERNEL/osi_groups.c +++ b/src/afs/UKERNEL/osi_groups.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/UKERNEL/osi_groups.c,v 1.7.2.1 2007/11/26 21:21:47 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/UKERNEL/osi_groups.c,v 1.7.14.1 2007/11/26 21:08:40 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" diff --git a/src/afs/UKERNEL/osi_machdep.h b/src/afs/UKERNEL/osi_machdep.h index 97cc6c584..19a25f55c 100644 --- a/src/afs/UKERNEL/osi_machdep.h +++ b/src/afs/UKERNEL/osi_machdep.h @@ -36,6 +36,9 @@ #define afs_hz HZ #define osi_Time() (time(NULL)) +#undef gop_lookupname +#define gop_lookupname(fnamep,segflg,followlink,compvpp) lookupname((fnamep),(segflg),(followlink),(compvpp)) + #define osi_vnhold(avc, r) do { VN_HOLD(AFSTOV(avc)); } while(0) #define afs_suser(x) suser(x) diff --git a/src/afs/UKERNEL/osi_vfsops.c b/src/afs/UKERNEL/osi_vfsops.c index 7eeca4fe9..646b03c64 100644 --- a/src/afs/UKERNEL/osi_vfsops.c +++ b/src/afs/UKERNEL/osi_vfsops.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/UKERNEL/osi_vfsops.c,v 1.10.2.1 2004/08/25 07:09:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/UKERNEL/osi_vfsops.c,v 1.11 2004/08/19 02:19:17 kolya Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/VNOPS/afs_vnop_access.c b/src/afs/VNOPS/afs_vnop_access.c index 1013cec98..e0940153b 100644 --- a/src/afs/VNOPS/afs_vnop_access.c +++ b/src/afs/VNOPS/afs_vnop_access.c @@ -23,7 +23,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_access.c,v 1.10.2.2 2008/03/07 17:34:08 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_access.c,v 1.11.8.6 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -118,6 +118,16 @@ afs_AccessOK(struct vcache *avc, afs_int32 arights, struct vrequest *areq, if ((vType(avc) == VDIR) || (avc->states & CForeign)) { /* rights are just those from acl */ + if (afs_InReadDir(avc)) { + /* if we are already in readdir, then they may have read and + * lookup, and nothing else, and nevermind the real ACL. + * Otherwise we might end up with problems trying to call + * FetchStatus on the vnode readdir is working on, and that + * would be a real mess. + */ + dirBits = PRSFS_LOOKUP | PRSFS_READ; + return (arights == (dirBits & arights)); + } return (arights == afs_GetAccessBits(avc, arights, areq)); } else { /* some rights come from dir and some from file. Specifically, you @@ -199,10 +209,13 @@ afs_access(OSI_VC_DECL(avc), register afs_int32 amode, if ((code = afs_InitReq(&treq, acred))) return code; + AFS_DISCON_LOCK(); + if (afs_fakestat_enable && avc->mvstat == 1) { code = afs_TryEvalFakeStat(&avc, &fakestate, &treq); if (code == 0 && avc->mvstat == 1) { afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); return 0; } } else { @@ -211,21 +224,35 @@ afs_access(OSI_VC_DECL(avc), register afs_int32 amode, if (code) { afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); return code; } - code = afs_VerifyVCache(avc, &treq); - if (code) { - afs_PutFakeStat(&fakestate); - code = afs_CheckCode(code, &treq, 16); - return code; + if (vType(avc) != VDIR || !afs_InReadDir(avc)) { + code = afs_VerifyVCache(avc, &treq); + if (code) { + afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); + code = afs_CheckCode(code, &treq, 16); + return code; + } } /* if we're looking for write access and we have a read-only file system, report it */ if ((amode & VWRITE) && (avc->states & CRO)) { afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); return EROFS; } + + /* If we're looking for write access, and we're disconnected without logging, forget it */ + if ((amode & VWRITE) && (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING)) { + afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); + /*printf("Network is down in afs_vnop_access\n");*/ + return ENETDOWN; + } + code = 1; /* Default from here on in is access ok. */ if (avc->states & CForeign) { /* In the dfs xlator the EXEC bit is mapped to LOOKUP */ @@ -304,6 +331,9 @@ afs_access(OSI_VC_DECL(avc), register afs_int32 amode, } } afs_PutFakeStat(&fakestate); + + AFS_DISCON_UNLOCK(); + if (code) { return 0; /* if access is ok */ } else { diff --git a/src/afs/VNOPS/afs_vnop_attrs.c b/src/afs/VNOPS/afs_vnop_attrs.c index cc430ec84..767c54312 100644 --- a/src/afs/VNOPS/afs_vnop_attrs.c +++ b/src/afs/VNOPS/afs_vnop_attrs.c @@ -24,7 +24,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_attrs.c,v 1.27.2.11 2006/11/10 00:08:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_attrs.c,v 1.41.2.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -105,14 +105,17 @@ afs_CopyOutAttrs(register struct vcache *avc, register struct vattr *attrs) /* The mount point's vnode. */ if (tvp) { attrs->va_nodeid = - tvp->mtpoint.Fid.Vnode + (tvp->mtpoint.Fid.Volume << 16); + afs_calc_inum (tvp->mtpoint.Fid.Volume, + tvp->mtpoint.Fid.Vnode); if (FidCmp(&afs_rootFid, &avc->fid) && !attrs->va_nodeid) attrs->va_nodeid = 2; afs_PutVolume(tvp, READ_LOCK); } else attrs->va_nodeid = 2; } else - attrs->va_nodeid = avc->fid.Fid.Vnode + (avc->fid.Fid.Volume << 16); + attrs->va_nodeid = + afs_calc_inum (avc->fid.Fid.Volume, + avc->fid.Fid.Vnode); attrs->va_nodeid &= 0x7fffffff; /* Saber C hates negative inode #s! */ attrs->va_nlink = fakedir ? 100 : avc->m.LinkCount; attrs->va_size = fakedir ? 4096 : avc->m.Length; @@ -227,6 +230,8 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, struct AFS_UCRED *acred) } #endif + AFS_DISCON_LOCK(); + #ifdef AFS_BOZONLOCK_ENV afs_BozonLock(&avc->pvnLock, avc); #endif @@ -325,6 +330,9 @@ afs_getattr(OSI_VC_DECL(avc), struct vattr *attrs, struct AFS_UCRED *acred) } } } + + AFS_DISCON_UNLOCK(); + if (!code) return 0; code = afs_CheckCode(code, &treq, 14); @@ -460,6 +468,8 @@ afs_setattr(OSI_VC_DECL(avc), register struct vattr *attrs, if ((code = afs_InitReq(&treq, acred))) return code; + AFS_DISCON_LOCK(); + afs_InitFakeStat(&fakestate); code = afs_EvalFakeStat(&avc, &fakestate, &treq); if (code) @@ -499,6 +509,11 @@ afs_setattr(OSI_VC_DECL(avc), register struct vattr *attrs, } } + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + code = ENETDOWN; + goto done; + } + afs_VAttrToAS(avc, attrs, &astat); /* interpret request */ code = 0; #ifdef AFS_BOZONLOCK_ENV @@ -548,19 +563,25 @@ afs_setattr(OSI_VC_DECL(avc), register struct vattr *attrs, hzero(avc->flushDV); osi_FlushText(avc); /* do this after releasing all locks */ } - if (code == 0) { - ObtainSharedLock(&avc->lock, 16); /* lock entry */ - code = afs_WriteVCache(avc, &astat, &treq); /* send request */ - ReleaseSharedLock(&avc->lock); /* release lock */ - } - if (code) { - ObtainWriteLock(&afs_xcbhash, 487); - afs_DequeueCallback(avc); - avc->states &= ~CStatd; - ReleaseWriteLock(&afs_xcbhash); - if (avc->fid.Fid.Vnode & 1 || (vType(avc) == VDIR)) - osi_dnlc_purgedp(avc); - /* error? erase any changes we made to vcache entry */ + + if (!AFS_IS_DISCONNECTED) { + if (code == 0) { + ObtainSharedLock(&avc->lock, 16); /* lock entry */ + code = afs_WriteVCache(avc, &astat, &treq); /* send request */ + ReleaseSharedLock(&avc->lock); /* release lock */ + } + if (code) { + ObtainWriteLock(&afs_xcbhash, 487); + afs_DequeueCallback(avc); + avc->states &= ~CStatd; + ReleaseWriteLock(&afs_xcbhash); + if (avc->fid.Fid.Vnode & 1 || (vType(avc) == VDIR)) + osi_dnlc_purgedp(avc); + /* error? erase any changes we made to vcache entry */ + } + } else { + /* Must be logging - but not implemented yet ... */ + code = ENETDOWN; } #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) if (AFS_NFSXLATORREQ(acred)) { @@ -575,6 +596,8 @@ afs_setattr(OSI_VC_DECL(avc), register struct vattr *attrs, #endif done: afs_PutFakeStat(&fakestate); + + AFS_DISCON_UNLOCK(); code = afs_CheckCode(code, &treq, 15); return code; } diff --git a/src/afs/VNOPS/afs_vnop_create.c b/src/afs/VNOPS/afs_vnop_create.c index b9b5cb392..daaffb410 100644 --- a/src/afs/VNOPS/afs_vnop_create.c +++ b/src/afs/VNOPS/afs_vnop_create.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_create.c,v 1.16.2.10 2007/12/08 18:00:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_create.c,v 1.23.4.4 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -84,12 +84,12 @@ afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, if (strlen(aname) > AFSNAMEMAX) { code = ENAMETOOLONG; - goto done; + goto done3; } if (!afs_ENameOK(aname)) { code = EINVAL; - goto done; + goto done3; } switch (attrs->va_type) { case VBLK: @@ -100,10 +100,12 @@ afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, case VFIFO: /* We don't support special devices or FIFOs */ code = EINVAL; - goto done; + goto done3; default: ; } + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&adp, &fakestate, &treq); if (code) goto done; @@ -120,6 +122,11 @@ afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, goto done; } + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + code = ENETDOWN; + goto done; + } + tdc = afs_GetDCache(adp, (afs_size_t) 0, &treq, &offset, &len, 1); ObtainWriteLock(&adp->lock, 135); if (tdc) @@ -252,6 +259,11 @@ afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, goto done; } } + + if (AFS_IS_DISCONNECTED) { + /* XXX - If we get here, logging must be enabled (as we bypassed the + * earlier check. So - do that logging thang, then return */ + } /* if we create the file, we don't do any access checks, since * that's how O_CREAT is supposed to work */ @@ -447,6 +459,9 @@ afs_create(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, ReleaseWriteLock(&afs_xvcache); done: + AFS_DISCON_UNLOCK(); + + done3: if (volp) afs_PutVolume(volp, READ_LOCK); diff --git a/src/afs/VNOPS/afs_vnop_dirops.c b/src/afs/VNOPS/afs_vnop_dirops.c index aa481ecb0..ccee2fa2f 100644 --- a/src/afs/VNOPS/afs_vnop_dirops.c +++ b/src/afs/VNOPS/afs_vnop_dirops.c @@ -21,7 +21,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_dirops.c,v 1.14.2.6 2007/12/08 18:00:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_dirops.c,v 1.21.4.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -65,13 +65,16 @@ afs_mkdir(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, if (strlen(aname) > AFSNAMEMAX) { code = ENAMETOOLONG; - goto done; + goto done3; } if (!afs_ENameOK(aname)) { code = EINVAL; - goto done; + goto done3; } + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&adp, &fakestate, &treq); if (code) goto done; @@ -86,6 +89,11 @@ afs_mkdir(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, code = EROFS; goto done; } + + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + /*printf("Network is down in afs_mkdir\n");*/ + code = ENETDOWN; + } InStatus.Mask = AFS_SETMODTIME | AFS_SETMODE | AFS_SETGROUP; InStatus.ClientModTime = osi_Time(); @@ -156,6 +164,8 @@ afs_mkdir(OSI_VC_DECL(adp), char *aname, struct vattr *attrs, } else code = ENOENT; done: + AFS_DISCON_UNLOCK(); + done3: afs_PutFakeStat(&fakestate); code = afs_CheckCode(code, &treq, 26); done2: @@ -198,6 +208,8 @@ afs_rmdir(OSI_VC_DECL(adp), char *aname, struct AFS_UCRED *acred) goto done; } + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&adp, &fakestate, &treq); if (code) goto done; @@ -214,6 +226,11 @@ afs_rmdir(OSI_VC_DECL(adp), char *aname, struct AFS_UCRED *acred) goto done; } + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + code = ENETDOWN; + goto done; + } + tdc = afs_GetDCache(adp, (afs_size_t) 0, &treq, &offset, &len, 1); /* test for error below */ ObtainWriteLock(&adp->lock, 154); if (tdc) @@ -304,6 +321,8 @@ afs_rmdir(OSI_VC_DECL(adp), char *aname, struct AFS_UCRED *acred) code = 0; done: + AFS_DISCON_UNLOCK(); + done3: afs_PutFakeStat(&fakestate); code = afs_CheckCode(code, &treq, 27); done2: diff --git a/src/afs/VNOPS/afs_vnop_fid.c b/src/afs/VNOPS/afs_vnop_fid.c index 65d070b69..290dabce9 100644 --- a/src/afs/VNOPS/afs_vnop_fid.c +++ b/src/afs/VNOPS/afs_vnop_fid.c @@ -18,7 +18,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_fid.c,v 1.11.2.3 2005/04/03 18:15:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_fid.c,v 1.14 2005/04/03 18:09:14 shadow Exp $"); #if !defined(AFS_DUX40_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_OBSD_ENV) #include "afs/sysincludes.h" /* Standard vendor system headers */ diff --git a/src/afs/VNOPS/afs_vnop_flock.c b/src/afs/VNOPS/afs_vnop_flock.c index f62e211f3..6f2d2aa42 100644 --- a/src/afs/VNOPS/afs_vnop_flock.c +++ b/src/afs/VNOPS/afs_vnop_flock.c @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_flock.c,v 1.24.2.10 2007/03/10 16:08:08 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_flock.c,v 1.29.2.6 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -219,6 +219,9 @@ lockIdcmp2(struct AFS_FLOCK *flock1, struct vcache *vp, 94.04.13 add "force" parameter. If a child explicitly unlocks a file, I guess we'll permit it. however, we don't want simple, innocent closes by children to unlock files in the parent process. + + If called when disconnected support is unabled, the discon_lock must + be held */ /* clid - nonzero on sgi sunos osf1 only */ int @@ -295,20 +298,25 @@ HandleFlock(register struct vcache *avc, int acom, struct vrequest *areq, avc->slocks = 0; } if (avc->flockCount == 0) { - do { - tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); - if (tc) { - XSTATS_START_TIME(AFS_STATS_FS_RPCIDX_RELEASELOCK); - RX_AFS_GUNLOCK(); - code = RXAFS_ReleaseLock(tc->id, (struct AFSFid *) - &avc->fid.Fid, &tsync); - RX_AFS_GLOCK(); - XSTATS_END_TIME; - } else + if (!AFS_IS_DISCONNECTED) { + do { + tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); + if (tc) { + XSTATS_START_TIME(AFS_STATS_FS_RPCIDX_RELEASELOCK); + RX_AFS_GUNLOCK(); + code = RXAFS_ReleaseLock(tc->id, (struct AFSFid *) + &avc->fid.Fid, &tsync); + RX_AFS_GLOCK(); + XSTATS_END_TIME; + } else code = -1; - } while (afs_Analyze - (tc, code, &avc->fid, areq, - AFS_STATS_FS_RPCIDX_RELEASELOCK, SHARED_LOCK, NULL)); + } while (afs_Analyze + (tc, code, &avc->fid, areq, + AFS_STATS_FS_RPCIDX_RELEASELOCK, SHARED_LOCK, NULL)); + } else { + /*printf("Network is dooooooowwwwwwwnnnnnnn\n");*/ + code = ENETDOWN; + } } } else { while (1) { /* set a new lock */ @@ -348,24 +356,26 @@ HandleFlock(register struct vcache *avc, int acom, struct vrequest *areq, } } if (!code && avc->flockCount == 0) { - do { - tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); - if (tc) { - XSTATS_START_TIME - (AFS_STATS_FS_RPCIDX_RELEASELOCK); - RX_AFS_GUNLOCK(); - code = - RXAFS_ReleaseLock(tc->id, - (struct AFSFid *)&avc->fid. - Fid, &tsync); - RX_AFS_GLOCK(); - XSTATS_END_TIME; - } else - code = -1; - } while (afs_Analyze - (tc, code, &avc->fid, areq, - AFS_STATS_FS_RPCIDX_RELEASELOCK, SHARED_LOCK, - NULL)); + if (!AFS_IS_DISCONNECTED) { + do { + tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); + if (tc) { + XSTATS_START_TIME + (AFS_STATS_FS_RPCIDX_RELEASELOCK); + RX_AFS_GUNLOCK(); + code = + RXAFS_ReleaseLock(tc->id, + (struct AFSFid *)&avc-> + fid.Fid, &tsync); + RX_AFS_GLOCK(); + XSTATS_END_TIME; + } else + code = -1; + } while (afs_Analyze + (tc, code, &avc->fid, areq, + AFS_STATS_FS_RPCIDX_RELEASELOCK, SHARED_LOCK, + NULL)); + } } } else if (avc->flockCount == -1 && (acom & LOCK_EX)) { if (lockIdcmp2(&flock, avc, NULL, 1, clid)) { @@ -381,22 +391,28 @@ HandleFlock(register struct vcache *avc, int acom, struct vrequest *areq, if (avc->flockCount == 0) { /* we're the first on our block, send the call through */ lockType = ((acom & LOCK_EX) ? LockWrite : LockRead); - do { - tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); - if (tc) { - XSTATS_START_TIME(AFS_STATS_FS_RPCIDX_SETLOCK); - RX_AFS_GUNLOCK(); - code = RXAFS_SetLock(tc->id, (struct AFSFid *) - &avc->fid.Fid, lockType, - &tsync); - RX_AFS_GLOCK(); - XSTATS_END_TIME; - } else - code = -1; - } while (afs_Analyze - (tc, code, &avc->fid, areq, - AFS_STATS_FS_RPCIDX_SETLOCK, SHARED_LOCK, - NULL)); + if (!AFS_IS_DISCONNECTED) { + do { + tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); + if (tc) { + XSTATS_START_TIME(AFS_STATS_FS_RPCIDX_SETLOCK); + RX_AFS_GUNLOCK(); + code = RXAFS_SetLock(tc->id, (struct AFSFid *) + &avc->fid.Fid, lockType, + &tsync); + RX_AFS_GLOCK(); + XSTATS_END_TIME; + } else + code = -1; + } while (afs_Analyze + (tc, code, &avc->fid, areq, + AFS_STATS_FS_RPCIDX_SETLOCK, SHARED_LOCK, + NULL)); + } else + /* XXX - Should probably try and log this when we're + * XXX - running with logging enabled. But it's horrid + */ + code = 0; /* pretend we worked - ick!!! */ } else code = 0; /* otherwise, pretend things worked */ } @@ -497,15 +513,17 @@ int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, if ((code = afs_InitReq(&treq, acred))) return code; afs_InitFakeStat(&fakestate); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&avc, &fakestate, &treq); if (code) { - afs_PutFakeStat(&fakestate); - return code; + goto done; } #ifdef AFS_OSF_ENV if (flag & VNOFLCK) { - afs_PutFakeStat(&fakestate); - return 0; + code = 0; + goto done; } if (flag & CLNFLCK) { acmd = LOCK_UN; @@ -521,15 +539,14 @@ int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, if (acmd == F_GETLK) { #endif if (af->l_type == F_UNLCK) { - afs_PutFakeStat(&fakestate); - return 0; + code = 0; + goto done; } #ifndef AFS_OSF_ENV /* getlock is a no-op for osf (for now) */ code = HandleGetLock(avc, af, &treq, clid); #endif code = afs_CheckCode(code, &treq, 2); /* defeat buggy AIX optimz */ - afs_PutFakeStat(&fakestate); - return code; + goto done; } else if ((acmd == F_SETLK) || (acmd == F_SETLKW) #if (defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV)) && !defined(AFS_SUN58_ENV) || (acmd == F_RSETLK) || (acmd == F_RSETLKW)) { @@ -559,8 +576,8 @@ int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, * even when they should block */ if (af->l_whence != 0 || af->l_start != 0 || af->l_len != 0) { DoLockWarning(); - afs_PutFakeStat(&fakestate); - return 0; + code = 0; + goto done; } /* otherwise we can turn this into a whole-file flock */ if (af->l_type == F_RDLCK) @@ -589,11 +606,13 @@ int afs_lockctl(struct vcache * avc, struct AFS_FLOCK * af, int acmd, code = HandleFlock(avc, code, &treq, 0, 0 /*!onlymine */ ); #endif code = afs_CheckCode(code, &treq, 3); /* defeat AIX -O bug */ - afs_PutFakeStat(&fakestate); - return code; + goto done; } + code = EINVAL; +done: afs_PutFakeStat(&fakestate); - return EINVAL; + AFS_DISCON_UNLOCK(); + return code; } @@ -819,6 +838,10 @@ GetFlockCount(struct vcache *avc, struct vrequest *areq) temp = areq->flags & O_NONBLOCK; areq->flags |= O_NONBLOCK; + /* If we're disconnected, lie and say that we've got no locks. Ick */ + if (AFS_IS_DISCONNECTED) + return 0; + do { tc = afs_Conn(&avc->fid, areq, SHARED_LOCK); if (tc) { @@ -889,6 +912,9 @@ afs_xflock(void) afs_PutFakeStat(&fakestate); return flockDone; } + + AFS_DISCON_LOCK(); + /* first determine whether this is any sort of vnode */ if (fd->f_type == DTYPE_VNODE) { /* good, this is a vnode; next see if it is an AFS vnode */ @@ -897,6 +923,7 @@ afs_xflock(void) /* This is an AFS vnode, so do the work */ code = afs_EvalFakeStat(&tvc, &fakestate, &treq); if (code) { + AFS_DISCON_UNLOCK(); afs_PutFakeStat(&fakestate); return code; } @@ -950,6 +977,7 @@ afs_xflock(void) #else FP_UNREF(fd); #endif + AFS_DISCON_UNLOCK(); afs_PutFakeStat(&fakestate); return code; #else /* AFS_OSF_ENV */ @@ -959,6 +987,7 @@ afs_xflock(void) #else flock(); #endif + AFS_DISCON_UNLOCK(); afs_PutFakeStat(&fakestate); return; #endif diff --git a/src/afs/VNOPS/afs_vnop_link.c b/src/afs/VNOPS/afs_vnop_link.c index 3dcdbada6..9ed07ae7b 100644 --- a/src/afs/VNOPS/afs_vnop_link.c +++ b/src/afs/VNOPS/afs_vnop_link.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_link.c,v 1.15.2.5 2007/12/08 18:00:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_link.c,v 1.19.8.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -62,6 +62,9 @@ afs_link(avc, OSI_VC_ARG(adp), aname, acred) afs_InitFakeStat(&vfakestate); afs_InitFakeStat(&dfakestate); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&avc, &vfakestate, &treq); if (code) goto done; @@ -89,6 +92,11 @@ afs_link(avc, OSI_VC_ARG(adp), aname, acred) code = EROFS; goto done; } + + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + code = ENETDOWN; + goto done; + } tdc = afs_GetDCache(adp, (afs_size_t) 0, &treq, &offset, &len, 1); /* test for error below */ ObtainWriteLock(&adp->lock, 145); @@ -161,6 +169,7 @@ afs_link(avc, OSI_VC_ARG(adp), aname, acred) code = afs_CheckCode(code, &treq, 24); afs_PutFakeStat(&vfakestate); afs_PutFakeStat(&dfakestate); + AFS_DISCON_UNLOCK(); done2: return code; } diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c index f1cfa1a50..7a546d0b9 100644 --- a/src/afs/VNOPS/afs_vnop_lookup.c +++ b/src/afs/VNOPS/afs_vnop_lookup.c @@ -18,7 +18,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v 1.50.2.21 2008/04/15 12:29:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v 1.72.2.7 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -27,9 +27,11 @@ RCSID #include "afs/nfsclient.h" #include "afs/exporter.h" #include "afs/afs_osidnlc.h" +#include "afs/afs_dynroot.h" extern struct DirEntry *afs_dir_GetBlob(); +extern struct vcache *afs_globalVp; afs_int32 afs_bkvolpref = 0; @@ -52,45 +54,49 @@ int afs_fakestat_enable = 0; /* 1: fakestat-all, 2: fakestat-crosscell */ * * NOTE: this function returns a held volume structure in *volpp if it returns 0! */ -int -EvalMountPoint(register struct vcache *avc, struct vcache *advc, - struct volume **avolpp, register struct vrequest *areq) +static int +EvalMountData(char type, char *data, afs_uint32 states, afs_uint32 cellnum, + struct volume **avolpp, register struct vrequest *areq, + afs_uint32 *acellidxp, afs_uint32 *avolnump, afs_uint32 *avnoidp) { - afs_int32 code; struct volume *tvp = 0; struct VenusFid tfid; struct cell *tcell; - char *cpos, *volnamep; - char type, *buf; + char *cpos, *volnamep, *x; + char *buf; afs_int32 prefetch; /* 1=>None 2=>RO 3=>BK */ afs_int32 mtptCell, assocCell = 0, hac = 0; afs_int32 samecell, roname, len; + afs_uint32 volid, cellidx, vnoid = 0; - AFS_STATCNT(EvalMountPoint); -#ifdef notdef - if (avc->mvid && (avc->states & CMValid)) - return 0; /* done while racing */ -#endif - *avolpp = NULL; - code = afs_HandleLink(avc, areq); - if (code) - return code; - - /* Determine which cell and volume the mointpoint goes to */ - type = avc->linkData[0]; /* '#'=>Regular '%'=>RW */ - cpos = afs_strchr(&avc->linkData[1], ':'); /* if cell name present */ + cpos = afs_strchr(data, ':'); /* if cell name present */ if (cpos) { + cellnum = 0; volnamep = cpos + 1; *cpos = 0; - tcell = afs_GetCellByName(&avc->linkData[1], READ_LOCK); + for (x = data; *x >= '0' && *x <= '9'; x++) + cellnum = (cellnum * 10) + (*x - '0'); + if (cellnum && !*x) + tcell = afs_GetCell(cellnum, READ_LOCK); + else { + tcell = afs_GetCellByName(data, READ_LOCK); + cellnum = 0; + } *cpos = ':'; + } else if (cellnum) { + volnamep = data; + tcell = afs_GetCell(cellnum, READ_LOCK); } else { - volnamep = &avc->linkData[1]; - tcell = afs_GetCell(avc->fid.Cell, READ_LOCK); + /*printf("No cellname %s , or cellnum %d , returning ENODEV\n", + data, cellnum);*/ + return ENODEV; } - if (!tcell) + if (!tcell) { + /*printf("Lookup failed, returning ENODEV\n");*/ return ENODEV; + } + cellidx = tcell->cellIndex; mtptCell = tcell->cellNum; /* The cell for the mountpoint */ if (tcell->lcellp) { hac = 1; /* has associated cell */ @@ -98,15 +104,63 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc, } afs_PutCell(tcell, READ_LOCK); + cpos = afs_strrchr(volnamep, ':'); /* if vno present */ + if (cpos) + *cpos = 0; + /* Look for an all-numeric volume ID */ + volid = 0; + for (x = volnamep; *x >= '0' && *x <= '9'; x++) + volid = (volid * 10) + (*x - '0'); + if (cpos) { + *cpos = ':'; + vnoid = 0; + if (!*x) /* allow vno with numeric volid only */ + for (x = (cpos + 1); *x >= '0' && *x <= '9'; x++) + vnoid = (vnoid * 10) + (*x - '0'); + if (*x) + vnoid = 0; + } + + /* + * If the volume ID was all-numeric, and they didn't ask for a + * pointer to the volume structure, then just return the number + * as-is. This is currently only used for handling name lookups + * in the dynamic mount directory. + */ + if (!*x && !avolpp) { + if (acellidxp) + *acellidxp = cellidx; + if (avolnump) + *avolnump = volid; + if (avnoidp) + *avnoidp = vnoid; + return 0; + } + + /* + * If the volume ID was all-numeric, and the type was '%', then + * assume whoever made the mount point knew what they were doing, + * and don't second-guess them by forcing use of a RW volume when + * they gave the ID of something else. + */ + if (!*x && type == '%') { + tfid.Fid.Volume = volid; /* remember BK volume */ + tfid.Cell = mtptCell; + tvp = afs_GetVolume(&tfid, areq, WRITE_LOCK); /* get the new one */ + if (!tvp) { + /*printf("afs_GetVolume failed - returning ENODEV");*/ + return ENODEV; /* oops, can't do it */ + } + goto done; + } + /* Is volume name a ".backup" or ".readonly" name */ len = strlen(volnamep); roname = ((len > 9) && (strcmp(&volnamep[len - 9], ".readonly") == 0)) || ((len > 7) && (strcmp(&volnamep[len - 7], ".backup") == 0)); /* When we cross mountpoint, do we stay in the same cell */ - samecell = (avc->fid.Cell == mtptCell) || (hac - && (avc->fid.Cell == - assocCell)); + samecell = (cellnum == mtptCell) || (hac && (cellnum == assocCell)); /* Decide whether to prefetch the BK, or RO. Also means we want the BK or * RO. @@ -117,9 +171,9 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc, * want to prefetch the RO volume. */ if ((type == '#') && !roname) { - if (afs_bkvolpref && samecell && (avc->states & CBackup)) + if (afs_bkvolpref && samecell && (states & CBackup)) prefetch = 3; /* Prefetch the BK */ - else if (!samecell || (avc->states & CRO)) + else if (!samecell || (states & CRO)) prefetch = 2; /* Prefetch the RO */ else prefetch = 1; /* Do not prefetch */ @@ -131,6 +185,7 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc, * ".backup" in it, this will get the volume struct for the RW volume. * The RO volume will be prefetched if requested (but not returned). */ + /*printf("Calling GetVolumeByName\n");*/ tvp = afs_GetVolumeByName(volnamep, mtptCell, prefetch, areq, WRITE_LOCK); /* If no volume was found in this cell, try the associated linked cell */ @@ -159,11 +214,13 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc, osi_FreeSmallSpace(buf); } - if (!tvp) + if (!tvp) { + /*printf("Couldn't find the volume\n");*/ return ENODEV; /* Couldn't find the volume */ + } /* Don't cross mountpoint from a BK to a BK volume */ - if ((avc->states & CBackup) && (tvp->states & VBackup)) { + if ((states & CBackup) && (tvp->states & VBackup)) { afs_PutVolume(tvp, WRITE_LOCK); return ENODEV; } @@ -190,12 +247,52 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc, return ENODEV; /* oops, can't do it */ } +done: + if (acellidxp) + *acellidxp = cellidx; + if (avolnump) + *avolnump = tvp->volume; + if (avnoidp) + *avnoidp = vnoid; + if (avolpp) + *avolpp = tvp; + else + afs_PutVolume(tvp, WRITE_LOCK); + return 0; +} + +int +EvalMountPoint(register struct vcache *avc, struct vcache *advc, + struct volume **avolpp, register struct vrequest *areq) +{ + afs_int32 code; + afs_uint32 avnoid; + + AFS_STATCNT(EvalMountPoint); +#ifdef notdef + if (avc->mvid && (avc->states & CMValid)) + return 0; /* done while racing */ +#endif + *avolpp = NULL; + code = afs_HandleLink(avc, areq); + if (code) + return code; + + /* Determine which cell and volume the mointpoint goes to */ + code = EvalMountData(avc->linkData[0], avc->linkData + 1, + avc->states, avc->fid.Cell, avolpp, areq, 0, 0, + &avnoid); + if (code) return code; + + if (!avnoid) + avnoid = 1; + if (avc->mvid == 0) avc->mvid = (struct VenusFid *)osi_AllocSmallSpace(sizeof(struct VenusFid)); - avc->mvid->Cell = tvp->cell; - avc->mvid->Fid.Volume = tvp->volume; - avc->mvid->Fid.Vnode = 1; + avc->mvid->Cell = (*avolpp)->cell; + avc->mvid->Fid.Volume = (*avolpp)->volume; + avc->mvid->Fid.Vnode = avnoid; avc->mvid->Fid.Unique = 1; avc->states |= CMValid; @@ -214,11 +311,10 @@ EvalMountPoint(register struct vcache *avc, struct vcache *advc, * cd'ing via a new path to a volume will reset the ".." pointer * to the new path. */ - tvp->mtpoint = avc->fid; /* setup back pointer to mtpoint */ + (*avolpp)->mtpoint = avc->fid; /* setup back pointer to mtpoint */ if (advc) - tvp->dotdot = advc->fid; + (*avolpp)->dotdot = advc->fid; - *avolpp = tvp; return 0; } @@ -313,7 +409,7 @@ afs_EvalFakeStat_int(struct vcache **avcp, struct afs_fakestat_state *state, if (code) goto done; vnode_ref(AFSTOV(root_vp)); #endif - if (tvolp) { + if (tvolp && !afs_InReadDir(root_vp)) { /* Is this always kosher? Perhaps we should instead use * NBObtainWriteLock to avoid potential deadlock. */ @@ -420,7 +516,7 @@ afs_getsysname(register struct vrequest *areq, register struct vcache *adp, else { au = afs_GetUser(areq->uid, adp->fid.Cell, 0); if (au->exporter) { - error = EXP_SYSNAME(au->exporter, (char *)0, sysnamelist, num); + error = EXP_SYSNAME(au->exporter, (char *)0, sysnamelist, num, 0); if (error) { strcpy(bufp, "@sys"); afs_PutUser(au, 0); @@ -444,7 +540,7 @@ Check_AtSys(register struct vcache *avc, const char *aname, if (AFS_EQ_ATSYS(aname)) { state->offset = 0; - state->name = (char *)osi_AllocLargeSpace(AFS_SMALLOCSIZ); + state->name = (char *)osi_AllocLargeSpace(MAXSYSNAME); state->allocked = 1; state->index = afs_getsysname(areq, avc, state->name, &num, sysnamelist); @@ -497,8 +593,9 @@ Next_AtSys(register struct vcache *avc, struct vrequest *areq, au = afs_GetUser(areq->uid, avc->fid.Cell, 0); if (au->exporter) { error = - EXP_SYSNAME(au->exporter, (char *)0, sysnamelist, &num); + EXP_SYSNAME(au->exporter, (char *)0, sysnamelist, &num, 0); if (error) { + afs_PutUser(au, 0); return 0; } } @@ -1134,6 +1231,10 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED AFS_STATCNT(afs_lookup); afs_InitFakeStat(&fakestate); + AFS_DISCON_LOCK(); + + /*printf("Looking up %s\n", aname);*/ + if ((code = afs_InitReq(&treq, acred))) goto done; @@ -1162,6 +1263,9 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED code = afs_TryEvalFakeStat(&adp, &fakestate, &treq); else code = afs_EvalFakeStat(&adp, &fakestate, &treq); + + /*printf("Code is %d\n", code);*/ + if (tryEvalOnly && adp->mvstat == 1) code = ENOENT; if (code) @@ -1176,7 +1280,7 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED *avcp = NULL; /* Since some callers don't initialize it */ bulkcode = 0; - if (!(adp->states & CStatd)) { + if (!(adp->states & CStatd) && !afs_InReadDir(adp)) { if ((code = afs_VerifyVCache2(adp, &treq))) { goto done; } @@ -1188,7 +1292,6 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED /* looking up ".." in root via special hacks */ if (adp->mvid == (struct VenusFid *)0 || adp->mvid->Fid.Volume == 0) { #ifdef AFS_OSF_ENV - extern struct vcache *afs_globalVp; if (adp == afs_globalVp) { struct vnode *rvp = AFSTOV(adp); /* @@ -1204,6 +1307,7 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED goto done; } /* otherwise we have the fid here, so we use it */ + /*printf("Getting vcache\n");*/ tvc = afs_GetVCache(adp->mvid, &treq, NULL, NULL); afs_Trace3(afs_iclSetp, CM_TRACE_GETVCDOTDOT, ICL_TYPE_FID, adp->mvid, ICL_TYPE_POINTER, tvc, ICL_TYPE_INT32, code); @@ -1255,6 +1359,63 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED goto done; } + /* + * Special case lookup of ".." in the dynamic mount directory. + * The parent of this directory is _always_ the AFS root volume. + */ + if (afs_IsDynrootMount(adp) && + aname[0] == '.' && aname[1] == '.' && !aname[2]) { + + ObtainReadLock(&afs_xvcache); + osi_vnhold(afs_globalVp, 0); + ReleaseReadLock(&afs_xvcache); +#ifdef AFS_DARWIN80_ENV + vnode_get(AFSTOV(afs_globalVp)); +#endif + code = 0; + *avcp = tvc = afs_globalVp; + hit = 1; + goto done; + } + + /* + * Special case lookups in the dynamic mount directory. + * The names here take the form cell:volume, similar to a mount point. + * EvalMountData parses that and returns a cell and volume ID, which + * we use to construct the appropriate dynroot Fid. + */ + if (afs_IsDynrootMount(adp)) { + struct VenusFid tfid; + afs_uint32 cellidx, volid, vnoid; + + code = EvalMountData('%', aname, 0, 0, NULL, &treq, &cellidx, &volid, &vnoid); + if (code) + goto done; + afs_GetDynrootMountFid(&tfid); + tfid.Fid.Vnode = VNUM_FROM_TYPEID(VN_TYPE_MOUNT, cellidx << 2); + tfid.Fid.Unique = volid; + *avcp = tvc = afs_GetVCache(&tfid, &treq, NULL, NULL); + hit = 1; + goto done; + } + +#ifdef AFS_LINUX26_ENV + /* + * Special case of the dynamic mount volume in a static root. + * This is really unfortunate, but we need this for the translator. + */ + if (adp == afs_globalVp && !afs_GetDynrootEnable() && + !strcmp(aname, AFS_DYNROOT_MOUNTNAME)) { + struct VenusFid tfid; + + afs_GetDynrootMountFid(&tfid); + *avcp = tvc = afs_GetVCache(&tfid, &treq, NULL, NULL); + code = 0; + hit = 1; + goto done; + } +#endif + Check_AtSys(adp, aname, &sysState, &treq); tname = sysState.name; @@ -1297,8 +1458,11 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED struct VenusFid tfid; /* now we have to lookup the next fid */ - tdc = - afs_GetDCache(adp, (afs_size_t) 0, &treq, &dirOffset, &dirLen, 1); + if (afs_InReadDir(adp)) + tdc = adp->dcreaddir; + else + tdc = afs_GetDCache(adp, (afs_size_t) 0, &treq, + &dirOffset, &dirLen, 1); if (!tdc) { *avcp = NULL; /* redundant, but harmless */ code = EIO; @@ -1315,24 +1479,30 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED * cases we need to worry about: * 1. The cache data is being fetched by another process. * 2. The cache data is no longer valid + * + * If a readdir is in progress _in this thread_, it has a shared + * lock on the vcache and has obtained current data, so we just + * use that. This eliminates several possible deadlocks. */ - while ((adp->states & CStatd) - && (tdc->dflags & DFFetching) - && hsame(adp->m.DataVersion, tdc->f.versionNo)) { - ReleaseReadLock(&tdc->lock); - ReleaseReadLock(&adp->lock); - afs_osi_Sleep(&tdc->validPos); - ObtainReadLock(&adp->lock); - ObtainReadLock(&tdc->lock); - } - if (!(adp->states & CStatd) - || !hsame(adp->m.DataVersion, tdc->f.versionNo)) { - ReleaseReadLock(&tdc->lock); - ReleaseReadLock(&adp->lock); - afs_PutDCache(tdc); - if (tname && tname != aname) - osi_FreeLargeSpace(tname); - goto redo; + if (!afs_InReadDir(adp)) { + while ((adp->states & CStatd) + && (tdc->dflags & DFFetching) + && hsame(adp->m.DataVersion, tdc->f.versionNo)) { + ReleaseReadLock(&tdc->lock); + ReleaseReadLock(&adp->lock); + afs_osi_Sleep(&tdc->validPos); + ObtainReadLock(&adp->lock); + ObtainReadLock(&tdc->lock); + } + if (!(adp->states & CStatd) + || !hsame(adp->m.DataVersion, tdc->f.versionNo)) { + ReleaseReadLock(&tdc->lock); + ReleaseReadLock(&adp->lock); + afs_PutDCache(tdc); + if (tname && tname != aname) + osi_FreeLargeSpace(tname); + goto redo; + } } /* Save the version number for when we call osi_dnlc_enter */ @@ -1363,7 +1533,8 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED tname = sysState.name; ReleaseReadLock(&tdc->lock); - afs_PutDCache(tdc); + if (!afs_InReadDir(adp)) + afs_PutDCache(tdc); if (code == ENOENT && afs_IsDynroot(adp) && dynrootRetry) { ReleaseReadLock(&adp->lock); @@ -1396,8 +1567,9 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED /* prefetch some entries, if the dir is currently open. The variable * dirCookie tells us where to start prefetching from. */ - if (AFSDOBULK && adp->opens > 0 && !(adp->states & CForeign) - && !afs_IsDynroot(adp)) { + if (!AFS_IS_DISCONNECTED && + AFSDOBULK && adp->opens > 0 && !(adp->states & CForeign) + && !afs_IsDynroot(adp) && !afs_InReadDir(adp)) { afs_int32 retry; /* if the entry is not in the cache, or is in the cache, * but hasn't been statd, then do a bulk stat operation. @@ -1543,25 +1715,30 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED * be located (a Multics "connection failure"). If the volume is * read-only, we try flushing this entry from the cache and trying * again. */ - if (pass == 0) { - struct volume *tv; - tv = afs_GetVolume(&adp->fid, &treq, READ_LOCK); - if (tv) { - if (tv->states & VRO) { - pass = 1; /* try this *once* */ - ObtainWriteLock(&afs_xcbhash, 495); - afs_DequeueCallback(adp); - /* re-stat to get later version */ - adp->states &= ~CStatd; - ReleaseWriteLock(&afs_xcbhash); - osi_dnlc_purgedp(adp); + if (!AFS_IS_DISCONNECTED) { + if (pass == 0) { + struct volume *tv; + tv = afs_GetVolume(&adp->fid, &treq, READ_LOCK); + if (tv) { + if (tv->states & VRO) { + pass = 1; /* try this *once* */ + ObtainWriteLock(&afs_xcbhash, 495); + afs_DequeueCallback(adp); + /* re-stat to get later version */ + adp->states &= ~CStatd; + ReleaseWriteLock(&afs_xcbhash); + osi_dnlc_purgedp(adp); + afs_PutVolume(tv, READ_LOCK); + goto redo; + } afs_PutVolume(tv, READ_LOCK); - goto redo; - } - afs_PutVolume(tv, READ_LOCK); + } } + code = ENOENT; + } else { + /*printf("Network down in afs_lookup\n");*/ + code = ENETDOWN; } - code = ENOENT; } done: @@ -1599,6 +1776,7 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED code = afs_VerifyVCache(tvc, &treq); #else afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); return 0; /* can't have been any errors if hit and !code */ #endif } @@ -1615,5 +1793,6 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED } afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); return code; } diff --git a/src/afs/VNOPS/afs_vnop_open.c b/src/afs/VNOPS/afs_vnop_open.c index 4c7799300..dc1d75407 100644 --- a/src/afs/VNOPS/afs_vnop_open.c +++ b/src/afs/VNOPS/afs_vnop_open.c @@ -18,7 +18,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_open.c,v 1.10.2.1 2005/04/03 18:15:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_open.c,v 1.11.6.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -59,12 +59,29 @@ afs_open(struct vcache **avcp, afs_int32 aflags, struct AFS_UCRED *acred) afs_Trace2(afs_iclSetp, CM_TRACE_OPEN, ICL_TYPE_POINTER, tvc, ICL_TYPE_INT32, aflags); afs_InitFakeStat(&fakestate); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&tvc, &fakestate, &treq); if (code) goto done; code = afs_VerifyVCache(tvc, &treq); if (code) goto done; + + ObtainReadLock(&tvc->lock); + +#ifdef AFS_DISCON_ENV + if (AFS_IS_DISCONNECTED && (afs_DCacheMissingChunks(tvc) != 0)) { + ReleaseReadLock(&tvc->lock); + /*printf("Network is down in afs_open: missing chunks\n");*/ + code = ENETDOWN; + goto done; + } +#endif + + ReleaseReadLock(&tvc->lock); + if (aflags & (FWRITE | FTRUNC)) writing = 1; else @@ -150,8 +167,39 @@ afs_open(struct vcache **avcp, afs_int32 aflags, struct AFS_UCRED *acred) } #endif ReleaseReadLock(&tvc->lock); + if ((afs_preCache != 0) && (writing == 0) && (vType(tvc) != VDIR) && + (!afs_BBusy())) { + register struct dcache *tdc; + afs_size_t offset, len, totallen = 0; + + tdc = afs_GetDCache(tvc, 0, &treq, &offset, &len, 1); + + ObtainSharedLock(&tdc->mflock, 865); + if (!(tdc->mflags & DFFetchReq)) { + struct brequest *bp; + + /* start the daemon (may already be running, however) */ + UpgradeSToWLock(&tdc->mflock, 666); + tdc->mflags |= DFFetchReq; /* guaranteed to be cleared by BKG or + GetDCache */ + /* last parm (1) tells bkg daemon to do an afs_PutDCache when it + is done, since we don't want to wait for it to finish before + doing so ourselves. + */ + bp = afs_BQueue(BOP_FETCH, tvc, B_DONTWAIT, 0, acred, + (afs_size_t) 0, (afs_size_t) 1, tdc); + if (!bp) { + tdc->mflags &= ~DFFetchReq; + } + ReleaseWriteLock(&tdc->mflock); + } else { + ReleaseSharedLock(&tdc->mflock); + } + } done: afs_PutFakeStat(&fakestate); + AFS_DISCON_UNLOCK(); + code = afs_CheckCode(code, &treq, 4); /* avoid AIX -O bug */ afs_Trace2(afs_iclSetp, CM_TRACE_OPEN, ICL_TYPE_POINTER, tvc, diff --git a/src/afs/VNOPS/afs_vnop_read.c b/src/afs/VNOPS/afs_vnop_read.c index f48ab3ae3..c3f9475b6 100644 --- a/src/afs/VNOPS/afs_vnop_read.c +++ b/src/afs/VNOPS/afs_vnop_read.c @@ -19,7 +19,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_read.c,v 1.26.2.6 2008/04/27 03:54:27 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_read.c,v 1.34.2.4 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -388,12 +388,16 @@ afs_MemRead(register struct vcache *avc, struct uio *auio, */ if (tdc) { ReleaseReadLock(&tdc->lock); -#if !defined(AFS_VM_RDWR_ENV) /* try to queue prefetch, if needed */ - if (!noLock) { + if (!noLock && +#ifndef AFS_VM_RDWR_ENV + afs_preCache +#else + 1 +#endif + ) { afs_PrefetchChunk(avc, tdc, acred, &treq); } -#endif afs_PutDCache(tdc); } if (!noLock) @@ -439,6 +443,15 @@ afs_PrefetchChunk(struct vcache *avc, struct dcache *adc, ReleaseReadLock(&adc->lock); tdc = afs_GetDCache(avc, offset, areq, &j1, &j2, 2); /* type 2 never returns 0 */ +#ifdef AFS_DISCON_ENV + /* + * In disconnected mode, type 2 can return 0 because it doesn't + * make any sense to allocate a dcache we can never fill + */ + if (tdc == NULL) + return; +#endif /* AFS_DISCON_ENV */ + ObtainSharedLock(&tdc->mflock, 651); if (!(tdc->mflags & DFFetchReq)) { /* ask the daemon to do the work */ @@ -508,6 +521,8 @@ afs_UFSRead(register struct vcache *avc, struct uio *auio, if (avc && avc->vc_error) return EIO; + AFS_DISCON_LOCK(); + /* check that we have the latest status info in the vnode cache */ if ((code = afs_InitReq(&treq, acred))) return code; @@ -518,6 +533,7 @@ afs_UFSRead(register struct vcache *avc, struct uio *auio, code = afs_VerifyVCache(avc, &treq); if (code) { code = afs_CheckCode(code, &treq, 11); /* failed to get it */ + AFS_DISCON_UNLOCK(); return code; } } @@ -527,6 +543,7 @@ afs_UFSRead(register struct vcache *avc, struct uio *auio, if (!afs_AccessOK (avc, PRSFS_READ, &treq, CHECK_MODE_BITS | CMB_ALLOW_EXEC_AS_READ)) { + AFS_DISCON_UNLOCK(); return afs_CheckCode(EACCES, &treq, 12); } } @@ -617,6 +634,14 @@ afs_UFSRead(register struct vcache *avc, struct uio *auio, afs_PutDCache(tdc); /* before reusing tdc */ } tdc = afs_GetDCache(avc, filePos, &treq, &offset, &len, 2); +#ifdef AFS_DISCON_ENV + if (!tdc) { + /*printf("Network down in afs_read");*/ + error = ENETDOWN; + break; + } +#endif /* AFS_DISCON_ENV */ + ObtainReadLock(&tdc->lock); /* now, first try to start transfer, if we'll need the data. If * data already coming, we don't need to do this, obviously. Type @@ -948,6 +973,7 @@ afs_UFSRead(register struct vcache *avc, struct uio *auio, #else osi_FreeSmallSpace(tvec); #endif + AFS_DISCON_UNLOCK(); error = afs_CheckCode(error, &treq, 13); return error; } diff --git a/src/afs/VNOPS/afs_vnop_readdir.c b/src/afs/VNOPS/afs_vnop_readdir.c index 3497da6dd..6a97efece 100644 --- a/src/afs/VNOPS/afs_vnop_readdir.c +++ b/src/afs/VNOPS/afs_vnop_readdir.c @@ -23,7 +23,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_readdir.c,v 1.24.2.8 2005/11/19 04:35:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_readdir.c,v 1.33.4.1 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -634,9 +634,11 @@ afs_readdir(OSI_VC_ARG(avc), auio, acred) if (eofp) *eofp = 0; #endif +#ifndef AFS_64BIT_CLIENT if (AfsLargeFileUio(auio) /* file is large than 2 GB */ ||AfsLargeFileSize(AFS_UIO_OFFSET(auio), AFS_UIO_RESID(auio))) return EFBIG; +#endif if ((code = afs_InitReq(&treq, acred))) { #ifdef AFS_HPUX_ENV @@ -646,6 +648,9 @@ afs_readdir(OSI_VC_ARG(avc), auio, acred) } /* update the cache entry */ afs_InitFakeStat(&fakestate); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&avc, &fakestate, &treq); if (code) goto done; @@ -908,6 +913,7 @@ afs_readdir(OSI_VC_ARG(avc), auio, acred) #ifdef AFS_HPUX_ENV osi_FreeSmallSpace((char *)sdirEntry); #endif + AFS_DISCON_UNLOCK(); afs_PutFakeStat(&fakestate); code = afs_CheckCode(code, &treq, 28); return code; @@ -955,11 +961,13 @@ afs1_readdir(avc, auio, acred) return code; } afs_InitFakeStat(&fakestate); + AFS_DISCON_LOCK(); code = afs_EvalFakeStat(&avc, &fakestate, &treq); if (code) { #ifdef AFS_HPUX_ENV osi_FreeSmallSpace((char *)sdirEntry); #endif + AFS_DISCON_UNLOCK(); afs_PutFakeStat(&fakestate); return code; } @@ -1175,6 +1183,7 @@ afs1_readdir(avc, auio, acred) #if defined(AFS_HPUX_ENV) || defined(AFS_OSF_ENV) osi_FreeSmallSpace((char *)sdirEntry); #endif + AFS_DISCON_UNLOCK(); afs_PutFakeStat(&fakestate); code = afs_CheckCode(code, &treq, 29); return code; diff --git a/src/afs/VNOPS/afs_vnop_remove.c b/src/afs/VNOPS/afs_vnop_remove.c index 9bdcedd4f..31b3acfef 100644 --- a/src/afs/VNOPS/afs_vnop_remove.c +++ b/src/afs/VNOPS/afs_vnop_remove.c @@ -21,7 +21,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_remove.c,v 1.31.2.17 2007/12/19 20:59:48 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_remove.c,v 1.52.2.5 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -104,26 +104,29 @@ afsremove(register struct vcache *adp, register struct dcache *tdc, register struct vcache *tvc, char *aname, struct AFS_UCRED *acred, struct vrequest *treqp) { - register afs_int32 code; + register afs_int32 code = 0; register struct conn *tc; struct AFSFetchStatus OutDirStatus; struct AFSVolSync tsync; XSTATS_DECLS; - do { - tc = afs_Conn(&adp->fid, treqp, SHARED_LOCK); - if (tc) { - XSTATS_START_TIME(AFS_STATS_FS_RPCIDX_REMOVEFILE); - RX_AFS_GUNLOCK(); - code = - RXAFS_RemoveFile(tc->id, (struct AFSFid *)&adp->fid.Fid, - aname, &OutDirStatus, &tsync); - RX_AFS_GLOCK(); - XSTATS_END_TIME; - } else - code = -1; - } while (afs_Analyze - (tc, code, &adp->fid, treqp, AFS_STATS_FS_RPCIDX_REMOVEFILE, - SHARED_LOCK, NULL)); + + if (!AFS_IS_DISCONNECTED) { + do { + tc = afs_Conn(&adp->fid, treqp, SHARED_LOCK); + if (tc) { + XSTATS_START_TIME(AFS_STATS_FS_RPCIDX_REMOVEFILE); + RX_AFS_GUNLOCK(); + code = + RXAFS_RemoveFile(tc->id, (struct AFSFid *)&adp->fid.Fid, + aname, &OutDirStatus, &tsync); + RX_AFS_GLOCK(); + XSTATS_END_TIME; + } else + code = -1; + } while (afs_Analyze + (tc, code, &adp->fid, treqp, AFS_STATS_FS_RPCIDX_REMOVEFILE, + SHARED_LOCK, NULL)); + } osi_dnlc_remove(adp, aname, tvc); @@ -263,6 +266,9 @@ afs_remove(OSI_VC_ARG(adp), aname, acred) #endif return code; } + if (afs_IsDynrootMount(adp)) { + return ENOENT; + } if (strlen(aname) > AFSNAMEMAX) { afs_PutFakeStat(&fakestate); @@ -301,6 +307,16 @@ afs_remove(OSI_VC_ARG(adp), aname, acred) return code; } + /* If we're running disconnected without logging, go no further... */ + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { +#ifdef AFS_OSF_ENV + afs_PutVCache(tvc); +#endif + code = ENETDOWN; + afs_PutFakeStat(&fakestate); + return code; + } + tdc = afs_GetDCache(adp, (afs_size_t) 0, &treq, &offset, &len, 1); /* test for error below */ ObtainWriteLock(&adp->lock, 142); if (tdc) @@ -393,7 +409,7 @@ afs_remove(OSI_VC_ARG(adp), aname, acred) code = afsrename(adp, aname, adp, unlname, acred, &treq); Tnam1 = unlname; if (!code) { - char *oldmvid = NULL; + struct VenusFid *oldmvid = NULL; if (tvc->mvid) oldmvid = tvc->mvid; tvc->mvid = (struct VenusFid *)unlname; diff --git a/src/afs/VNOPS/afs_vnop_rename.c b/src/afs/VNOPS/afs_vnop_rename.c index b0b48561d..4fdd1e781 100644 --- a/src/afs/VNOPS/afs_vnop_rename.c +++ b/src/afs/VNOPS/afs_vnop_rename.c @@ -18,7 +18,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_rename.c,v 1.16.2.12 2007/12/08 18:00:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_rename.c,v 1.28.4.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -82,6 +82,12 @@ afsrename(struct vcache *aodp, char *aname1, struct vcache *andp, code = 0; goto done; } + + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + code = ENETDOWN; + goto done; + } + ObtainWriteLock(&andp->lock, 147); tdc1 = afs_GetDCache(aodp, (afs_size_t) 0, areq, &offset, &len, 0); if (!tdc1) { @@ -161,7 +167,6 @@ afsrename(struct vcache *aodp, char *aname1, struct vcache *andp, goto done; } - /* locks are now set, proceed to do the real work */ do { tc = afs_Conn(&aodp->fid, areq, SHARED_LOCK); if (tc) { @@ -376,6 +381,9 @@ afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, char *aname2, s return code; afs_InitFakeStat(&ofakestate); afs_InitFakeStat(&nfakestate); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&aodp, &ofakestate, &treq); if (code) goto done; @@ -386,6 +394,9 @@ afs_rename(OSI_VC_DECL(aodp), char *aname1, struct vcache *andp, char *aname2, s done: afs_PutFakeStat(&ofakestate); afs_PutFakeStat(&nfakestate); + + AFS_DISCON_UNLOCK(); + code = afs_CheckCode(code, &treq, 25); return code; } diff --git a/src/afs/VNOPS/afs_vnop_strategy.c b/src/afs/VNOPS/afs_vnop_strategy.c index dc3428c25..7b1824fe8 100644 --- a/src/afs/VNOPS/afs_vnop_strategy.c +++ b/src/afs/VNOPS/afs_vnop_strategy.c @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_strategy.c,v 1.18.2.4 2005/10/12 06:17:27 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_strategy.c,v 1.22 2005/10/13 15:12:08 shadow Exp $"); #if !defined(AFS_HPUX_ENV) && !defined(AFS_SGI_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN80_ENV) diff --git a/src/afs/VNOPS/afs_vnop_symlink.c b/src/afs/VNOPS/afs_vnop_symlink.c index 2a7a750af..d2cd1e512 100644 --- a/src/afs/VNOPS/afs_vnop_symlink.c +++ b/src/afs/VNOPS/afs_vnop_symlink.c @@ -22,7 +22,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_symlink.c,v 1.19.2.6 2007/12/08 18:00:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_symlink.c,v 1.24.4.6 2008/06/09 03:30:30 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -76,6 +76,9 @@ int afs_symlink goto done2; afs_InitFakeStat(&fakestate); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&adp, &fakestate, &treq); if (code) goto done; @@ -89,6 +92,10 @@ int afs_symlink code = afs_DynrootVOPSymlink(adp, acred, aname, atargetName); goto done; } + if (afs_IsDynrootMount(adp)) { + code = EROFS; + goto done; + } code = afs_VerifyVCache(adp, &treq); if (code) { @@ -104,10 +111,15 @@ int afs_symlink goto done; } + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) { + code = ENETDOWN; + goto done; + } + InStatus.Mask = AFS_SETMODTIME | AFS_SETMODE; InStatus.ClientModTime = osi_Time(); alen = strlen(atargetName); /* we want it to include the null */ - if (*atargetName == '#' || *atargetName == '%') { + if ( (*atargetName == '#' || *atargetName == '%') && alen > 1 && atargetName[alen-1] == '.') { InStatus.UnixModeBits = 0644; /* mt pt: null from "." at end */ if (alen == 1) alen++; /* Empty string */ @@ -231,6 +243,7 @@ int afs_symlink afs_PutFakeStat(&fakestate); if (volp) afs_PutVolume(volp, READ_LOCK); + AFS_DISCON_UNLOCK(); code = afs_CheckCode(code, &treq, 31); done2: return code; @@ -306,7 +319,10 @@ afs_UFSHandleLink(register struct vcache *avc, struct vrequest *areq) ICL_TYPE_POINTER, tdc, ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(avc->m.Length)); if (!tdc) { - return EIO; + if (AFS_IS_DISCONNECTED) + return ENETDOWN; + else + return EIO; } /* otherwise we have the data loaded, go for it */ if (len > 1024) { @@ -356,6 +372,9 @@ afs_readlink(OSI_VC_ARG(avc), auio, acred) if ((code = afs_InitReq(&treq, acred))) return code; afs_InitFakeStat(&fakestat); + + AFS_DISCON_LOCK(); + code = afs_EvalFakeStat(&avc, &fakestat, &treq); if (code) goto done; @@ -380,6 +399,7 @@ afs_readlink(OSI_VC_ARG(avc), auio, acred) ReleaseWriteLock(&avc->lock); done: afs_PutFakeStat(&fakestat); + AFS_DISCON_UNLOCK(); code = afs_CheckCode(code, &treq, 32); return code; } diff --git a/src/afs/VNOPS/afs_vnop_write.c b/src/afs/VNOPS/afs_vnop_write.c index 63aae305d..339665e6c 100644 --- a/src/afs/VNOPS/afs_vnop_write.c +++ b/src/afs/VNOPS/afs_vnop_write.c @@ -21,7 +21,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_write.c,v 1.36.2.9 2006/02/27 20:37:47 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_write.c,v 1.50.2.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -382,6 +382,9 @@ afs_UFSWrite(register struct vcache *avc, struct uio *auio, int aio, if (avc->vc_error) return avc->vc_error; + if (AFS_IS_DISCONNECTED && !AFS_IS_LOGGING) + return ENETDOWN; + startDate = osi_Time(); if ((code = afs_InitReq(&treq, acred))) return code; @@ -873,15 +876,6 @@ afs_close(OSI_VC_ARG(avc), aflags, acred) afs_PutFakeStat(&fakestat); return 0; } -#elif defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) - if (count > 1) { - /* The vfs layer may call this repeatedly with higher "count"; only on the last close (i.e. count = 1) we should actually proceed with the close. */ - afs_PutFakeStat(&fakestat); - return 0; - } -#endif -#ifndef AFS_SUN5_ENV -#if defined(AFS_SGI_ENV) /* unlock any locks for pid - could be wrong for child .. */ AFS_RWLOCK((vnode_t *) avc, VRWLOCK_WRITE); #ifdef AFS_SGI65_ENV @@ -898,6 +892,12 @@ afs_close(OSI_VC_ARG(avc), aflags, acred) #endif /* AFS_SGI65_ENV */ /* afs_chkpgoob will drop and re-acquire the global lock. */ afs_chkpgoob(&avc->v, btoc(avc->m.Length)); +#elif defined(AFS_SUN5_ENV) + if (count > 1) { + /* The vfs layer may call this repeatedly with higher "count"; only on the last close (i.e. count = 1) we should actually proceed with the close. */ + afs_PutFakeStat(&fakestat); + return 0; + } #else /* AFS_SGI_ENV */ if (avc->flockCount) { /* Release Lock */ #if defined(AFS_OSF_ENV) @@ -907,9 +907,8 @@ afs_close(OSI_VC_ARG(avc), aflags, acred) #endif } #endif /* AFS_SGI_ENV */ -#endif /* AFS_SUN5_ENV */ if (aflags & (FWRITE | FTRUNC)) { - if (afs_BBusy()) { + if (afs_BBusy() || (AFS_NFSXLATORREQ(acred))) { /* do it yourself if daemons are all busy */ ObtainWriteLock(&avc->lock, 124); code = afs_StoreOnLastReference(avc, &treq); diff --git a/src/afs/afs.h b/src/afs/afs.h index 1eb146af3..b3f41c246 100644 --- a/src/afs/afs.h +++ b/src/afs/afs.h @@ -86,11 +86,13 @@ extern int afs_shuttingdown; #define AFS_NRXPACKETS 80 #define AFS_RXDEADTIME 50 #define AFS_HARDDEADTIME 120 +#define AFS_IDLEDEADTIME 50 #define AFS_BLKBITS 12 #define AFS_BLKSIZE (1 << AFS_BLKBITS) extern afs_int32 afs_rx_deadtime; extern afs_int32 afs_rx_harddead; +extern afs_int32 afs_rx_idledead; struct sysname_info { char *name; @@ -186,6 +188,9 @@ struct vrequest { char volumeError; /* encountered a missing or busy volume */ char networkError; /* encountered network problems */ char permWriteError; /* fileserver returns permenent error. */ + char tokenError; /* a token error other than expired. */ + char idleError; /* the server idled too long */ + char skipserver[MAXHOSTS]; }; #define VOLMISSING 1 #define VOLBUSY 2 @@ -226,6 +231,7 @@ struct cell { time_t timeout; /* data expire time, if non-zero */ struct cell_name *cnamep; /* pointer to our cell_name */ afs_rwlock_t lock; /* protects cell data */ + unsigned char cellHandle[16]; /* deterministic handle for this cell */ }; struct cell_name { @@ -250,6 +256,7 @@ struct cell_alias { #define UPrimary 4 /* on iff primary identity */ #define UNeedsReset 8 /* needs afs_ResetAccessCache call done */ #define UPAGCounted 16 /* entry seen during PAG search (for stats) */ +#define UNFSGetCreds 32 /* getting creds for NFS client */ /* A flag used by afs_GCPAGs to keep track of * which entries in afs_users need to be deleted. * The lifetime of its presence in the table is the @@ -284,6 +291,7 @@ struct unixuser { char *stp; /* pointer to ticket itself */ struct ClearToken ct; struct afs_exporter *exporter; /* more info about the exporter for the remote user */ + void *cellinfo; /* pointer to cell info (PAG manager only) */ }; struct conn { @@ -544,6 +552,7 @@ struct SimpleLocks { #endif #define CUnique 0x00001000 /* vc's uniquifier - latest unifiquier for fid */ #define CForeign 0x00002000 /* this is a non-afs vcache */ +#define CReadDir 0x00004000 /* readdir in progress */ #define CUnlinked 0x00010000 #define CBulkStat 0x00020000 /* loaded by a bulk stat, and not ref'd since */ #define CUnlinkedDel 0x00040000 @@ -701,6 +710,8 @@ struct vcache { afs_uint32 vstates; /* vstate bits */ #endif /* defined(AFS_SUN5_ENV) */ struct dcache *dchint; + struct dcache *dcreaddir; /* dcache for in-progress readdir */ + unsigned int readdir_pid; /* pid of the thread in readdir */ #ifdef AFS_LINUX22_ENV u_short mapcnt; /* Number of mappings of this file. */ #endif @@ -838,6 +849,9 @@ struct cm_initparams { #define NULLIDX (-1) /* null index definition */ /* struct dcache states bits */ +#define DRO 1 +#define DBackup 2 +#define DRW 4 #define DWriting 8 /* file being written (used for cache validation) */ /* dcache data flags */ @@ -966,7 +980,7 @@ struct dcache { char dflags; /* Data flags */ char mflags; /* Meta flags */ struct fcache f; /* disk image */ - + afs_int32 bucket; /* which bucket these dcache entries are in */ /* * Locking rules: * @@ -1050,6 +1064,8 @@ struct memCacheEntry { /*#define afs_DirtyPages(avc) (((avc)->states & CDirty) || osi_VMDirty_p((avc)))*/ #define afs_DirtyPages(avc) ((avc)->states & CDirty) +#define afs_InReadDir(avc) (((avc)->states & CReadDir) && (avc)->readdir_pid == MyPidxx) + /* The PFlush algorithm makes use of the fact that Fid.Unique is not used in below hash algorithms. Change it if need be so that flushing algorithm doesn't move things from one hash chain to another @@ -1221,10 +1237,4 @@ struct afs_fakestat_state { }; extern int afs_fakestat_enable; - -/* First 32 bits of capabilities */ -#define CAPABILITY_ERRORTRANS (1<<0) - -#define CAPABILITY_BITS 1 - #endif /* _AFS_H_ */ diff --git a/src/afs/afs_analyze.c b/src/afs/afs_analyze.c index 403149fdd..535e2714c 100644 --- a/src/afs/afs_analyze.c +++ b/src/afs/afs_analyze.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_analyze.c,v 1.22.2.2 2007/01/09 15:28:19 jaltman Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_analyze.c,v 1.22.14.8 2008/06/29 03:39:12 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -71,220 +71,6 @@ afs_int32 hm_retry_RO = 0; /* don't wait */ afs_int32 hm_retry_RW = 0; /* don't wait */ afs_int32 hm_retry_int = 0; /* don't wait */ -static int et2sys[512]; - -void -init_et_to_sys_error(void) -{ - memset(&et2sys, 0, sizeof(et2sys)); - et2sys[(UAEPERM - ERROR_TABLE_BASE_uae)] = EPERM; - et2sys[(UAENOENT - ERROR_TABLE_BASE_uae)] = ENOENT; - et2sys[(UAESRCH - ERROR_TABLE_BASE_uae)] = ESRCH; - et2sys[(UAEINTR - ERROR_TABLE_BASE_uae)] = EINTR; - et2sys[(UAEIO - ERROR_TABLE_BASE_uae)] = EIO; - et2sys[(UAENXIO - ERROR_TABLE_BASE_uae)] = ENXIO; - et2sys[(UAE2BIG - ERROR_TABLE_BASE_uae)] = E2BIG; - et2sys[(UAENOEXEC - ERROR_TABLE_BASE_uae)] = ENOEXEC; - et2sys[(UAEBADF - ERROR_TABLE_BASE_uae)] = EBADF; - et2sys[(UAECHILD - ERROR_TABLE_BASE_uae)] = ECHILD; - et2sys[(UAEAGAIN - ERROR_TABLE_BASE_uae)] = EAGAIN; - et2sys[(UAENOMEM - ERROR_TABLE_BASE_uae)] = ENOMEM; - et2sys[(UAEACCES - ERROR_TABLE_BASE_uae)] = EACCES; - et2sys[(UAEFAULT - ERROR_TABLE_BASE_uae)] = EFAULT; - et2sys[(UAENOTBLK - ERROR_TABLE_BASE_uae)] = ENOTBLK; - et2sys[(UAEBUSY - ERROR_TABLE_BASE_uae)] = EBUSY; - et2sys[(UAEEXIST - ERROR_TABLE_BASE_uae)] = EEXIST; - et2sys[(UAEXDEV - ERROR_TABLE_BASE_uae)] = EXDEV; - et2sys[(UAENODEV - ERROR_TABLE_BASE_uae)] = ENODEV; - et2sys[(UAENOTDIR - ERROR_TABLE_BASE_uae)] = ENOTDIR; - et2sys[(UAEISDIR - ERROR_TABLE_BASE_uae)] = EISDIR; - et2sys[(UAEINVAL - ERROR_TABLE_BASE_uae)] = EINVAL; - et2sys[(UAENFILE - ERROR_TABLE_BASE_uae)] = ENFILE; - et2sys[(UAEMFILE - ERROR_TABLE_BASE_uae)] = EMFILE; - et2sys[(UAENOTTY - ERROR_TABLE_BASE_uae)] = ENOTTY; - et2sys[(UAETXTBSY - ERROR_TABLE_BASE_uae)] = ETXTBSY; - et2sys[(UAEFBIG - ERROR_TABLE_BASE_uae)] = EFBIG; - et2sys[(UAENOSPC - ERROR_TABLE_BASE_uae)] = ENOSPC; - et2sys[(UAESPIPE - ERROR_TABLE_BASE_uae)] = ESPIPE; - et2sys[(UAEROFS - ERROR_TABLE_BASE_uae)] = EROFS; - et2sys[(UAEMLINK - ERROR_TABLE_BASE_uae)] = EMLINK; - et2sys[(UAEPIPE - ERROR_TABLE_BASE_uae)] = EPIPE; - et2sys[(UAEDOM - ERROR_TABLE_BASE_uae)] = EDOM; - et2sys[(UAERANGE - ERROR_TABLE_BASE_uae)] = ERANGE; - et2sys[(UAEDEADLK - ERROR_TABLE_BASE_uae)] = EDEADLK; - et2sys[(UAENAMETOOLONG - ERROR_TABLE_BASE_uae)] = ENAMETOOLONG; - et2sys[(UAENOLCK - ERROR_TABLE_BASE_uae)] = ENOLCK; - et2sys[(UAENOSYS - ERROR_TABLE_BASE_uae)] = ENOSYS; - et2sys[(UAENOTEMPTY - ERROR_TABLE_BASE_uae)] = ENOTEMPTY; - et2sys[(UAELOOP - ERROR_TABLE_BASE_uae)] = ELOOP; - et2sys[(UAEWOULDBLOCK - ERROR_TABLE_BASE_uae)] = EWOULDBLOCK; - et2sys[(UAENOMSG - ERROR_TABLE_BASE_uae)] = ENOMSG; - et2sys[(UAEIDRM - ERROR_TABLE_BASE_uae)] = EIDRM; - et2sys[(UAECHRNG - ERROR_TABLE_BASE_uae)] = ECHRNG; - et2sys[(UAEL2NSYNC - ERROR_TABLE_BASE_uae)] = EL2NSYNC; - et2sys[(UAEL3HLT - ERROR_TABLE_BASE_uae)] = EL3HLT; - et2sys[(UAEL3RST - ERROR_TABLE_BASE_uae)] = EL3RST; - et2sys[(UAELNRNG - ERROR_TABLE_BASE_uae)] = ELNRNG; - et2sys[(UAEUNATCH - ERROR_TABLE_BASE_uae)] = EUNATCH; - et2sys[(UAENOCSI - ERROR_TABLE_BASE_uae)] = ENOCSI; - et2sys[(UAEL2HLT - ERROR_TABLE_BASE_uae)] = EL2HLT; - et2sys[(UAEBADE - ERROR_TABLE_BASE_uae)] = EBADE; - et2sys[(UAEBADR - ERROR_TABLE_BASE_uae)] = EBADR; - et2sys[(UAEXFULL - ERROR_TABLE_BASE_uae)] = EXFULL; - et2sys[(UAENOANO - ERROR_TABLE_BASE_uae)] = ENOANO; - et2sys[(UAEBADRQC - ERROR_TABLE_BASE_uae)] = EBADRQC; - et2sys[(UAEBADSLT - ERROR_TABLE_BASE_uae)] = EBADSLT; - et2sys[(UAEBFONT - ERROR_TABLE_BASE_uae)] = EBFONT; - et2sys[(UAENOSTR - ERROR_TABLE_BASE_uae)] = ENOSTR; - et2sys[(UAENODATA - ERROR_TABLE_BASE_uae)] = ENODATA; - et2sys[(UAETIME - ERROR_TABLE_BASE_uae)] = ETIME; - et2sys[(UAENOSR - ERROR_TABLE_BASE_uae)] = ENOSR; - et2sys[(UAENONET - ERROR_TABLE_BASE_uae)] = ENONET; - et2sys[(UAENOPKG - ERROR_TABLE_BASE_uae)] = ENOPKG; - et2sys[(UAEREMOTE - ERROR_TABLE_BASE_uae)] = EREMOTE; - et2sys[(UAENOLINK - ERROR_TABLE_BASE_uae)] = ENOLINK; - et2sys[(UAEADV - ERROR_TABLE_BASE_uae)] = EADV; - et2sys[(UAESRMNT - ERROR_TABLE_BASE_uae)] = ESRMNT; - et2sys[(UAECOMM - ERROR_TABLE_BASE_uae)] = ECOMM; - et2sys[(UAEPROTO - ERROR_TABLE_BASE_uae)] = EPROTO; - et2sys[(UAEMULTIHOP - ERROR_TABLE_BASE_uae)] = EMULTIHOP; - et2sys[(UAEDOTDOT - ERROR_TABLE_BASE_uae)] = EDOTDOT; - et2sys[(UAEBADMSG - ERROR_TABLE_BASE_uae)] = EBADMSG; - et2sys[(UAEOVERFLOW - ERROR_TABLE_BASE_uae)] = EOVERFLOW; - et2sys[(UAENOTUNIQ - ERROR_TABLE_BASE_uae)] = ENOTUNIQ; - et2sys[(UAEBADFD - ERROR_TABLE_BASE_uae)] = EBADFD; - et2sys[(UAEREMCHG - ERROR_TABLE_BASE_uae)] = EREMCHG; - et2sys[(UAELIBACC - ERROR_TABLE_BASE_uae)] = ELIBACC; - et2sys[(UAELIBBAD - ERROR_TABLE_BASE_uae)] = ELIBBAD; - et2sys[(UAELIBSCN - ERROR_TABLE_BASE_uae)] = ELIBSCN; - et2sys[(UAELIBMAX - ERROR_TABLE_BASE_uae)] = ELIBMAX; - et2sys[(UAELIBEXEC - ERROR_TABLE_BASE_uae)] = ELIBEXEC; - et2sys[(UAEILSEQ - ERROR_TABLE_BASE_uae)] = EILSEQ; - et2sys[(UAERESTART - ERROR_TABLE_BASE_uae)] = ERESTART; - et2sys[(UAESTRPIPE - ERROR_TABLE_BASE_uae)] = ESTRPIPE; - et2sys[(UAEUSERS - ERROR_TABLE_BASE_uae)] = EUSERS; - et2sys[(UAENOTSOCK - ERROR_TABLE_BASE_uae)] = ENOTSOCK; - et2sys[(UAEDESTADDRREQ - ERROR_TABLE_BASE_uae)] = EDESTADDRREQ; - et2sys[(UAEMSGSIZE - ERROR_TABLE_BASE_uae)] = EMSGSIZE; - et2sys[(UAEPROTOTYPE - ERROR_TABLE_BASE_uae)] = EPROTOTYPE; - et2sys[(UAENOPROTOOPT - ERROR_TABLE_BASE_uae)] = ENOPROTOOPT; - et2sys[(UAEPROTONOSUPPORT - ERROR_TABLE_BASE_uae)] = EPROTONOSUPPORT; - et2sys[(UAESOCKTNOSUPPORT - ERROR_TABLE_BASE_uae)] = ESOCKTNOSUPPORT; - et2sys[(UAEOPNOTSUPP - ERROR_TABLE_BASE_uae)] = EOPNOTSUPP; - et2sys[(UAEPFNOSUPPORT - ERROR_TABLE_BASE_uae)] = EPFNOSUPPORT; - et2sys[(UAEAFNOSUPPORT - ERROR_TABLE_BASE_uae)] = EAFNOSUPPORT; - et2sys[(UAEADDRINUSE - ERROR_TABLE_BASE_uae)] = EADDRINUSE; - et2sys[(UAEADDRNOTAVAIL - ERROR_TABLE_BASE_uae)] = EADDRNOTAVAIL; - et2sys[(UAENETDOWN - ERROR_TABLE_BASE_uae)] = ENETDOWN; - et2sys[(UAENETUNREACH - ERROR_TABLE_BASE_uae)] = ENETUNREACH; - et2sys[(UAENETRESET - ERROR_TABLE_BASE_uae)] = ENETRESET; - et2sys[(UAECONNABORTED - ERROR_TABLE_BASE_uae)] = ECONNABORTED; - et2sys[(UAECONNRESET - ERROR_TABLE_BASE_uae)] = ECONNRESET; - et2sys[(UAENOBUFS - ERROR_TABLE_BASE_uae)] = ENOBUFS; - et2sys[(UAEISCONN - ERROR_TABLE_BASE_uae)] = EISCONN; - et2sys[(UAENOTCONN - ERROR_TABLE_BASE_uae)] = ENOTCONN; - et2sys[(UAESHUTDOWN - ERROR_TABLE_BASE_uae)] = ESHUTDOWN; - et2sys[(UAETOOMANYREFS - ERROR_TABLE_BASE_uae)] = ETOOMANYREFS; - et2sys[(UAETIMEDOUT - ERROR_TABLE_BASE_uae)] = ETIMEDOUT; - et2sys[(UAECONNREFUSED - ERROR_TABLE_BASE_uae)] = ECONNREFUSED; - et2sys[(UAEHOSTDOWN - ERROR_TABLE_BASE_uae)] = EHOSTDOWN; - et2sys[(UAEHOSTUNREACH - ERROR_TABLE_BASE_uae)] = EHOSTUNREACH; - et2sys[(UAEALREADY - ERROR_TABLE_BASE_uae)] = EALREADY; - et2sys[(UAEINPROGRESS - ERROR_TABLE_BASE_uae)] = EINPROGRESS; - et2sys[(UAESTALE - ERROR_TABLE_BASE_uae)] = ESTALE; - et2sys[(UAEUCLEAN - ERROR_TABLE_BASE_uae)] = EUCLEAN; - et2sys[(UAENOTNAM - ERROR_TABLE_BASE_uae)] = ENOTNAM; - et2sys[(UAENAVAIL - ERROR_TABLE_BASE_uae)] = ENAVAIL; - et2sys[(UAEISNAM - ERROR_TABLE_BASE_uae)] = EISNAM; - et2sys[(UAEREMOTEIO - ERROR_TABLE_BASE_uae)] = EREMOTEIO; - et2sys[(UAEDQUOT - ERROR_TABLE_BASE_uae)] = EDQUOT; - et2sys[(UAENOMEDIUM - ERROR_TABLE_BASE_uae)] = ENOMEDIUM; - et2sys[(UAEMEDIUMTYPE - ERROR_TABLE_BASE_uae)] = EMEDIUMTYPE; -} - -static afs_int32 -et_to_sys_error(afs_int32 in) -{ - if (in < ERROR_TABLE_BASE_uae || in >= ERROR_TABLE_BASE_uae + 512) - return in; - if (et2sys[in - ERROR_TABLE_BASE_uae] != 0) - return et2sys[in - ERROR_TABLE_BASE_uae]; - return in; -} - -void -afs_CopyError(register struct vrequest *afrom, register struct vrequest *ato) -{ - AFS_STATCNT(afs_CopyError); - if (!afrom->initd) - return; - afs_FinalizeReq(ato); - if (afrom->accessError) - ato->accessError = 1; - if (afrom->volumeError) - ato->volumeError = 1; - if (afrom->networkError) - ato->networkError = 1; - if (afrom->permWriteError) - ato->permWriteError = 1; - -} - -void -afs_FinalizeReq(register struct vrequest *areq) -{ - AFS_STATCNT(afs_FinalizeReq); - if (areq->initd) - return; - areq->busyCount = 0; - areq->accessError = 0; - areq->volumeError = 0; - areq->networkError = 0; - areq->permWriteError = 0; - areq->initd = 1; - -} - -int -afs_CheckCode(afs_int32 acode, struct vrequest *areq, int where) -{ - AFS_STATCNT(afs_CheckCode); - if (acode) { - afs_Trace2(afs_iclSetp, CM_TRACE_CHECKCODE, ICL_TYPE_INT32, acode, - ICL_TYPE_INT32, where); - } - if ((acode & ~0xff) == ERROR_TABLE_BASE_uae) - acode = et_to_sys_error(acode); - if (!areq || !areq->initd) - return acode; - if (areq->networkError) - return ETIMEDOUT; - if (acode == 0) - return 0; - if (areq->accessError) - return EACCES; - if (areq->volumeError == VOLMISSING) - return ENODEV; - if (areq->volumeError == VOLBUSY) - return EWOULDBLOCK; - if (acode == VNOVNODE) - return ENOENT; - if (acode == VDISKFULL) - return ENOSPC; - if (acode == VOVERQUOTA) - return -#ifdef EDQUOT - EDQUOT -#else - ENOSPC -#endif - ; - - return acode; - -} /*afs_CheckCode */ - - #define VSleep(at) afs_osi_Wait((at)*1000, 0, 0) @@ -425,6 +211,67 @@ VLDB_Same(struct VenusFid *afid, struct vrequest *areq) return (changed ? DIFFERENT : SAME); } /*VLDB_Same */ +/*------------------------------------------------------------------------ + * afs_BlackListOnce + * + * Description: + * Mark a server as invalid for further attempts of this request only. + * + * Arguments: + * areq : The request record associated with this operation. + * afid : The FID of the file involved in the action. This argument + * may be null if none was involved. + * tsp : pointer to a server struct for the server we wish to + * blacklist. + * + * Returns: + * Non-zero value if further servers are available to try, + * zero otherwise. + * + * Environment: + * This routine is typically called in situations where we believe + * one server out of a pool may have an error condition. + * + * Side Effects: + * As advertised. + * + * NOTE: + * The afs_Conn* routines use the list of invalidated servers to + * avoid reusing a server marked as invalid for this request. + *------------------------------------------------------------------------*/ +static afs_int32 +afs_BlackListOnce(struct vrequest *areq, struct VenusFid *afid, + struct server *tsp) +{ + struct volume *tvp; + afs_int32 i; + afs_int32 serversleft = 0; + + if (afid) { + tvp = afs_FindVolume(afid, READ_LOCK); + if (tvp) { + for (i = 0; i < MAXHOSTS; i++) { + if (tvp->serverHost[i] == tsp) { + areq->skipserver[i] = 1; + } + if (tvp->serverHost[i] && + !(tvp->serverHost[i]->addr->sa_flags & + SRVR_ISDOWN)) { + areq->skipserver[i] = 1; + } + } + afs_PutVolume(tvp, READ_LOCK); + } + } + for (i = 0; i < MAXHOSTS; i++) { + if (areq->skipserver[i] == 0) { + serversleft = 1; + break; + } + } + return serversleft; +} + /*------------------------------------------------------------------------ * EXPORTED afs_Analyze @@ -468,8 +315,24 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode, struct server *tsp; struct volume *tvp; afs_int32 shouldRetry = 0; + afs_int32 serversleft = 1; struct afs_stats_RPCErrors *aerrP; - + afs_int32 markeddown; + + + if (AFS_IS_DISCONNECTED) { + /* SXW - This may get very tired after a while. We should try and + * intercept all RPCs before they get here ... */ + /*printf("afs_Analyze: disconnected\n");*/ + afs_FinalizeReq(areq); + if (aconn) { + /* SXW - I suspect that this will _never_ happen - we shouldn't + * get a connection because we're disconnected !!!*/ + afs_PutConn(aconn, locktype); + } + return 0; + } + AFS_STATCNT(afs_Analyze); afs_Trace4(afs_iclSetp, CM_TRACE_ANALYZE, ICL_TYPE_INT32, op, ICL_TYPE_POINTER, aconn, ICL_TYPE_INT32, acode, ICL_TYPE_LONG, @@ -592,10 +455,33 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode, acode = 455; #endif /* AFS_64BIT_CLIENT */ if ((acode < 0) && (acode != VRESTARTING)) { - afs_ServerDown(sa); - ForceNewConnections(sa); /*multi homed clients lock:afs_xsrvAddr? */ + if (acode == RX_CALL_TIMEOUT) { + serversleft = afs_BlackListOnce(areq, afid, tsp); + areq->idleError++; + if (serversleft) { + shouldRetry = 1; + } else { + shouldRetry = 0; + } + /* By doing this, we avoid ever marking a server down + * in an idle timeout case. That's because the server is + * still responding and may only be letting a single vnode + * time out. We otherwise risk having the server continually + * be marked down, then up, then down again... + */ + goto out; + } + markeddown = afs_ServerDown(sa); + ForceNewConnections(sa); /**multi homed clients lock:afs_xsrvAddr? */ if (aerrP) (aerrP->err_Server)++; +#if 0 + /* retry *once* when the server is timed out in case of NAT */ + if (markeddown && acode == RX_CALL_DEAD) { + aconn->forceConnectFS = 1; + shouldRetry = 1; + } +#endif } if (acode == VBUSY || acode == VRESTARTING) { @@ -626,7 +512,6 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode, || (acode & ~0xff) == ERROR_TABLE_BASE_RXK) { /* any rxkad error is treated as token expiration */ struct unixuser *tu; - /* * I'm calling these errors protection errors, since they involve * faulty authentication. @@ -645,11 +530,22 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode, ("afs: Tokens for user of AFS id %d for cell %s have expired\n", tu->vid, aconn->srvr->server->cell->cellName); } else { - aconn->forceConnectFS = 0; /* don't check until new tokens set */ - aconn->user->states |= UTokensBad; - afs_warnuser - ("afs: Tokens for user of AFS id %d for cell %s are discarded (rxkad error=%d)\n", - tu->vid, aconn->srvr->server->cell->cellName, acode); + serversleft = afs_BlackListOnce(areq, afid, tsp); + areq->tokenError++; + + if (serversleft) { + afs_warnuser + ("afs: Tokens for user of AFS id %d for cell %s: rxkad error=%d\n", + tu->vid, aconn->srvr->server->cell->cellName, acode); + shouldRetry = 1; + } else { + areq->tokenError = 0; + aconn->forceConnectFS = 0; /* don't check until new tokens set */ + aconn->user->states |= UTokensBad; + afs_warnuser + ("afs: Tokens for user of AFS id %d for cell %s are discarded (rxkad error=%d)\n", + tu->vid, aconn->srvr->server->cell->cellName, acode); + } } afs_PutUser(tu, READ_LOCK); } else { @@ -745,7 +641,7 @@ afs_Analyze(register struct conn *aconn, afs_int32 acode, VSleep(1); /* Just a hack for desperate times. */ shouldRetry = 1; } - +out: /* now unlock the connection and return */ afs_PutConn(aconn, locktype); return (shouldRetry); diff --git a/src/afs/afs_buffer.c b/src/afs/afs_buffer.c index d523a2a83..6459595f2 100644 --- a/src/afs/afs_buffer.c +++ b/src/afs/afs_buffer.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_buffer.c,v 1.16.2.7 2007/12/13 19:18:47 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_buffer.c,v 1.22.4.1 2007/12/13 19:18:29 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c index d43508659..3c00ed128 100644 --- a/src/afs/afs_call.c +++ b/src/afs/afs_call.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.74.2.30 2008/04/18 14:06:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.86.4.21 2008/04/30 19:08:04 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -47,46 +47,8 @@ struct afsop_cell { char afs_zeros[AFS_ZEROS]; char afs_rootVolumeName[64] = ""; -struct afs_icl_set *afs_iclSetp = (struct afs_icl_set *)0; -struct afs_icl_set *afs_iclLongTermSetp = (struct afs_icl_set *)0; afs_uint32 rx_bindhost; -#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) -kmutex_t afs_global_lock; -#endif - -#if defined(AFS_SGI_ENV) && !defined(AFS_SGI64_ENV) -long afs_global_owner; -#endif - -#if defined(AFS_OSF_ENV) -simple_lock_data_t afs_global_lock; -#endif - -#if defined(AFS_DARWIN_ENV) -#ifdef AFS_DARWIN80_ENV -lck_mtx_t *afs_global_lock; -#else -struct lock__bsd__ afs_global_lock; -#endif -#endif - -#if defined(AFS_XBSD_ENV) && !defined(AFS_FBSD50_ENV) -struct lock afs_global_lock; -struct proc *afs_global_owner; -#endif -#ifdef AFS_FBSD50_ENV -struct mtx afs_global_mtx; -#endif - -#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) -thread_t afs_global_owner; -#endif /* AFS_OSF_ENV */ - -#if defined(AFS_AIX41_ENV) -simple_lock_data afs_global_lock; -#endif - #ifdef AFS_SUN510_ENV ddi_taskq_t *afs_taskq; krwlock_t afsifinfo_lock; @@ -110,9 +72,7 @@ char afs_cachebasedir[1024]; afs_int32 afs_rx_deadtime = AFS_RXDEADTIME; afs_int32 afs_rx_harddead = AFS_HARDDEADTIME; - -static int - Afscall_icl(long opcode, long p1, long p2, long p3, long p4, long *retval); +afs_int32 afs_rx_idledead = AFS_IDLEDEADTIME; static int afscall_set_rxpck_received = 0; @@ -541,7 +501,7 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) /* only root can run this code */ #if defined(AFS_OSF_ENV) || defined(AFS_SUN5_ENV) || defined(KERNEL_HAVE_UERROR) #if defined(KERNEL_HAVE_UERROR) - setuerror(EACCES); + setuerror(EACCES); #endif code = EACCES; #else @@ -707,14 +667,29 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) DInit(temp); afs_rootFid.Fid.Volume = 0; code = 0; + } else if (parm == AFSOP_BUCKETPCT) { + /* need to enable this now, will disable again before GO + if we don't have 100% */ + splitdcache = 1; + switch (parm2) { + case 1: + afs_tpct1 = parm3; + break; + case 2: + afs_tpct2 = parm3; + break; + } } else if (parm == AFSOP_ADDCELL) { /* add a cell. Parameter 2 is 8 hosts (in net order), parm 3 is the null-terminated * name. Parameter 4 is the length of the name, including the null. Parm 5 is the * home cell flag (0x1 bit) and the nosuid flag (0x2 bit) */ struct afsop_cell *tcell = afs_osi_Alloc(sizeof(struct afsop_cell)); - AFS_COPYIN((char *)parm2, (char *)tcell->hosts, sizeof(tcell->hosts), - code); + code = afs_InitDynroot(); + if (!code) { + AFS_COPYIN((char *)parm2, (char *)tcell->hosts, sizeof(tcell->hosts), + code); + } if (!code) { if (parm4 > sizeof(tcell->cellName)) code = EFAULT; @@ -732,14 +707,17 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) char *tbuffer1 = osi_AllocSmallSpace(AFS_SMALLOCSIZ); int cflags = parm4; + code = afs_InitDynroot(); + if (!code) { #if 0 - /* wait for basic init - XXX can't find any reason we need this? */ - while (afs_initState < AFSOP_START_BKG) - afs_osi_Sleep(&afs_initState); + /* wait for basic init - XXX can't find any reason we need this? */ + while (afs_initState < AFSOP_START_BKG) + afs_osi_Sleep(&afs_initState); #endif - AFS_COPYIN((char *)parm2, (char *)tcell->hosts, sizeof(tcell->hosts), - code); + AFS_COPYIN((char *)parm2, (char *)tcell->hosts, sizeof(tcell->hosts), + code); + } if (!code) { AFS_COPYINSTR((char *)parm3, tbuffer1, AFS_SMALLOCSIZ, &bufferSize, code); @@ -770,8 +748,11 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) char *aliasName = osi_AllocSmallSpace(AFS_SMALLOCSIZ); char *cellName = osi_AllocSmallSpace(AFS_SMALLOCSIZ); - AFS_COPYINSTR((char *)parm2, aliasName, AFS_SMALLOCSIZ, &bufferSize, - code); + code = afs_InitDynroot(); + if (!code) { + AFS_COPYINSTR((char *)parm2, aliasName, AFS_SMALLOCSIZ, &bufferSize, + code); + } if (!code) AFS_COPYINSTR((char *)parm3, cellName, AFS_SMALLOCSIZ, &bufferSize, code); @@ -786,7 +767,10 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) */ char *cell = osi_AllocSmallSpace(AFS_SMALLOCSIZ); - AFS_COPYINSTR((char *)parm2, cell, AFS_SMALLOCSIZ, &bufferSize, code); + code = afs_InitDynroot(); + if (!code) { + AFS_COPYINSTR((char *)parm2, cell, AFS_SMALLOCSIZ, &bufferSize, code); + } if (!code) afs_SetPrimaryCell(cell); osi_FreeSmallSpace(cell); @@ -805,19 +789,7 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) goto out; } afs_CacheInit_Done = 1; - { - struct afs_icl_log *logp; - /* initialize the ICL system */ - code = afs_icl_CreateLog("cmfx", 60 * 1024, &logp); - if (code == 0) - code = - afs_icl_CreateSetWithFlags("cm", logp, NULL, - ICL_CRSET_FLAG_DEFAULT_OFF, - &afs_iclSetp); - code = - afs_icl_CreateSet("cmlongterm", logp, NULL, - &afs_iclLongTermSetp); - } + code = afs_icl_InitLogs(); afs_setTime = cparms.setTimeFlag; code = @@ -876,7 +848,7 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) tbuffer[AFS_SMALLOCSIZ - 1] = '\0'; /* null-terminate the name */ /* We have the cache dir copied in. Call the cache init routine */ #ifdef AFS_DARWIN80_ENV - get_vfs_context(); + get_vfs_context(); #endif if (parm == AFSOP_CACHEBASEDIR) { strncpy(afs_cachebasedir, tbuffer, 1024); @@ -930,6 +902,13 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) afs_osi_Sleep(&afs_initState); afs_initState = 101; afs_setTime = parm2; + if (afs_tpct1 + afs_tpct2 != 100) { + afs_tpct1 = 0; + afs_tpct2 = 0; + splitdcache = 0; + } else { + splitdcache = 1; + } afs_osi_Wakeup(&afs_initState); #if (!defined(AFS_NONFSTRANS)) || defined(AFS_AIX_IAUTH_ENV) afs_nfsclient_init(); @@ -1173,2240 +1152,176 @@ afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) #endif } -#ifdef AFS_AIX32_ENV - -#include "sys/lockl.h" - -/* - * syscall - this is the VRMIX system call entry point. - * - * NOTE: - * THIS SHOULD BE CHANGED TO afs_syscall(), but requires - * all the user-level calls to `syscall' to change. - */ -syscall(syscall, p1, p2, p3, p4, p5, p6) -{ - register rval1 = 0, code; - register monster; - int retval = 0; -#ifndef AFS_AIX41_ENV - extern lock_t kernel_lock; - monster = lockl(&kernel_lock, LOCK_SHORT); -#endif /* !AFS_AIX41_ENV */ - - AFS_STATCNT(syscall); - setuerror(0); - switch (syscall) { - case AFSCALL_CALL: - rval1 = afs_syscall_call(p1, p2, p3, p4, p5, p6); - break; - - case AFSCALL_SETPAG: - AFS_GLOCK(); - rval1 = afs_setpag(); - AFS_GUNLOCK(); - break; - - case AFSCALL_PIOCTL: - AFS_GLOCK(); - rval1 = afs_syscall_pioctl(p1, p2, p3, p4); - AFS_GUNLOCK(); - break; - - case AFSCALL_ICREATE: - rval1 = afs_syscall_icreate(p1, p2, p3, p4, p5, p6); - break; - - case AFSCALL_IOPEN: - rval1 = afs_syscall_iopen(p1, p2, p3); - break; - - case AFSCALL_IDEC: - rval1 = afs_syscall_iincdec(p1, p2, p3, -1); - break; - - case AFSCALL_IINC: - rval1 = afs_syscall_iincdec(p1, p2, p3, 1); - break; - - case AFSCALL_ICL: - AFS_GLOCK(); - code = Afscall_icl(p1, p2, p3, p4, p5, &retval); - AFS_GUNLOCK(); - if (!code) - rval1 = retval; - if (!rval1) - rval1 = code; - break; - - default: - rval1 = EINVAL; - setuerror(EINVAL); - break; - } - - out: -#ifndef AFS_AIX41_ENV - if (monster != LOCK_NEST) - unlockl(&kernel_lock); -#endif /* !AFS_AIX41_ENV */ - return getuerror()? -1 : rval1; -} - /* - * lsetpag - interface to afs_setpag(). + * Initstate in the range 0 < x < 100 are early initialization states. + * Initstate of 100 means a AFSOP_START operation has been done. After this, + * the cache may be initialized. + * Initstate of 101 means a AFSOP_GO operation has been done. This operation + * is done after all the cache initialization has been done. + * Initstate of 200 means that the volume has been looked up once, possibly + * incorrectly. + * Initstate of 300 means that the volume has been *successfully* looked up. */ -lsetpag() +int +afs_CheckInit(void) { + register int code = 0; - AFS_STATCNT(lsetpag); - return syscall(AFSCALL_SETPAG, 0, 0, 0, 0, 0); + AFS_STATCNT(afs_CheckInit); + if (afs_initState <= 100) + code = ENXIO; /* never finished init phase */ + else if (afs_initState == 101) { /* init done, wait for afs_daemon */ + while (afs_initState < 200) + afs_osi_Sleep(&afs_initState); + } else if (afs_initState == 200) + code = ETIMEDOUT; /* didn't find root volume */ + return code; } -/* - * lpioctl - interface to pioctl() - */ -lpioctl(path, cmd, cmarg, follow) - char *path, *cmarg; +int afs_shuttingdown = 0; +void +afs_shutdown(void) { + extern short afs_brsDaemons; + extern afs_int32 afs_CheckServerDaemonStarted; + extern struct afs_osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler; + extern struct osi_file *afs_cacheInodep; - AFS_STATCNT(lpioctl); - return syscall(AFSCALL_PIOCTL, path, cmd, cmarg, follow); -} - -#else /* !AFS_AIX32_ENV */ - -#if defined(AFS_SGI_ENV) -struct afsargs { - sysarg_t syscall; - sysarg_t parm1; - sysarg_t parm2; - sysarg_t parm3; - sysarg_t parm4; - sysarg_t parm5; -}; + AFS_STATCNT(afs_shutdown); + if (afs_initState == 0) { + afs_warn("AFS not initialized - not shutting down\n"); + return; + } + if (afs_shuttingdown) + return; + afs_shuttingdown = 1; + if (afs_cold_shutdown) + afs_warn("COLD "); + else + afs_warn("WARM "); + afs_warn("shutting down of: CB... "); -int -Afs_syscall(struct afsargs *uap, rval_t * rvp) -{ - int error; - long retval; + afs_termState = AFSOP_STOP_RXCALLBACK; + rx_WakeupServerProcs(); +#ifdef AFS_AIX51_ENV + shutdown_rxkernel(); +#endif + /* shutdown_rxkernel(); */ + while (afs_termState == AFSOP_STOP_RXCALLBACK) + afs_osi_Sleep(&afs_termState); - AFS_STATCNT(afs_syscall); - switch (uap->syscall) { - case AFSCALL_ICL: - retval = 0; - AFS_GLOCK(); - error = - Afscall_icl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - uap->parm5, &retval); - AFS_GUNLOCK(); - rvp->r_val1 = retval; - break; -#ifdef AFS_SGI_XFS_IOPS_ENV - case AFSCALL_IDEC64: - error = - afs_syscall_idec64(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - uap->parm5); - break; - case AFSCALL_IINC64: - error = - afs_syscall_iinc64(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - uap->parm5); - break; - case AFSCALL_ILISTINODE64: - error = - afs_syscall_ilistinode64(uap->parm1, uap->parm2, uap->parm3, - uap->parm4, uap->parm5); - break; - case AFSCALL_ICREATENAME64: - error = - afs_syscall_icreatename64(uap->parm1, uap->parm2, uap->parm3, - uap->parm4, uap->parm5); - break; + afs_warn("afs... "); + while (afs_termState == AFSOP_STOP_AFS) { + afs_osi_CancelWait(&AFS_WaitHandler); + afs_osi_Sleep(&afs_termState); + } + if (afs_CheckServerDaemonStarted) { + while (afs_termState == AFSOP_STOP_CS) { + afs_osi_CancelWait(&AFS_CSWaitHandler); + afs_osi_Sleep(&afs_termState); + } + } + afs_warn("BkG... "); + /* Wake-up afs_brsDaemons so that we don't have to wait for a bkg job! */ + while (afs_termState == AFSOP_STOP_BKG) { + afs_osi_Wakeup(&afs_brsDaemons); + afs_osi_Sleep(&afs_termState); + } + afs_warn("CTrunc... "); + /* Cancel cache truncate daemon. */ + while (afs_termState == AFSOP_STOP_TRUNCDAEMON) { + afs_osi_Wakeup((char *)&afs_CacheTruncateDaemon); + afs_osi_Sleep(&afs_termState); + } +#ifdef AFS_AFSDB_ENV + afs_warn("AFSDB... "); + afs_StopAFSDB(); + while (afs_termState == AFSOP_STOP_AFSDB) + afs_osi_Sleep(&afs_termState); #endif -#ifdef AFS_SGI_VNODE_GLUE - case AFSCALL_INIT_KERNEL_CONFIG: - error = afs_init_kernel_config(uap->parm1); - break; +#if defined(AFS_SUN5_ENV) || defined(RXK_LISTENER_ENV) + afs_warn("RxEvent... "); + /* cancel rx event daemon */ + while (afs_termState == AFSOP_STOP_RXEVENT) + afs_osi_Sleep(&afs_termState); +#if defined(RXK_LISTENER_ENV) +#ifndef UKERNEL + afs_warn("UnmaskRxkSignals... "); + afs_osi_UnmaskRxkSignals(); #endif - default: - error = - afs_syscall_call(uap->syscall, uap->parm1, uap->parm2, uap->parm3, - uap->parm4, uap->parm5); + /* cancel rx listener */ + afs_warn("RxListener... "); + osi_StopListener(); /* This closes rx_socket. */ + while (afs_termState == AFSOP_STOP_RXK_LISTENER) { + afs_warn("Sleep... "); + afs_osi_Sleep(&afs_termState); } - return error; -} +#endif +#else + afs_termState = AFSOP_STOP_COMPLETE; +#endif + afs_warn("\n"); -#else /* AFS_SGI_ENV */ +#ifdef AFS_AIX51_ENV + shutdown_daemons(); +#endif -struct iparam { - long param1; - long param2; - long param3; - long param4; -}; +#ifdef notdef + shutdown_CB(); + shutdown_AFS(); + shutdown_rxkernel(); + shutdown_rxevent(); + shutdown_rx(); + afs_shutdown_BKG(); +#endif + shutdown_bufferpackage(); + shutdown_cache(); + shutdown_osi(); + shutdown_osinet(); + shutdown_osifile(); + shutdown_vnodeops(); + shutdown_memcache(); +#if (!defined(AFS_NONFSTRANS) || defined(AFS_AIX_IAUTH_ENV)) && !defined(AFS_OSF_ENV) + shutdown_exporter(); + shutdown_nfsclnt(); +#endif + shutdown_afstest(); + /* The following hold the cm stats */ +/* + memset(&afs_cmstats, 0, sizeof(struct afs_CMStats)); + memset(&afs_stats_cmperf, 0, sizeof(struct afs_stats_CMPerf)); + memset(&afs_stats_cmfullperf, 0, sizeof(struct afs_stats_CMFullPerf)); +*/ + afs_warn(" ALL allocated tables\n"); -struct iparam32 { - int param1; - int param2; - int param3; - int param4; -}; + /* Close file only after daemons which can write to it are stopped. */ + if (afs_cacheInodep) { /* memcache won't set this */ + osi_UFSClose(afs_cacheInodep); /* Since we always leave it open */ + afs_cacheInodep = 0; + } + afs_shuttingdown = 0; -#if defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)) -static void -iparam32_to_iparam(const struct iparam32 *src, struct iparam *dst) -{ - dst->param1 = src->param1; - dst->param2 = src->param2; - dst->param3 = src->param3; - dst->param4 = src->param4; + return; /* Just kill daemons for now */ } -#endif - -/* - * If you need to change copyin_iparam(), you may also need to change - * copyin_afs_ioctl(). - */ -static int -copyin_iparam(caddr_t cmarg, struct iparam *dst) +void +shutdown_afstest(void) { - int code; - -#if defined(AFS_HPUX_64BIT_ENV) - struct iparam32 dst32; - - if (is_32bit(u.u_procp)) { /* is_32bit() in proc_iface.h */ - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - iparam32_to_iparam(&dst32, dst); - return code; + AFS_STATCNT(shutdown_afstest); + afs_initState = afs_termState = afs_setTime = 0; + AFS_Running = afs_CB_Running = 0; + afs_CacheInit_Done = afs_Go_Done = 0; + if (afs_cold_shutdown) { + *afs_rootVolumeName = 0; } -#endif /* AFS_HPUX_64BIT_ENV */ - -#if defined(AFS_SUN57_64BIT_ENV) - struct iparam32 dst32; +} - if (get_udatamodel() == DATAMODEL_ILP32) { - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - iparam32_to_iparam(&dst32, dst); - return code; - } -#endif /* AFS_SUN57_64BIT_ENV */ - -#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV) - struct iparam32 dst32; - -#ifdef AFS_SPARC64_LINUX26_ENV - if (test_thread_flag(TIF_32BIT)) -#elif defined(AFS_SPARC64_LINUX24_ENV) - if (current->thread.flags & SPARC_FLAG_32BIT) -#elif defined(AFS_SPARC64_LINUX20_ENV) - if (current->tss.flags & SPARC_FLAG_32BIT) - -#elif defined(AFS_AMD64_LINUX26_ENV) - if (test_thread_flag(TIF_IA32)) -#elif defined(AFS_AMD64_LINUX20_ENV) - if (current->thread.flags & THREAD_IA32) - -#elif defined(AFS_PPC64_LINUX26_ENV) -#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) - if (current->thread_info->flags & _TIF_32BIT) -#else - if (task_thread_info(current)->flags & _TIF_32BIT) -#endif -#elif defined(AFS_PPC64_LINUX20_ENV) - if (current->thread.flags & PPC_FLAG_32BIT) -#elif defined(AFS_S390X_LINUX26_ENV) - if (test_thread_flag(TIF_31BIT)) -#elif defined(AFS_S390X_LINUX20_ENV) - if (current->thread.flags & S390_FLAG_31BIT) - -#else -#error iparam32 not done for this linux platform -#endif - { - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - iparam32_to_iparam(&dst32, dst); - return code; - } -#endif /* AFS_LINUX_64BIT_KERNEL */ - - AFS_COPYIN(cmarg, (caddr_t) dst, sizeof *dst, code); - return code; -} - -/* Main entry of all afs system calls */ -#ifdef AFS_SUN5_ENV -extern int afs_sinited; - -/** The 32 bit OS expects the members of this structure to be 32 bit - * quantities and the 64 bit OS expects them as 64 bit quanties. Hence - * to accomodate both, *long* is used instead of afs_int32 - */ - -#ifdef AFS_SUN57_ENV -struct afssysa { - long syscall; - long parm1; - long parm2; - long parm3; - long parm4; - long parm5; - long parm6; -}; -#else -struct afssysa { - afs_int32 syscall; - afs_int32 parm1; - afs_int32 parm2; - afs_int32 parm3; - afs_int32 parm4; - afs_int32 parm5; - afs_int32 parm6; -}; -#endif - -Afs_syscall(register struct afssysa *uap, rval_t * rvp) -{ - int *retval = &rvp->r_val1; -#else /* AFS_SUN5_ENV */ -#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) -int -afs3_syscall(p, args, retval) -#ifdef AFS_FBSD50_ENV - struct thread *p; -#else - struct proc *p; -#endif - void *args; - long *retval; -{ - register struct a { - long syscall; - long parm1; - long parm2; - long parm3; - long parm4; - long parm5; - long parm6; - } *uap = (struct a *)args; -#else /* AFS_OSF_ENV */ -#ifdef AFS_LINUX20_ENV -struct afssysargs { - long syscall; - long parm1; - long parm2; - long parm3; - long parm4; - long parm5; - long parm6; /* not actually used - should be removed */ -}; -/* Linux system calls only set up for 5 arguments. */ -asmlinkage long -afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4) -{ - struct afssysargs args, *uap = &args; - long linux_ret = 0; - long *retval = &linux_ret; - long eparm[4]; /* matches AFSCALL_ICL in fstrace.c */ -#ifdef AFS_SPARC64_LINUX24_ENV - afs_int32 eparm32[4]; -#endif - /* eparm is also used by AFSCALL_CALL in afsd.c */ -#else -#if defined(UKERNEL) -Afs_syscall() -{ - register struct a { - long syscall; - long parm1; - long parm2; - long parm3; - long parm4; - long parm5; - long parm6; - } *uap = (struct a *)u.u_ap; -#else /* UKERNEL */ -int -Afs_syscall() -{ - register struct a { - long syscall; - long parm1; - long parm2; - long parm3; - long parm4; - long parm5; - long parm6; - } *uap = (struct a *)u.u_ap; -#endif /* UKERNEL */ -#if defined(AFS_HPUX_ENV) - long *retval = &u.u_rval1; -#else - int *retval = &u.u_rval1; -#endif -#endif /* AFS_LINUX20_ENV */ -#endif /* AFS_OSF_ENV */ -#endif /* AFS_SUN5_ENV */ - register int code = 0; - - AFS_STATCNT(afs_syscall); -#ifdef AFS_SUN5_ENV - rvp->r_vals = 0; - if (!afs_sinited) { - return (ENODEV); - } -#endif -#ifdef AFS_LINUX20_ENV - lock_kernel(); - /* setup uap for use below - pull out the magic decoder ring to know - * which syscalls have folded argument lists. - */ - uap->syscall = syscall; - uap->parm1 = parm1; - uap->parm2 = parm2; - uap->parm3 = parm3; - if (syscall == AFSCALL_ICL || syscall == AFSCALL_CALL) { -#ifdef AFS_SPARC64_LINUX24_ENV -/* from arch/sparc64/kernel/sys_sparc32.c */ -#define AA(__x) \ -({ unsigned long __ret; \ - __asm__ ("srl %0, 0, %0" \ - : "=r" (__ret) \ - : "0" (__x)); \ - __ret; \ -}) - - -#ifdef AFS_SPARC64_LINUX26_ENV - if (test_thread_flag(TIF_32BIT)) -#else - if (current->thread.flags & SPARC_FLAG_32BIT) -#endif - { - AFS_COPYIN((char *)parm4, (char *)eparm32, sizeof(eparm32), code); - eparm[0] = AA(eparm32[0]); - eparm[1] = AA(eparm32[1]); - eparm[2] = AA(eparm32[2]); -#undef AA - } else -#endif - AFS_COPYIN((char *)parm4, (char *)eparm, sizeof(eparm), code); - uap->parm4 = eparm[0]; - uap->parm5 = eparm[1]; - uap->parm6 = eparm[2]; - } else { - uap->parm4 = parm4; - uap->parm5 = 0; - uap->parm6 = 0; - } -#endif -#if defined(AFS_DARWIN80_ENV) - get_vfs_context(); - osi_Assert(*retval == 0); -#endif -#if defined(AFS_HPUX_ENV) - /* - * There used to be code here (duplicated from osi_Init()) for - * initializing the semaphore used by AFS_GLOCK(). Was the - * duplication to handle the case of a dynamically loaded kernel - * module? - */ - osi_InitGlock(); -#endif - if (uap->syscall == AFSCALL_CALL) { -#ifdef AFS_SUN5_ENV - code = - afs_syscall_call(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - uap->parm5, uap->parm6, rvp, CRED()); -#else - code = - afs_syscall_call(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - uap->parm5, uap->parm6); -#endif - } else if (uap->syscall == AFSCALL_SETPAG) { -#ifdef AFS_SUN5_ENV - register proc_t *procp; - - procp = ttoproc(curthread); - AFS_GLOCK(); - code = afs_setpag(&procp->p_cred); - AFS_GUNLOCK(); -#else - AFS_GLOCK(); -#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - code = afs_setpag(p, args, retval); -#else /* AFS_OSF_ENV */ - code = afs_setpag(); -#endif - AFS_GUNLOCK(); -#endif - } else if (uap->syscall == AFSCALL_PIOCTL) { - AFS_GLOCK(); -#if defined(AFS_SUN5_ENV) - code = - afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - rvp, CRED()); -#elif defined(AFS_FBSD50_ENV) - code = - afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - p->td_ucred); -#elif defined(AFS_DARWIN80_ENV) - code = - afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - kauth_cred_get()); -#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - code = - afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - p->p_cred->pc_ucred); -#else - code = - afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, - uap->parm4); -#endif - AFS_GUNLOCK(); - } else if (uap->syscall == AFSCALL_ICREATE) { - struct iparam iparams; - - code = copyin_iparam((char *)uap->parm3, &iparams); - if (code) { -#if defined(KERNEL_HAVE_UERROR) - setuerror(code); -#endif - } else -#ifdef AFS_SUN5_ENV - code = - afs_syscall_icreate(uap->parm1, uap->parm2, iparams.param1, - iparams.param2, iparams.param3, - iparams.param4, rvp, CRED()); -#else - code = - afs_syscall_icreate(uap->parm1, uap->parm2, iparams.param1, - iparams.param2, -#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - iparams.param3, iparams.param4, retval); -#else - iparams.param3, iparams.param4); -#endif -#endif /* AFS_SUN5_ENV */ - } else if (uap->syscall == AFSCALL_IOPEN) { -#ifdef AFS_SUN5_ENV - code = - afs_syscall_iopen(uap->parm1, uap->parm2, uap->parm3, rvp, - CRED()); -#else -#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - code = afs_syscall_iopen(uap->parm1, uap->parm2, uap->parm3, retval); -#else - code = afs_syscall_iopen(uap->parm1, uap->parm2, uap->parm3); -#endif -#endif /* AFS_SUN5_ENV */ - } else if (uap->syscall == AFSCALL_IDEC) { -#ifdef AFS_SUN5_ENV - code = - afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, -1, rvp, - CRED()); -#else - code = afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, -1); -#endif /* AFS_SUN5_ENV */ - } else if (uap->syscall == AFSCALL_IINC) { -#ifdef AFS_SUN5_ENV - code = - afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, 1, rvp, - CRED()); -#else - code = afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, 1); -#endif /* AFS_SUN5_ENV */ - } else if (uap->syscall == AFSCALL_ICL) { - AFS_GLOCK(); - code = - Afscall_icl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, - uap->parm5, retval); - AFS_GUNLOCK(); -#ifdef AFS_LINUX20_ENV - if (!code) { - /* ICL commands can return values. */ - code = -linux_ret; /* Gets negated again at exit below */ - } -#else - if (code) { -#if defined(KERNEL_HAVE_UERROR) - setuerror(code); -#endif - } -#endif /* !AFS_LINUX20_ENV */ - } else { -#if defined(KERNEL_HAVE_UERROR) - setuerror(EINVAL); -#else - code = EINVAL; -#endif - } - -#if defined(AFS_DARWIN80_ENV) - if (uap->syscall != AFSCALL_CALL) - put_vfs_context(); -#endif -#ifdef AFS_LINUX20_ENV - code = -code; - unlock_kernel(); -#endif - return code; -} -#endif /* AFS_SGI_ENV */ -#endif /* !AFS_AIX32_ENV */ - -/* - * Initstate in the range 0 < x < 100 are early initialization states. - * Initstate of 100 means a AFSOP_START operation has been done. After this, - * the cache may be initialized. - * Initstate of 101 means a AFSOP_GO operation has been done. This operation - * is done after all the cache initialization has been done. - * Initstate of 200 means that the volume has been looked up once, possibly - * incorrectly. - * Initstate of 300 means that the volume has been *successfully* looked up. - */ -int -afs_CheckInit(void) -{ - register int code = 0; - - AFS_STATCNT(afs_CheckInit); - if (afs_initState <= 100) - code = ENXIO; /* never finished init phase */ - else if (afs_initState == 101) { /* init done, wait for afs_daemon */ - while (afs_initState < 200) - afs_osi_Sleep(&afs_initState); - } else if (afs_initState == 200) - code = ETIMEDOUT; /* didn't find root volume */ - return code; -} - -int afs_shuttingdown = 0; +/* In case there is a bunch of dynamically build bkg daemons to free */ void -afs_shutdown(void) -{ - extern short afs_brsDaemons; - extern afs_int32 afs_CheckServerDaemonStarted; - extern struct afs_osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler; - extern struct osi_file *afs_cacheInodep; - - AFS_STATCNT(afs_shutdown); - if (afs_initState == 0) { - afs_warn("AFS not initialized - not shutting down\n"); - return; - } - - if (afs_shuttingdown) - return; - afs_shuttingdown = 1; - if (afs_cold_shutdown) - afs_warn("COLD "); - else - afs_warn("WARM "); - afs_warn("shutting down of: CB... "); - - afs_termState = AFSOP_STOP_RXCALLBACK; - rx_WakeupServerProcs(); -#ifdef AFS_AIX51_ENV - shutdown_rxkernel(); -#endif - /* shutdown_rxkernel(); */ - while (afs_termState == AFSOP_STOP_RXCALLBACK) - afs_osi_Sleep(&afs_termState); - - afs_warn("afs... "); - while (afs_termState == AFSOP_STOP_AFS) { - afs_osi_CancelWait(&AFS_WaitHandler); - afs_osi_Sleep(&afs_termState); - } - if (afs_CheckServerDaemonStarted) { - while (afs_termState == AFSOP_STOP_CS) { - afs_osi_CancelWait(&AFS_CSWaitHandler); - afs_osi_Sleep(&afs_termState); - } - } - afs_warn("BkG... "); - /* Wake-up afs_brsDaemons so that we don't have to wait for a bkg job! */ - while (afs_termState == AFSOP_STOP_BKG) { - afs_osi_Wakeup(&afs_brsDaemons); - afs_osi_Sleep(&afs_termState); - } - afs_warn("CTrunc... "); - /* Cancel cache truncate daemon. */ - while (afs_termState == AFSOP_STOP_TRUNCDAEMON) { - afs_osi_Wakeup((char *)&afs_CacheTruncateDaemon); - afs_osi_Sleep(&afs_termState); - } -#ifdef AFS_AFSDB_ENV - afs_warn("AFSDB... "); - afs_StopAFSDB(); - while (afs_termState == AFSOP_STOP_AFSDB) - afs_osi_Sleep(&afs_termState); -#endif -#if defined(AFS_SUN5_ENV) || defined(RXK_LISTENER_ENV) - afs_warn("RxEvent... "); - /* cancel rx event daemon */ - while (afs_termState == AFSOP_STOP_RXEVENT) - afs_osi_Sleep(&afs_termState); -#if defined(RXK_LISTENER_ENV) -#ifndef UKERNEL - afs_warn("UnmaskRxkSignals... "); - afs_osi_UnmaskRxkSignals(); -#endif - /* cancel rx listener */ - afs_warn("RxListener... "); - osi_StopListener(); /* This closes rx_socket. */ - while (afs_termState == AFSOP_STOP_RXK_LISTENER) { - afs_warn("Sleep... "); - afs_osi_Sleep(&afs_termState); - } -#endif -#else - afs_termState = AFSOP_STOP_COMPLETE; -#endif - afs_warn("\n"); - -#ifdef AFS_AIX51_ENV - shutdown_daemons(); -#endif - -#ifdef notdef - shutdown_CB(); - shutdown_AFS(); - shutdown_rxkernel(); - shutdown_rxevent(); - shutdown_rx(); - afs_shutdown_BKG(); -#endif - shutdown_bufferpackage(); - shutdown_cache(); - shutdown_osi(); - shutdown_osinet(); - shutdown_osifile(); - shutdown_vnodeops(); - shutdown_memcache(); -#if (!defined(AFS_NONFSTRANS) || defined(AFS_AIX_IAUTH_ENV)) && !defined(AFS_OSF_ENV) - shutdown_exporter(); - shutdown_nfsclnt(); -#endif - shutdown_afstest(); - /* The following hold the cm stats */ -/* - memset(&afs_cmstats, 0, sizeof(struct afs_CMStats)); - memset(&afs_stats_cmperf, 0, sizeof(struct afs_stats_CMPerf)); - memset(&afs_stats_cmfullperf, 0, sizeof(struct afs_stats_CMFullPerf)); -*/ - afs_warn(" ALL allocated tables\n"); - - /* Close file only after daemons which can write to it are stopped. */ - if (afs_cacheInodep) { /* memcache won't set this */ - osi_UFSClose(afs_cacheInodep); /* Since we always leave it open */ - afs_cacheInodep = 0; - } - - afs_shuttingdown = 0; - - return; /* Just kill daemons for now */ -} - -void -shutdown_afstest(void) -{ - AFS_STATCNT(shutdown_afstest); - afs_initState = afs_termState = afs_setTime = 0; - AFS_Running = afs_CB_Running = 0; - afs_CacheInit_Done = afs_Go_Done = 0; - if (afs_cold_shutdown) { - *afs_rootVolumeName = 0; - } -} - - -/* In case there is a bunch of dynamically build bkg daemons to free */ -void -afs_shutdown_BKG(void) +afs_shutdown_BKG(void) { AFS_STATCNT(shutdown_BKG); } - - -#if defined(AFS_OSF_ENV) || defined(AFS_SGI61_ENV) -/* For SGI 6.2, this can is changed to 1 if it's a 32 bit kernel. */ -#if defined(AFS_SGI62_ENV) && defined(KERNEL) && !defined(_K64U64) -int afs_icl_sizeofLong = 1; -#else -int afs_icl_sizeofLong = 2; -#endif /* SGI62 */ -#else -#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) -int afs_icl_sizeofLong = 2; -#else -int afs_icl_sizeofLong = 1; -#endif -#endif - -int afs_icl_inited = 0; - -/* init function, called once, under afs_icl_lock */ -int -afs_icl_Init(void) -{ - afs_icl_inited = 1; - return 0; -} - -extern struct afs_icl_log *afs_icl_FindLog(); -extern struct afs_icl_set *afs_icl_FindSet(); - - -static int -Afscall_icl(long opcode, long p1, long p2, long p3, long p4, long *retval) -{ - afs_int32 *lp, elts, flags; - register afs_int32 code; - struct afs_icl_log *logp; - struct afs_icl_set *setp; -#if defined(AFS_SGI61_ENV) || defined(AFS_SUN57_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - size_t temp; -#else /* AFS_SGI61_ENV */ -#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) - afs_uint64 temp; -#else - afs_uint32 temp; -#endif -#endif /* AFS_SGI61_ENV */ - char tname[65]; - afs_int32 startCookie; - afs_int32 allocated; - struct afs_icl_log *tlp; - -#ifdef AFS_SUN5_ENV - if (!afs_suser(CRED())) { /* only root can run this code */ - return (EACCES); - } -#else - if (!afs_suser(NULL)) { /* only root can run this code */ -#if defined(KERNEL_HAVE_UERROR) - setuerror(EACCES); - return EACCES; -#else - return EPERM; -#endif - } -#endif - switch (opcode) { - case ICL_OP_COPYOUTCLR: /* copy out data then clear */ - case ICL_OP_COPYOUT: /* copy ouy data */ - /* copyout: p1=logname, p2=&buffer, p3=size(words), p4=&cookie - * return flags<<24 + nwords. - * updates cookie to updated start (not end) if we had to - * skip some records. - */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - AFS_COPYIN((char *)p4, (char *)&startCookie, sizeof(afs_int32), code); - if (code) - return code; - logp = afs_icl_FindLog(tname); - if (!logp) - return ENOENT; -#define BUFFERSIZE AFS_LRALLOCSIZ - lp = (afs_int32 *) osi_AllocLargeSpace(AFS_LRALLOCSIZ); - elts = BUFFERSIZE / sizeof(afs_int32); - if (p3 < elts) - elts = p3; - flags = (opcode == ICL_OP_COPYOUT) ? 0 : ICL_COPYOUTF_CLRAFTERREAD; - code = - afs_icl_CopyOut(logp, lp, &elts, (afs_uint32 *) & startCookie, - &flags); - if (code) { - osi_FreeLargeSpace((struct osi_buffer *)lp); - break; - } - AFS_COPYOUT((char *)lp, (char *)p2, elts * sizeof(afs_int32), code); - if (code) - goto done; - AFS_COPYOUT((char *)&startCookie, (char *)p4, sizeof(afs_int32), - code); - if (code) - goto done; -#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) - if (!(IS64U)) - *retval = ((long)((flags << 24) | (elts & 0xffffff))) << 32; - else -#endif - *retval = (flags << 24) | (elts & 0xffffff); - done: - afs_icl_LogRele(logp); - osi_FreeLargeSpace((struct osi_buffer *)lp); - break; - - case ICL_OP_ENUMLOGS: /* enumerate logs */ - /* enumerate logs: p1=index, p2=&name, p3=sizeof(name), p4=&size. - * return 0 for success, otherwise error. - */ - for (tlp = afs_icl_allLogs; tlp; tlp = tlp->nextp) { - if (p1-- == 0) - break; - } - if (!tlp) - return ENOENT; /* past the end of file */ - temp = strlen(tlp->name) + 1; - if (temp > p3) - return EINVAL; - AFS_COPYOUT(tlp->name, (char *)p2, temp, code); - if (!code) /* copy out size of log */ - AFS_COPYOUT((char *)&tlp->logSize, (char *)p4, sizeof(afs_int32), - code); - break; - - case ICL_OP_ENUMLOGSBYSET: /* enumerate logs by set name */ - /* enumerate logs: p1=setname, p2=index, p3=&name, p4=sizeof(name). - * return 0 for success, otherwise error. - */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - setp = afs_icl_FindSet(tname); - if (!setp) - return ENOENT; - if (p2 > ICL_LOGSPERSET) - return EINVAL; - if (!(tlp = setp->logs[p2])) - return EBADF; - temp = strlen(tlp->name) + 1; - if (temp > p4) - return EINVAL; - AFS_COPYOUT(tlp->name, (char *)p3, temp, code); - break; - - case ICL_OP_CLRLOG: /* clear specified log */ - /* zero out the specified log: p1=logname */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - logp = afs_icl_FindLog(tname); - if (!logp) - return ENOENT; - code = afs_icl_ZeroLog(logp); - afs_icl_LogRele(logp); - break; - - case ICL_OP_CLRSET: /* clear specified set */ - /* zero out the specified set: p1=setname */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - setp = afs_icl_FindSet(tname); - if (!setp) - return ENOENT; - code = afs_icl_ZeroSet(setp); - afs_icl_SetRele(setp); - break; - - case ICL_OP_CLRALL: /* clear all logs */ - /* zero out all logs -- no args */ - code = 0; - ObtainWriteLock(&afs_icl_lock, 178); - for (tlp = afs_icl_allLogs; tlp; tlp = tlp->nextp) { - tlp->refCount++; /* hold this guy */ - ReleaseWriteLock(&afs_icl_lock); - /* don't clear persistent logs */ - if ((tlp->states & ICL_LOGF_PERSISTENT) == 0) - code = afs_icl_ZeroLog(tlp); - ObtainWriteLock(&afs_icl_lock, 179); - if (--tlp->refCount == 0) - afs_icl_ZapLog(tlp); - if (code) - break; - } - ReleaseWriteLock(&afs_icl_lock); - break; - - case ICL_OP_ENUMSETS: /* enumerate all sets */ - /* enumerate sets: p1=index, p2=&name, p3=sizeof(name), p4=&states. - * return 0 for success, otherwise error. - */ - for (setp = afs_icl_allSets; setp; setp = setp->nextp) { - if (p1-- == 0) - break; - } - if (!setp) - return ENOENT; /* past the end of file */ - temp = strlen(setp->name) + 1; - if (temp > p3) - return EINVAL; - AFS_COPYOUT(setp->name, (char *)p2, temp, code); - if (!code) /* copy out size of log */ - AFS_COPYOUT((char *)&setp->states, (char *)p4, sizeof(afs_int32), - code); - break; - - case ICL_OP_SETSTAT: /* set status on a set */ - /* activate the specified set: p1=setname, p2=op */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - setp = afs_icl_FindSet(tname); - if (!setp) - return ENOENT; - code = afs_icl_SetSetStat(setp, p2); - afs_icl_SetRele(setp); - break; - - case ICL_OP_SETSTATALL: /* set status on all sets */ - /* activate the specified set: p1=op */ - code = 0; - ObtainWriteLock(&afs_icl_lock, 180); - for (setp = afs_icl_allSets; setp; setp = setp->nextp) { - setp->refCount++; /* hold this guy */ - ReleaseWriteLock(&afs_icl_lock); - /* don't set states on persistent sets */ - if ((setp->states & ICL_SETF_PERSISTENT) == 0) - code = afs_icl_SetSetStat(setp, p1); - ObtainWriteLock(&afs_icl_lock, 181); - if (--setp->refCount == 0) - afs_icl_ZapSet(setp); - if (code) - break; - } - ReleaseWriteLock(&afs_icl_lock); - break; - - case ICL_OP_SETLOGSIZE: /* set size of log */ - /* set the size of the specified log: p1=logname, p2=size (in words) */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - logp = afs_icl_FindLog(tname); - if (!logp) - return ENOENT; - code = afs_icl_LogSetSize(logp, p2); - afs_icl_LogRele(logp); - break; - - case ICL_OP_GETLOGINFO: /* get size of log */ - /* zero out the specified log: p1=logname, p2=&logSize, p3=&allocated */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - logp = afs_icl_FindLog(tname); - if (!logp) - return ENOENT; - allocated = !!logp->datap; - AFS_COPYOUT((char *)&logp->logSize, (char *)p2, sizeof(afs_int32), - code); - if (!code) - AFS_COPYOUT((char *)&allocated, (char *)p3, sizeof(afs_int32), - code); - afs_icl_LogRele(logp); - break; - - case ICL_OP_GETSETINFO: /* get state of set */ - /* zero out the specified set: p1=setname, p2=&state */ - AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); - if (code) - return code; - setp = afs_icl_FindSet(tname); - if (!setp) - return ENOENT; - AFS_COPYOUT((char *)&setp->states, (char *)p2, sizeof(afs_int32), - code); - afs_icl_SetRele(setp); - break; - - default: - code = EINVAL; - } - - return code; -} - - -afs_lock_t afs_icl_lock; - -/* exported routine: a 4 parameter event */ -int -afs_icl_Event4(register struct afs_icl_set *setp, afs_int32 eventID, - afs_int32 lAndT, long p1, long p2, long p3, long p4) -{ - afs_int32 mask; - register int i; - register afs_int32 tmask; - int ix; - - /* If things aren't init'ed yet (or the set is inactive), don't panic */ - if (!ICL_SETACTIVE(setp)) - return 0; - - AFS_ASSERT_GLOCK(); - mask = lAndT >> 24 & 0xff; /* mask of which logs to log to */ - ix = ICL_EVENTBYTE(eventID); - ObtainReadLock(&setp->lock); - if (setp->eventFlags[ix] & ICL_EVENTMASK(eventID)) { - for (i = 0, tmask = 1; i < ICL_LOGSPERSET; i++, tmask <<= 1) { - if (mask & tmask) { - afs_icl_AppendRecord(setp->logs[i], eventID, lAndT & 0xffffff, - p1, p2, p3, p4); - } - mask &= ~tmask; - if (mask == 0) - break; /* break early */ - } - } - ReleaseReadLock(&setp->lock); - return 0; -} - -/* Next 4 routines should be implemented via var-args or something. - * Whole purpose is to avoid compiler warnings about parameter # mismatches. - * Otherwise, could call afs_icl_Event4 directly. - */ -int -afs_icl_Event3(register struct afs_icl_set *setp, afs_int32 eventID, - afs_int32 lAndT, long p1, long p2, long p3) -{ - return afs_icl_Event4(setp, eventID, lAndT, p1, p2, p3, (long)0); -} - -int -afs_icl_Event2(register struct afs_icl_set *setp, afs_int32 eventID, - afs_int32 lAndT, long p1, long p2) -{ - return afs_icl_Event4(setp, eventID, lAndT, p1, p2, (long)0, (long)0); -} - -int -afs_icl_Event1(register struct afs_icl_set *setp, afs_int32 eventID, - afs_int32 lAndT, long p1) -{ - return afs_icl_Event4(setp, eventID, lAndT, p1, (long)0, (long)0, - (long)0); -} - -int -afs_icl_Event0(register struct afs_icl_set *setp, afs_int32 eventID, - afs_int32 lAndT) -{ - return afs_icl_Event4(setp, eventID, lAndT, (long)0, (long)0, (long)0, - (long)0); -} - -struct afs_icl_log *afs_icl_allLogs = 0; - -/* function to purge records from the start of the log, until there - * is at least minSpace long's worth of space available without - * making the head and the tail point to the same word. - * - * Log must be write-locked. - */ -static void -afs_icl_GetLogSpace(register struct afs_icl_log *logp, afs_int32 minSpace) -{ - register unsigned int tsize; - - while (logp->logSize - logp->logElements <= minSpace) { - /* eat a record */ - tsize = ((logp->datap[logp->firstUsed]) >> 24) & 0xff; - logp->logElements -= tsize; - logp->firstUsed += tsize; - if (logp->firstUsed >= logp->logSize) - logp->firstUsed -= logp->logSize; - logp->baseCookie += tsize; - } -} - -/* append string astr to buffer, including terminating null char. - * - * log must be write-locked. - */ -#define ICL_CHARSPERLONG 4 -static void -afs_icl_AppendString(struct afs_icl_log *logp, char *astr) -{ - char *op; /* ptr to char to write */ - int tc; - register int bib; /* bytes in buffer */ - - bib = 0; - op = (char *)&(logp->datap[logp->firstFree]); - while (1) { - tc = *astr++; - *op++ = tc; - if (++bib >= ICL_CHARSPERLONG) { - /* new word */ - bib = 0; - if (++(logp->firstFree) >= logp->logSize) { - logp->firstFree = 0; - op = (char *)&(logp->datap[0]); - } - logp->logElements++; - } - if (tc == 0) - break; - } - if (bib > 0) { - /* if we've used this word at all, allocate it */ - if (++(logp->firstFree) >= logp->logSize) { - logp->firstFree = 0; - } - logp->logElements++; - } -} - -/* add a long to the log, ignoring overflow (checked already) */ -#define ICL_APPENDINT32(lp, x) \ - MACRO_BEGIN \ - (lp)->datap[(lp)->firstFree] = (x); \ - if (++((lp)->firstFree) >= (lp)->logSize) { \ - (lp)->firstFree = 0; \ - } \ - (lp)->logElements++; \ - MACRO_END - -#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) -#define ICL_APPENDLONG(lp, x) \ - MACRO_BEGIN \ - ICL_APPENDINT32((lp), ((x) >> 32) & 0xffffffffL); \ - ICL_APPENDINT32((lp), (x) & 0xffffffffL); \ - MACRO_END - -#else /* AFS_OSF_ENV */ -#define ICL_APPENDLONG(lp, x) ICL_APPENDINT32((lp), (x)) -#endif /* AFS_OSF_ENV */ - -/* routine to tell whether we're dealing with the address or the - * object itself - */ -int -afs_icl_UseAddr(int type) -{ - if (type == ICL_TYPE_HYPER || type == ICL_TYPE_STRING - || type == ICL_TYPE_FID || type == ICL_TYPE_INT64) - return 1; - else - return 0; -} - -/* Function to append a record to the log. Written for speed - * since we know that we're going to have to make this work fast - * pretty soon, anyway. The log must be unlocked. - */ - -void -afs_icl_AppendRecord(register struct afs_icl_log *logp, afs_int32 op, - afs_int32 types, long p1, long p2, long p3, long p4) -{ - int rsize; /* record size in longs */ - register int tsize; /* temp size */ - osi_timeval_t tv; - int t1, t2, t3, t4; - - t4 = types & 0x3f; /* decode types */ - types >>= 6; - t3 = types & 0x3f; - types >>= 6; - t2 = types & 0x3f; - types >>= 6; - t1 = types & 0x3f; - - osi_GetTime(&tv); /* It panics for solaris if inside */ - ObtainWriteLock(&logp->lock, 182); - if (!logp->datap) { - ReleaseWriteLock(&logp->lock); - return; - } - - /* get timestamp as # of microseconds since some time that doesn't - * change that often. This algorithm ticks over every 20 minutes - * or so (1000 seconds). Write a timestamp record if it has. - */ - if (tv.tv_sec - logp->lastTS > 1024) { - /* the timer has wrapped -- write a timestamp record */ - if (logp->logSize - logp->logElements <= 5) - afs_icl_GetLogSpace(logp, 5); - - ICL_APPENDINT32(logp, - (afs_int32) (5 << 24) + (ICL_TYPE_UNIXDATE << 18)); - ICL_APPENDINT32(logp, (afs_int32) ICL_INFO_TIMESTAMP); - ICL_APPENDINT32(logp, (afs_int32) 0); /* use thread ID zero for clocks */ - ICL_APPENDINT32(logp, - (afs_int32) (tv.tv_sec & 0x3ff) * 1000000 + - tv.tv_usec); - ICL_APPENDINT32(logp, (afs_int32) tv.tv_sec); - - logp->lastTS = tv.tv_sec; - } - - rsize = 4; /* base case */ - if (t1) { - /* compute size of parameter p1. Only tricky case is string. - * In that case, we have to call strlen to get the string length. - */ - ICL_SIZEHACK(t1, p1); - } - if (t2) { - /* compute size of parameter p2. Only tricky case is string. - * In that case, we have to call strlen to get the string length. - */ - ICL_SIZEHACK(t2, p2); - } - if (t3) { - /* compute size of parameter p3. Only tricky case is string. - * In that case, we have to call strlen to get the string length. - */ - ICL_SIZEHACK(t3, p3); - } - if (t4) { - /* compute size of parameter p4. Only tricky case is string. - * In that case, we have to call strlen to get the string length. - */ - ICL_SIZEHACK(t4, p4); - } - - /* At this point, we've computed all of the parameter sizes, and - * have in rsize the size of the entire record we want to append. - * Next, we check that we actually have room in the log to do this - * work, and then we do the append. - */ - if (rsize > 255) { - ReleaseWriteLock(&logp->lock); - return; /* log record too big to express */ - } - - if (logp->logSize - logp->logElements <= rsize) - afs_icl_GetLogSpace(logp, rsize); - - ICL_APPENDINT32(logp, - (afs_int32) (rsize << 24) + (t1 << 18) + (t2 << 12) + - (t3 << 6) + t4); - ICL_APPENDINT32(logp, (afs_int32) op); - ICL_APPENDINT32(logp, (afs_int32) osi_ThreadUnique()); - ICL_APPENDINT32(logp, - (afs_int32) (tv.tv_sec & 0x3ff) * 1000000 + tv.tv_usec); - - if (t1) { - /* marshall parameter 1 now */ - if (t1 == ICL_TYPE_STRING) { - afs_icl_AppendString(logp, (char *)p1); - } else if (t1 == ICL_TYPE_HYPER) { - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p1)->high); - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p1)->low); - } else if (t1 == ICL_TYPE_INT64) { -#ifndef WORDS_BIGENDIAN -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) p1); - ICL_APPENDINT32(logp, (afs_int32) 0); -#endif /* AFS_64BIT_CLIENT */ -#else /* AFSLITTLE_ENDIAN */ -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) 0); - ICL_APPENDINT32(logp, (afs_int32) p1); -#endif /* AFS_64BIT_CLIENT */ -#endif /* AFSLITTLE_ENDIAN */ - } else if (t1 == ICL_TYPE_FID) { - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[2]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[3]); - } -#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) - else if (t1 == ICL_TYPE_INT32) - ICL_APPENDINT32(logp, (afs_int32) p1); -#endif /* AFS_OSF_ENV */ - else - ICL_APPENDLONG(logp, p1); - } - if (t2) { - /* marshall parameter 2 now */ - if (t2 == ICL_TYPE_STRING) - afs_icl_AppendString(logp, (char *)p2); - else if (t2 == ICL_TYPE_HYPER) { - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p2)->high); - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p2)->low); - } else if (t2 == ICL_TYPE_INT64) { -#ifndef WORDS_BIGENDIAN -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) p2); - ICL_APPENDINT32(logp, (afs_int32) 0); -#endif /* AFS_64BIT_CLIENT */ -#else /* AFSLITTLE_ENDIAN */ -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) 0); - ICL_APPENDINT32(logp, (afs_int32) p2); -#endif /* AFS_64BIT_CLIENT */ -#endif /* AFSLITTLE_ENDIAN */ - } else if (t2 == ICL_TYPE_FID) { - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[2]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[3]); - } -#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) - else if (t2 == ICL_TYPE_INT32) - ICL_APPENDINT32(logp, (afs_int32) p2); -#endif /* AFS_OSF_ENV */ - else - ICL_APPENDLONG(logp, p2); - } - if (t3) { - /* marshall parameter 3 now */ - if (t3 == ICL_TYPE_STRING) - afs_icl_AppendString(logp, (char *)p3); - else if (t3 == ICL_TYPE_HYPER) { - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p3)->high); - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p3)->low); - } else if (t3 == ICL_TYPE_INT64) { -#ifndef WORDS_BIGENDIAN -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) p3); - ICL_APPENDINT32(logp, (afs_int32) 0); -#endif /* AFS_64BIT_CLIENT */ -#else /* AFSLITTLE_ENDIAN */ -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) 0); - ICL_APPENDINT32(logp, (afs_int32) p3); -#endif /* AFS_64BIT_CLIENT */ -#endif /* AFSLITTLE_ENDIAN */ - } else if (t3 == ICL_TYPE_FID) { - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[2]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[3]); - } -#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) - else if (t3 == ICL_TYPE_INT32) - ICL_APPENDINT32(logp, (afs_int32) p3); -#endif /* AFS_OSF_ENV */ - else - ICL_APPENDLONG(logp, p3); - } - if (t4) { - /* marshall parameter 4 now */ - if (t4 == ICL_TYPE_STRING) - afs_icl_AppendString(logp, (char *)p4); - else if (t4 == ICL_TYPE_HYPER) { - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p4)->high); - ICL_APPENDINT32(logp, - (afs_int32) ((struct afs_hyper_t *)p4)->low); - } else if (t4 == ICL_TYPE_INT64) { -#ifndef WORDS_BIGENDIAN -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) p4); - ICL_APPENDINT32(logp, (afs_int32) 0); -#endif /* AFS_64BIT_CLIENT */ -#else /* AFSLITTLE_ENDIAN */ -#ifdef AFS_64BIT_CLIENT - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]); -#else /* AFS_64BIT_CLIENT */ - ICL_APPENDINT32(logp, (afs_int32) 0); - ICL_APPENDINT32(logp, (afs_int32) p4); -#endif /* AFS_64BIT_CLIENT */ -#endif /* AFSLITTLE_ENDIAN */ - } else if (t4 == ICL_TYPE_FID) { - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[2]); - ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[3]); - } -#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) - else if (t4 == ICL_TYPE_INT32) - ICL_APPENDINT32(logp, (afs_int32) p4); -#endif /* AFS_OSF_ENV */ - else - ICL_APPENDLONG(logp, p4); - } - ReleaseWriteLock(&logp->lock); -} - -/* create a log with size logSize; return it in *outLogpp and tag - * it with name "name." - */ -int -afs_icl_CreateLog(char *name, afs_int32 logSize, - struct afs_icl_log **outLogpp) -{ - return afs_icl_CreateLogWithFlags(name, logSize, /*flags */ 0, outLogpp); -} - -/* create a log with size logSize; return it in *outLogpp and tag - * it with name "name." 'flags' can be set to make the log unclearable. - */ -int -afs_icl_CreateLogWithFlags(char *name, afs_int32 logSize, afs_uint32 flags, - struct afs_icl_log **outLogpp) -{ - register struct afs_icl_log *logp; - - /* add into global list under lock */ - ObtainWriteLock(&afs_icl_lock, 183); - if (!afs_icl_inited) - afs_icl_Init(); - - for (logp = afs_icl_allLogs; logp; logp = logp->nextp) { - if (strcmp(logp->name, name) == 0) { - /* found it already created, just return it */ - logp->refCount++; - *outLogpp = logp; - if (flags & ICL_CRLOG_FLAG_PERSISTENT) { - ObtainWriteLock(&logp->lock, 184); - logp->states |= ICL_LOGF_PERSISTENT; - ReleaseWriteLock(&logp->lock); - } - ReleaseWriteLock(&afs_icl_lock); - return 0; - } - } - - logp = (struct afs_icl_log *) - osi_AllocSmallSpace(sizeof(struct afs_icl_log)); - memset((caddr_t) logp, 0, sizeof(*logp)); - - logp->refCount = 1; - logp->name = osi_AllocSmallSpace(strlen(name) + 1); - strcpy(logp->name, name); - LOCK_INIT(&logp->lock, "logp lock"); - logp->logSize = logSize; - logp->datap = NULL; /* don't allocate it until we need it */ - - if (flags & ICL_CRLOG_FLAG_PERSISTENT) - logp->states |= ICL_LOGF_PERSISTENT; - - logp->nextp = afs_icl_allLogs; - afs_icl_allLogs = logp; - ReleaseWriteLock(&afs_icl_lock); - - *outLogpp = logp; - return 0; -} - -/* called with a log, a pointer to a buffer, the size of the buffer - * (in *bufSizep), the starting cookie (in *cookiep, use 0 at the start) - * and returns data in the provided buffer, and returns output flags - * in *flagsp. The flag ICL_COPYOUTF_MISSEDSOME is set if we can't - * find the record with cookie value cookie. - */ -int -afs_icl_CopyOut(register struct afs_icl_log *logp, afs_int32 * bufferp, - afs_int32 * bufSizep, afs_uint32 * cookiep, - afs_int32 * flagsp) -{ - afs_int32 nwords; /* number of words to copy out */ - afs_uint32 startCookie; /* first cookie to use */ - afs_int32 outWords; /* words we've copied out */ - afs_int32 inWords; /* max words to copy out */ - afs_int32 code; /* return code */ - afs_int32 ix; /* index we're copying from */ - afs_int32 outFlags; /* return flags */ - afs_int32 inFlags; /* flags passed in */ - afs_int32 end; - - inWords = *bufSizep; /* max to copy out */ - outWords = 0; /* amount copied out */ - startCookie = *cookiep; - outFlags = 0; - inFlags = *flagsp; - code = 0; - - ObtainWriteLock(&logp->lock, 185); - if (!logp->datap) { - ReleaseWriteLock(&logp->lock); - goto done; - } - - /* first, compute the index of the start cookie we've been passed */ - while (1) { - /* (re-)compute where we should start */ - if (startCookie < logp->baseCookie) { - if (startCookie) /* missed some output */ - outFlags |= ICL_COPYOUTF_MISSEDSOME; - /* skip to the first available record */ - startCookie = logp->baseCookie; - *cookiep = startCookie; - } - - /* compute where we find the first element to copy out */ - ix = logp->firstUsed + startCookie - logp->baseCookie; - if (ix >= logp->logSize) - ix -= logp->logSize; - - /* if have some data now, break out and process it */ - if (startCookie - logp->baseCookie < logp->logElements) - break; - - /* At end of log, so clear it if we need to */ - if (inFlags & ICL_COPYOUTF_CLRAFTERREAD) { - logp->firstUsed = logp->firstFree = 0; - logp->logElements = 0; - } - /* otherwise, either wait for the data to arrive, or return */ - if (!(inFlags & ICL_COPYOUTF_WAITIO)) { - ReleaseWriteLock(&logp->lock); - code = 0; - goto done; - } - logp->states |= ICL_LOGF_WAITING; - ReleaseWriteLock(&logp->lock); - afs_osi_Sleep(&logp->lock); - ObtainWriteLock(&logp->lock, 186); - } - /* copy out data from ix to logSize or firstFree, depending - * upon whether firstUsed <= firstFree (no wrap) or otherwise. - * be careful not to copy out more than nwords. - */ - if (ix >= logp->firstUsed) { - if (logp->firstUsed <= logp->firstFree) - /* no wrapping */ - end = logp->firstFree; /* first element not to copy */ - else - end = logp->logSize; - nwords = inWords; /* don't copy more than this */ - if (end - ix < nwords) - nwords = end - ix; - if (nwords > 0) { - memcpy((char *)bufferp, (char *)&logp->datap[ix], - sizeof(afs_int32) * nwords); - outWords += nwords; - inWords -= nwords; - bufferp += nwords; - } - /* if we're going to copy more out below, we'll start here */ - ix = 0; - } - /* now, if active part of the log has wrapped, there's more stuff - * starting at the head of the log. Copy out more from there. - */ - if (logp->firstUsed > logp->firstFree && ix < logp->firstFree - && inWords > 0) { - /* (more to) copy out from the wrapped section at the - * start of the log. May get here even if didn't copy any - * above, if the cookie points directly into the wrapped section. - */ - nwords = inWords; - if (logp->firstFree - ix < nwords) - nwords = logp->firstFree - ix; - memcpy((char *)bufferp, (char *)&logp->datap[ix], - sizeof(afs_int32) * nwords); - outWords += nwords; - inWords -= nwords; - bufferp += nwords; - } - - ReleaseWriteLock(&logp->lock); - - done: - if (code == 0) { - *bufSizep = outWords; - *flagsp = outFlags; - } - return code; -} - -/* return basic parameter information about a log */ -int -afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, - afs_int32 * curSizep) -{ - ObtainReadLock(&logp->lock); - *maxSizep = logp->logSize; - *curSizep = logp->logElements; - ReleaseReadLock(&logp->lock); - return 0; -} - - -/* hold and release logs */ -int -afs_icl_LogHold(register struct afs_icl_log *logp) -{ - ObtainWriteLock(&afs_icl_lock, 187); - logp->refCount++; - ReleaseWriteLock(&afs_icl_lock); - return 0; -} - -/* hold and release logs, called with lock already held */ -int -afs_icl_LogHoldNL(register struct afs_icl_log *logp) -{ - logp->refCount++; - return 0; -} - -/* keep track of how many sets believe the log itself is allocated */ -int -afs_icl_LogUse(register struct afs_icl_log *logp) -{ - ObtainWriteLock(&logp->lock, 188); - if (logp->setCount == 0) { - /* this is the first set actually using the log -- allocate it */ - if (logp->logSize == 0) { - /* we weren't passed in a hint and it wasn't set */ - logp->logSize = ICL_DEFAULT_LOGSIZE; - } - logp->datap = - (afs_int32 *) afs_osi_Alloc(sizeof(afs_int32) * logp->logSize); -#ifdef KERNEL_HAVE_PIN - pin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); -#endif - } - logp->setCount++; - ReleaseWriteLock(&logp->lock); - return 0; -} - -/* decrement the number of real users of the log, free if possible */ -int -afs_icl_LogFreeUse(register struct afs_icl_log *logp) -{ - ObtainWriteLock(&logp->lock, 189); - if (--logp->setCount == 0) { - /* no more users -- free it (but keep log structure around) */ -#ifdef KERNEL_HAVE_PIN - unpin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); -#endif - afs_osi_Free(logp->datap, sizeof(afs_int32) * logp->logSize); - logp->firstUsed = logp->firstFree = 0; - logp->logElements = 0; - logp->datap = NULL; - } - ReleaseWriteLock(&logp->lock); - return 0; -} - -/* set the size of the log to 'logSize' */ -int -afs_icl_LogSetSize(register struct afs_icl_log *logp, afs_int32 logSize) -{ - ObtainWriteLock(&logp->lock, 190); - if (!logp->datap) { - /* nothing to worry about since it's not allocated */ - logp->logSize = logSize; - } else { - /* reset log */ - logp->firstUsed = logp->firstFree = 0; - logp->logElements = 0; - - /* free and allocate a new one */ -#ifdef KERNEL_HAVE_PIN - unpin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); -#endif - afs_osi_Free(logp->datap, sizeof(afs_int32) * logp->logSize); - logp->datap = - (afs_int32 *) afs_osi_Alloc(sizeof(afs_int32) * logSize); -#ifdef KERNEL_HAVE_PIN - pin((char *)logp->datap, sizeof(afs_int32) * logSize); -#endif - logp->logSize = logSize; - } - ReleaseWriteLock(&logp->lock); - - return 0; -} - -/* free a log. Called with afs_icl_lock locked. */ -int -afs_icl_ZapLog(register struct afs_icl_log *logp) -{ - register struct afs_icl_log **lpp, *tp; - - for (lpp = &afs_icl_allLogs, tp = *lpp; tp; lpp = &tp->nextp, tp = *lpp) { - if (tp == logp) { - /* found the dude we want to remove */ - *lpp = logp->nextp; - osi_FreeSmallSpace(logp->name); -#ifdef KERNEL_HAVE_PIN - unpin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); -#endif - afs_osi_Free(logp->datap, sizeof(afs_int32) * logp->logSize); - osi_FreeSmallSpace(logp); - break; /* won't find it twice */ - } - } - return 0; -} - -/* do the release, watching for deleted entries */ -int -afs_icl_LogRele(register struct afs_icl_log *logp) -{ - ObtainWriteLock(&afs_icl_lock, 191); - if (--logp->refCount == 0 && (logp->states & ICL_LOGF_DELETED)) { - afs_icl_ZapLog(logp); /* destroys logp's lock! */ - } - ReleaseWriteLock(&afs_icl_lock); - return 0; -} - -/* do the release, watching for deleted entries, log already held */ -int -afs_icl_LogReleNL(register struct afs_icl_log *logp) -{ - if (--logp->refCount == 0 && (logp->states & ICL_LOGF_DELETED)) { - afs_icl_ZapLog(logp); /* destroys logp's lock! */ - } - return 0; -} - -/* zero out the log */ -int -afs_icl_ZeroLog(register struct afs_icl_log *logp) -{ - ObtainWriteLock(&logp->lock, 192); - logp->firstUsed = logp->firstFree = 0; - logp->logElements = 0; - logp->baseCookie = 0; - ReleaseWriteLock(&logp->lock); - return 0; -} - -/* free a log entry, and drop its reference count */ -int -afs_icl_LogFree(register struct afs_icl_log *logp) -{ - ObtainWriteLock(&logp->lock, 193); - logp->states |= ICL_LOGF_DELETED; - ReleaseWriteLock(&logp->lock); - afs_icl_LogRele(logp); - return 0; -} - -/* find a log by name, returning it held */ -struct afs_icl_log * -afs_icl_FindLog(char *name) -{ - register struct afs_icl_log *tp; - ObtainWriteLock(&afs_icl_lock, 194); - for (tp = afs_icl_allLogs; tp; tp = tp->nextp) { - if (strcmp(tp->name, name) == 0) { - /* this is the dude we want */ - tp->refCount++; - break; - } - } - ReleaseWriteLock(&afs_icl_lock); - return tp; -} - -int -afs_icl_EnumerateLogs(int (*aproc) - (char *name, char *arock, struct afs_icl_log * tp), - char *arock) -{ - register struct afs_icl_log *tp; - register afs_int32 code; - - code = 0; - ObtainWriteLock(&afs_icl_lock, 195); - for (tp = afs_icl_allLogs; tp; tp = tp->nextp) { - tp->refCount++; /* hold this guy */ - ReleaseWriteLock(&afs_icl_lock); - ObtainReadLock(&tp->lock); - code = (*aproc) (tp->name, arock, tp); - ReleaseReadLock(&tp->lock); - ObtainWriteLock(&afs_icl_lock, 196); - if (--tp->refCount == 0) - afs_icl_ZapLog(tp); - if (code) - break; - } - ReleaseWriteLock(&afs_icl_lock); - return code; -} - -struct afs_icl_set *afs_icl_allSets = 0; - -int -afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, - struct afs_icl_log *fatalLogp, - struct afs_icl_set **outSetpp) -{ - return afs_icl_CreateSetWithFlags(name, baseLogp, fatalLogp, - /*flags */ 0, outSetpp); -} - -/* create a set, given pointers to base and fatal logs, if any. - * Logs are unlocked, but referenced, and *outSetpp is returned - * referenced. Function bumps reference count on logs, since it - * addds references from the new afs_icl_set. When the set is destroyed, - * those references will be released. - */ -int -afs_icl_CreateSetWithFlags(char *name, struct afs_icl_log *baseLogp, - struct afs_icl_log *fatalLogp, afs_uint32 flags, - struct afs_icl_set **outSetpp) -{ - register struct afs_icl_set *setp; - register int i; - afs_int32 states = ICL_DEFAULT_SET_STATES; - - ObtainWriteLock(&afs_icl_lock, 197); - if (!afs_icl_inited) - afs_icl_Init(); - - for (setp = afs_icl_allSets; setp; setp = setp->nextp) { - if (strcmp(setp->name, name) == 0) { - setp->refCount++; - *outSetpp = setp; - if (flags & ICL_CRSET_FLAG_PERSISTENT) { - ObtainWriteLock(&setp->lock, 198); - setp->states |= ICL_SETF_PERSISTENT; - ReleaseWriteLock(&setp->lock); - } - ReleaseWriteLock(&afs_icl_lock); - return 0; - } - } - - /* determine initial state */ - if (flags & ICL_CRSET_FLAG_DEFAULT_ON) - states = ICL_SETF_ACTIVE; - else if (flags & ICL_CRSET_FLAG_DEFAULT_OFF) - states = ICL_SETF_FREED; - if (flags & ICL_CRSET_FLAG_PERSISTENT) - states |= ICL_SETF_PERSISTENT; - - setp = (struct afs_icl_set *)afs_osi_Alloc(sizeof(struct afs_icl_set)); - memset((caddr_t) setp, 0, sizeof(*setp)); - setp->refCount = 1; - if (states & ICL_SETF_FREED) - states &= ~ICL_SETF_ACTIVE; /* if freed, can't be active */ - setp->states = states; - - LOCK_INIT(&setp->lock, "setp lock"); - /* next lock is obtained in wrong order, hierarchy-wise, but - * it doesn't matter, since no one can find this lock yet, since - * the afs_icl_lock is still held, and thus the obtain can't block. - */ - ObtainWriteLock(&setp->lock, 199); - setp->name = osi_AllocSmallSpace(strlen(name) + 1); - strcpy(setp->name, name); - setp->nevents = ICL_DEFAULTEVENTS; - setp->eventFlags = afs_osi_Alloc(ICL_DEFAULTEVENTS); -#ifdef KERNEL_HAVE_PIN - pin((char *)setp->eventFlags, ICL_DEFAULTEVENTS); -#endif - for (i = 0; i < ICL_DEFAULTEVENTS; i++) - setp->eventFlags[i] = 0xff; /* default to enabled */ - - /* update this global info under the afs_icl_lock */ - setp->nextp = afs_icl_allSets; - afs_icl_allSets = setp; - ReleaseWriteLock(&afs_icl_lock); - - /* set's basic lock is still held, so we can finish init */ - if (baseLogp) { - setp->logs[0] = baseLogp; - afs_icl_LogHold(baseLogp); - if (!(setp->states & ICL_SETF_FREED)) - afs_icl_LogUse(baseLogp); /* log is actually being used */ - } - if (fatalLogp) { - setp->logs[1] = fatalLogp; - afs_icl_LogHold(fatalLogp); - if (!(setp->states & ICL_SETF_FREED)) - afs_icl_LogUse(fatalLogp); /* log is actually being used */ - } - ReleaseWriteLock(&setp->lock); - - *outSetpp = setp; - return 0; -} - -/* function to change event enabling information for a particular set */ -int -afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, int setValue) -{ - char *tp; - - ObtainWriteLock(&setp->lock, 200); - if (!ICL_EVENTOK(setp, eventID)) { - ReleaseWriteLock(&setp->lock); - return -1; - } - tp = &setp->eventFlags[ICL_EVENTBYTE(eventID)]; - if (setValue) - *tp |= ICL_EVENTMASK(eventID); - else - *tp &= ~(ICL_EVENTMASK(eventID)); - ReleaseWriteLock(&setp->lock); - return 0; -} - -/* return indication of whether a particular event ID is enabled - * for tracing. If *getValuep is set to 0, the event is disabled, - * otherwise it is enabled. All events start out enabled by default. - */ -int -afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, int *getValuep) -{ - ObtainReadLock(&setp->lock); - if (!ICL_EVENTOK(setp, eventID)) { - ReleaseWriteLock(&setp->lock); - return -1; - } - if (setp->eventFlags[ICL_EVENTBYTE(eventID)] & ICL_EVENTMASK(eventID)) - *getValuep = 1; - else - *getValuep = 0; - ReleaseReadLock(&setp->lock); - return 0; -} - -/* hold and release event sets */ -int -afs_icl_SetHold(register struct afs_icl_set *setp) -{ - ObtainWriteLock(&afs_icl_lock, 201); - setp->refCount++; - ReleaseWriteLock(&afs_icl_lock); - return 0; -} - -/* free a set. Called with afs_icl_lock locked */ -int -afs_icl_ZapSet(register struct afs_icl_set *setp) -{ - register struct afs_icl_set **lpp, *tp; - int i; - register struct afs_icl_log *tlp; - - for (lpp = &afs_icl_allSets, tp = *lpp; tp; lpp = &tp->nextp, tp = *lpp) { - if (tp == setp) { - /* found the dude we want to remove */ - *lpp = setp->nextp; - osi_FreeSmallSpace(setp->name); -#ifdef KERNEL_HAVE_PIN - unpin((char *)setp->eventFlags, ICL_DEFAULTEVENTS); -#endif - afs_osi_Free(setp->eventFlags, ICL_DEFAULTEVENTS); - for (i = 0; i < ICL_LOGSPERSET; i++) { - if ((tlp = setp->logs[i])) - afs_icl_LogReleNL(tlp); - } - osi_FreeSmallSpace(setp); - break; /* won't find it twice */ - } - } - return 0; -} - -/* do the release, watching for deleted entries */ -int -afs_icl_SetRele(register struct afs_icl_set *setp) -{ - ObtainWriteLock(&afs_icl_lock, 202); - if (--setp->refCount == 0 && (setp->states & ICL_SETF_DELETED)) { - afs_icl_ZapSet(setp); /* destroys setp's lock! */ - } - ReleaseWriteLock(&afs_icl_lock); - return 0; -} - -/* free a set entry, dropping its reference count */ -int -afs_icl_SetFree(register struct afs_icl_set *setp) -{ - ObtainWriteLock(&setp->lock, 203); - setp->states |= ICL_SETF_DELETED; - ReleaseWriteLock(&setp->lock); - afs_icl_SetRele(setp); - return 0; -} - -/* find a set by name, returning it held */ -struct afs_icl_set * -afs_icl_FindSet(char *name) -{ - register struct afs_icl_set *tp; - ObtainWriteLock(&afs_icl_lock, 204); - for (tp = afs_icl_allSets; tp; tp = tp->nextp) { - if (strcmp(tp->name, name) == 0) { - /* this is the dude we want */ - tp->refCount++; - break; - } - } - ReleaseWriteLock(&afs_icl_lock); - return tp; -} - -/* zero out all the logs in the set */ -int -afs_icl_ZeroSet(struct afs_icl_set *setp) -{ - register int i; - int code = 0; - int tcode; - struct afs_icl_log *logp; - - ObtainReadLock(&setp->lock); - for (i = 0; i < ICL_LOGSPERSET; i++) { - logp = setp->logs[i]; - if (logp) { - afs_icl_LogHold(logp); - tcode = afs_icl_ZeroLog(logp); - if (tcode != 0) - code = tcode; /* save the last bad one */ - afs_icl_LogRele(logp); - } - } - ReleaseReadLock(&setp->lock); - return code; -} - -int -afs_icl_EnumerateSets(int (*aproc) - (char *name, char *arock, struct afs_icl_log * tp), - char *arock) -{ - register struct afs_icl_set *tp, *np; - register afs_int32 code; - - code = 0; - ObtainWriteLock(&afs_icl_lock, 205); - for (tp = afs_icl_allSets; tp; tp = np) { - tp->refCount++; /* hold this guy */ - ReleaseWriteLock(&afs_icl_lock); - code = (*aproc) (tp->name, arock, (struct afs_icl_log *)tp); - ObtainWriteLock(&afs_icl_lock, 206); - np = tp->nextp; /* tp may disappear next, but not np */ - if (--tp->refCount == 0 && (tp->states & ICL_SETF_DELETED)) - afs_icl_ZapSet(tp); - if (code) - break; - } - ReleaseWriteLock(&afs_icl_lock); - return code; -} - -int -afs_icl_AddLogToSet(struct afs_icl_set *setp, struct afs_icl_log *newlogp) -{ - register int i; - int code = -1; - - ObtainWriteLock(&setp->lock, 207); - for (i = 0; i < ICL_LOGSPERSET; i++) { - if (!setp->logs[i]) { - setp->logs[i] = newlogp; - code = i; - afs_icl_LogHold(newlogp); - if (!(setp->states & ICL_SETF_FREED)) { - /* bump up the number of sets using the log */ - afs_icl_LogUse(newlogp); - } - break; - } - } - ReleaseWriteLock(&setp->lock); - return code; -} - -int -afs_icl_SetSetStat(struct afs_icl_set *setp, int op) -{ - int i; - afs_int32 code; - struct afs_icl_log *logp; - - ObtainWriteLock(&setp->lock, 208); - switch (op) { - case ICL_OP_SS_ACTIVATE: /* activate a log */ - /* - * If we are not already active, see if we have released - * our demand that the log be allocated (FREED set). If - * we have, reassert our desire. - */ - if (!(setp->states & ICL_SETF_ACTIVE)) { - if (setp->states & ICL_SETF_FREED) { - /* have to reassert desire for logs */ - for (i = 0; i < ICL_LOGSPERSET; i++) { - logp = setp->logs[i]; - if (logp) { - afs_icl_LogHold(logp); - afs_icl_LogUse(logp); - afs_icl_LogRele(logp); - } - } - setp->states &= ~ICL_SETF_FREED; - } - setp->states |= ICL_SETF_ACTIVE; - } - code = 0; - break; - - case ICL_OP_SS_DEACTIVATE: /* deactivate a log */ - /* this doesn't require anything beyond clearing the ACTIVE flag */ - setp->states &= ~ICL_SETF_ACTIVE; - code = 0; - break; - - case ICL_OP_SS_FREE: /* deassert design for log */ - /* - * if we are already in this state, do nothing; otherwise - * deassert desire for log - */ - if (setp->states & ICL_SETF_ACTIVE) - code = EINVAL; - else { - if (!(setp->states & ICL_SETF_FREED)) { - for (i = 0; i < ICL_LOGSPERSET; i++) { - logp = setp->logs[i]; - if (logp) { - afs_icl_LogHold(logp); - afs_icl_LogFreeUse(logp); - afs_icl_LogRele(logp); - } - } - setp->states |= ICL_SETF_FREED; - } - code = 0; - } - break; - - default: - code = EINVAL; - } - ReleaseWriteLock(&setp->lock); - return code; -} diff --git a/src/afs/afs_callback.c b/src/afs/afs_callback.c index dd003f88a..737f5786f 100644 --- a/src/afs/afs_callback.c +++ b/src/afs/afs_callback.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_callback.c,v 1.27.2.10 2008/03/10 22:35:33 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_callback.c,v 1.39.2.4 2008/03/10 22:32:32 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ @@ -1653,9 +1653,147 @@ SRXAFSCB_TellMeAboutYourself(struct rx_call *a_call, dataBytes = 1 * sizeof(afs_int32); dataBuffP = (afs_int32 *) afs_osi_Alloc(dataBytes); - dataBuffP[0] = CAPABILITY_ERRORTRANS; + dataBuffP[0] = CLIENT_CAPABILITY_ERRORTRANS; capabilities->Capabilities_len = dataBytes / sizeof(afs_int32); capabilities->Capabilities_val = dataBuffP; return code; } + + +#if 0 && defined(AFS_LINUX24_ENV) +extern struct vcache *afs_globalVp; + +int recurse_dcache_parent(parent, a_index, addr, inode, flags, time, fileName) + struct dentry * parent; + afs_int32 a_index; + afs_int32 *addr; + afs_int32 *inode; + afs_int32 *flags; + afs_int32 *time; + char ** fileName; +{ + struct dentry *this_parent = parent; + struct list_head *next; + int found = 0; + struct dentry *dentry; + +repeat: + next = this_parent->d_subdirs.next; +resume: + while (next != &this_parent->d_subdirs) { + struct list_head *tmp = next; + dentry = list_entry(tmp, struct dentry, d_child); + if (a_index == 0) + goto searchdone3; + a_index--; + next = tmp->next; + /* + * Descend a level if the d_subdirs list is non-empty. + */ + if (!list_empty(&dentry->d_subdirs)) { + this_parent = dentry; + goto repeat; + } + } + /* + * All done at this level ... ascend and resume the search. + */ + if (this_parent != parent) { + next = this_parent->d_child.next; + this_parent = this_parent->d_parent; + goto resume; + } + goto ret; + + searchdone3: + if (d_unhashed(dentry)) + *flags = 1; + else + *flags = 0; + + *fileName = afs_strdup(dentry->d_name.name?dentry->d_name.name:""); + *inode = ITOAFS(dentry->d_inode); + *addr = atomic_read(&(dentry)->d_count); + *time = dentry->d_time; + + return 0; + ret: + return 1; +} +#endif + +int SRXAFSCB_GetDE(a_call, a_index, addr, inode, flags, time, fileName) + struct rx_call *a_call; + afs_int32 a_index; + afs_int32 *addr; + afs_int32 *inode; + afs_int32 *flags; + afs_int32 *time; + char ** fileName; +{ /*SRXAFSCB_GetDE*/ + int code = 0; /*Return code*/ +#if 0 && defined(AFS_LINUX24_ENV) + register int i; /*Loop variable*/ + register struct vcache *tvc = afs_globalVp; + struct dentry *dentry; + struct list_head *cur, *head = &(AFSTOI(tvc))->i_dentry; + +#ifdef RX_ENABLE_LOCKS + AFS_GLOCK(); +#endif /* RX_ENABLE_LOCKS */ + +#if defined(AFS_LINUX24_ENV) + spin_lock(&dcache_lock); +#endif + + cur = head; + while ((cur = cur->next) != head) { + dentry = list_entry(cur, struct dentry, d_alias); + + dget_locked(dentry); + +#if defined(AFS_LINUX24_ENV) + spin_unlock(&dcache_lock); +#endif + if (a_index == 0) + goto searchdone2; + a_index--; + + if (recurse_dcache_parent(dentry, a_index, addr, inode, flags, time, fileName) == 0) { + dput(dentry); + code = 0; + goto fcnDone; + } + dput(dentry); + } + searchdone2: + if (cur == head) { + /*Past EOF*/ + code = 1; + *fileName = afs_strdup(""); + goto fcnDone; + } + + if (d_unhashed(dentry)) + *flags = 1; + else + *flags = 0; + + *fileName = afs_strdup(dentry->d_name.name?dentry->d_name.name:""); + *inode = ITOAFS(dentry->d_inode); + *addr = atomic_read(&(dentry)->d_count); + *time = dentry->d_time; + + dput(dentry); + code = 0; + +fcnDone: + +#ifdef RX_ENABLE_LOCKS + AFS_GUNLOCK(); +#endif /* RX_ENABLE_LOCKS */ +#endif + return(code); + +} /*SRXAFSCB_GetDE*/ diff --git a/src/afs/afs_cbqueue.c b/src/afs/afs_cbqueue.c index b3289c498..4571e3938 100644 --- a/src/afs/afs_cbqueue.c +++ b/src/afs/afs_cbqueue.c @@ -75,7 +75,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_cbqueue.c,v 1.9.2.4 2006/03/02 06:44:05 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_cbqueue.c,v 1.13 2006/03/02 06:42:47 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ diff --git a/src/afs/afs_cell.c b/src/afs/afs_cell.c index 052602b39..84d36e998 100644 --- a/src/afs/afs_cell.c +++ b/src/afs/afs_cell.c @@ -14,13 +14,14 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_cell.c,v 1.30.2.6 2007/12/04 20:33:17 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_cell.c,v 1.34.4.7 2008/01/28 01:39:18 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ #include "afs/afs_stats.h" /* afs statistics */ #include "afs/afs_osi.h" +#include "afs/afs_md5.h" /* Local variables. */ afs_rwlock_t afs_xcell; /* Export for cmdebug peeking at locks */ @@ -156,6 +157,7 @@ afs_GetCellHostsAFSDB(char *acellName) afs_osi_Sleep(&afsdb_req); ObtainReadLock(&afsdb_req_lock); }; + ReleaseReadLock(&afsdb_req_lock); ReleaseWriteLock(&afsdb_client_lock); @@ -174,9 +176,8 @@ afs_LookupAFSDB(char *acellName) char *cellName = afs_strdup(acellName); code = afs_GetCellHostsAFSDB(cellName); - afs_Trace2(afs_iclSetp, CM_TRACE_AFSDB, ICL_TYPE_STRING, cellName, - ICL_TYPE_INT32, code); + ICL_TYPE_INT32, code); afs_osi_FreeStr(cellName); #endif } @@ -550,6 +551,17 @@ afs_choose_cell_by_name(struct cell *cell, void *arg) } } +static void * +afs_choose_cell_by_handle(struct cell *cell, void *arg) +{ + if (!arg) { + /* Safety net */ + return cell; + } else { + return memcmp(cell->cellHandle, (char *)arg, 16) ? NULL : cell; + } +} + static void * afs_choose_cell_by_num(struct cell *cell, void *arg) { @@ -636,6 +648,17 @@ afs_GetCellByIndex(afs_int32 index, afs_int32 locktype) return tc; } +struct cell * +afs_GetCellByHandle(void *handle, afs_int32 locktype) +{ + struct cell *tc; + + tc = afs_TraverseCells(&afs_choose_cell_by_handle, handle); + if (tc) + afs_UpdateCellLRU(tc); + return tc; +} + struct cell * afs_GetPrimaryCell(afs_int32 locktype) { @@ -705,6 +728,7 @@ afs_NewCell(char *acellName, afs_int32 * acellHosts, int aflags, tc->cellName = afs_strdup(acellName); tc->fsport = AFS_FSPORT; tc->vlport = AFS_VLPORT; + AFS_MD5_String(tc->cellHandle, tc->cellName, strlen(tc->cellName)); RWLOCK_INIT(&tc->lock, "cell lock"); newc = 1; aflags |= CNoSUID; diff --git a/src/afs/afs_chunk.c b/src/afs/afs_chunk.c index 7079b40e3..2aa06ac2c 100644 --- a/src/afs/afs_chunk.c +++ b/src/afs/afs_chunk.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_chunk.c,v 1.6.2.2 2006/02/20 21:49:41 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_chunk.c,v 1.8 2006/02/20 21:49:17 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ diff --git a/src/afs/afs_conn.c b/src/afs/afs_conn.c index 53d2aa946..8ebfbb407 100644 --- a/src/afs/afs_conn.c +++ b/src/afs/afs_conn.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_conn.c,v 1.13.2.2 2007/02/26 22:18:28 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_conn.c,v 1.14.8.3 2008/05/23 14:25:15 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -83,7 +83,9 @@ afs_Conn(register struct VenusFid *afid, register struct vrequest *areq, /* First is always lowest rank, if it's up */ if ((tv->status[0] == not_busy) && tv->serverHost[0] - && !(tv->serverHost[0]->addr->sa_flags & SRVR_ISDOWN)) + && !(tv->serverHost[0]->addr->sa_flags & SRVR_ISDOWN) && + !(((areq->idleError > 0) || (areq->tokenError > 0)) + && (areq->skipserver[0] == 1))) lowp = tv->serverHost[0]->addr; /* Otherwise we look at all of them. There are seven levels of @@ -95,6 +97,9 @@ afs_Conn(register struct VenusFid *afid, register struct vrequest *areq, */ for (notbusy = not_busy; (!lowp && (notbusy <= end_not_busy)); notbusy++) { for (i = 0; i < MAXHOSTS && tv->serverHost[i]; i++) { + if (((areq->tokenError > 0)||(areq->idleError > 0)) + && (areq->skipserver[i] == 1)) + continue; if (tv->status[i] != notbusy) { if (tv->status[i] == rd_busy || tv->status[i] == rdwr_busy) { if (!areq->busyCount) @@ -153,6 +158,12 @@ afs_ConnBySA(struct srvAddr *sap, unsigned short aport, afs_int32 acell, ReleaseSharedLock(&afs_xconn); return NULL; } + + if (AFS_IS_DISCONNECTED) { + afs_warnuser("afs_ConnBySA: disconnected\n"); + ReleaseSharedLock(&afs_xconn); + return NULL; + } if (!tc) { /* No such connection structure exists. Create one and splice it in. @@ -234,6 +245,7 @@ afs_ConnBySA(struct srvAddr *sap, unsigned short aport, afs_int32 acell, if (service == 52) { rx_SetConnHardDeadTime(tc->id, afs_rx_harddead); } + rx_SetConnIdleDeadTime(tc->id, afs_rx_idledead); tc->forceConnectFS = 0; /* apparently we're appropriately connected now */ if (csec) @@ -263,6 +275,12 @@ afs_ConnByHost(struct server *aserver, unsigned short aport, afs_int32 acell, struct srvAddr *sa = 0; AFS_STATCNT(afs_ConnByHost); + + if (AFS_IS_DISCONNECTED) { + afs_warnuser("afs_ConnByHost: disconnected\n"); + return NULL; + } + /* 1. look for an existing connection 2. create a connection at an address believed to be up diff --git a/src/afs/afs_daemons.c b/src/afs/afs_daemons.c index 1cc6c11ad..ab24045df 100644 --- a/src/afs/afs_daemons.c +++ b/src/afs/afs_daemons.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_daemons.c,v 1.28.2.14 2007/10/23 00:03:01 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_daemons.c,v 1.43.2.5 2008/05/23 14:25:15 shadow Exp $"); #ifdef AFS_AIX51_ENV #define __FULL_PROTO @@ -46,14 +46,35 @@ afs_int32 afs_gcpags = AFS_GCPAGS; afs_int32 afs_gcpags_procsize = 0; afs_int32 afs_CheckServerDaemonStarted = 0; -#ifdef DEFAULT_PROBE_INTERVAL -afs_int32 PROBE_INTERVAL = DEFAULT_PROBE_INTERVAL; /* overridding during compile */ -#else -afs_int32 PROBE_INTERVAL = 30; /* default to 3 min */ +#ifndef DEFAULT_PROBE_INTERVAL +#define DEFAULT_PROBE_INTERVAL 30 /* default to 3 min */ #endif +afs_int32 afs_probe_interval = DEFAULT_PROBE_INTERVAL; +afs_int32 afs_probe_all_interval = 600; +afs_int32 afs_nat_probe_interval = 60; +afs_int32 afs_preCache = 0; + +#define PROBE_WAIT() (1000 * (afs_probe_interval - ((afs_random() & 0x7fffffff) \ + % (afs_probe_interval/2)))) -#define PROBE_WAIT() (1000 * (PROBE_INTERVAL - ((afs_random() & 0x7fffffff) \ - % (PROBE_INTERVAL/2)))) +void +afs_SetCheckServerNATmode(int isnat) +{ + static afs_int32 old_intvl, old_all_intvl; + static int wasnat; + + if (isnat && !wasnat) { + old_intvl = afs_probe_interval; + old_all_intvl = afs_probe_all_interval; + afs_probe_interval = afs_nat_probe_interval; + afs_probe_all_interval = afs_nat_probe_interval; + afs_osi_CancelWait(&AFS_CSWaitHandler); + } else if (!isnat && wasnat) { + afs_probe_interval = old_intvl; + afs_probe_all_interval = old_all_intvl; + } + wasnat = isnat; +} void afs_CheckServerDaemon(void) @@ -75,13 +96,13 @@ afs_CheckServerDaemon(void) } now = osi_Time(); - if (PROBE_INTERVAL + lastCheck <= now) { + if (afs_probe_interval + lastCheck <= now) { afs_CheckServers(1, NULL); /* check down servers */ lastCheck = now = osi_Time(); } - if (600 + last10MinCheck <= now) { - afs_Trace1(afs_iclSetp, CM_TRACE_PROBEUP, ICL_TYPE_INT32, 600); + if (afs_probe_all_interval + last10MinCheck <= now) { + afs_Trace1(afs_iclSetp, CM_TRACE_PROBEUP, ICL_TYPE_INT32, afs_probe_all_interval); afs_CheckServers(0, NULL); last10MinCheck = now = osi_Time(); } @@ -93,9 +114,9 @@ afs_CheckServerDaemon(void) } /* Compute time to next probe. */ - delay = PROBE_INTERVAL + lastCheck; - if (delay > 600 + last10MinCheck) - delay = 600 + last10MinCheck; + delay = afs_probe_interval + lastCheck; + if (delay > afs_probe_all_interval + last10MinCheck) + delay = afs_probe_all_interval + last10MinCheck; delay -= now; if (delay < 1) delay = 1; @@ -103,12 +124,9 @@ afs_CheckServerDaemon(void) } afs_CheckServerDaemonStarted = 0; } -#define RECURSIVE_VFS_CONTEXT 1 -#if RECURSIVE_VFS_CONTEXT + extern int vfs_context_ref; -#else -#define vfs_context_ref 1 -#endif + void afs_Daemon(void) { @@ -133,10 +151,8 @@ afs_Daemon(void) osi_Panic("vfs context already initialized"); while (afs_osi_ctxtp && vfs_context_ref) afs_osi_Sleep(&afs_osi_ctxtp); -#if RECURSIVE_VFS_CONTEXT if (afs_osi_ctxtp && !vfs_context_ref) vfs_context_rele(afs_osi_ctxtp); -#endif afs_osi_ctxtp = vfs_context_create(NULL); afs_osi_ctxtp_initialized = 1; #endif @@ -179,8 +195,10 @@ afs_Daemon(void) afs_FlushReclaimedVcaches(); ReleaseWriteLock(&afs_xvcache); afs_FlushActiveVcaches(1); /* keep flocks held & flush nfs writes */ +#if 0 #ifdef AFS_DISCON_ENV afs_StoreDirtyVcaches(); +#endif #endif afs_CheckRXEpoch(); last1MinCheck = now; @@ -197,7 +215,7 @@ afs_Daemon(void) cs_warned = 1; printf("Please install afsd with check server daemon.\n"); } - if (lastNMinCheck + PROBE_INTERVAL < now) { + if (lastNMinCheck + afs_probe_interval < now) { /* only check down servers */ afs_CheckServers(1, NULL); lastNMinCheck = now; @@ -463,17 +481,22 @@ BPrefetch(register struct brequest *ab) { register struct dcache *tdc; register struct vcache *tvc; - afs_size_t offset, len; + afs_size_t offset, len, abyte, totallen = 0; struct vrequest treq; AFS_STATCNT(BPrefetch); if ((len = afs_InitReq(&treq, ab->cred))) return; + abyte = ab->size_parm[0]; tvc = ab->vc; - tdc = afs_GetDCache(tvc, ab->size_parm[0], &treq, &offset, &len, 1); - if (tdc) { - afs_PutDCache(tdc); - } + do { + tdc = afs_GetDCache(tvc, abyte, &treq, &offset, &len, 1); + if (tdc) { + afs_PutDCache(tdc); + } + abyte+=len; + totallen += len; + } while ((totallen < afs_preCache) && tdc && (len > 0)); /* now, dude may be waiting for us to clear DFFetchReq bit; do so. Can't * use tdc from GetDCache since afs_GetDCache may fail, but someone may * be waiting for our wakeup anyway. diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c index b6992db96..630b18026 100644 --- a/src/afs/afs_dcache.c +++ b/src/afs/afs_dcache.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_dcache.c,v 1.42.2.23 2007/12/08 18:00:44 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_dcache.c,v 1.64.4.8 2008/05/23 14:25:15 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ @@ -23,14 +23,31 @@ RCSID #include "afs/afs_osidnlc.h" /* Forward declarations. */ -static void afs_GetDownD(int anumber, int *aneedSpace); +static void afs_GetDownD(int anumber, int *aneedSpace, afs_int32 buckethint); static void afs_FreeDiscardedDCache(void); static void afs_DiscardDCache(struct dcache *); static void afs_FreeDCache(struct dcache *); +/* For split cache */ +static afs_int32 afs_DCGetBucket(struct vcache *); +static void afs_DCAdjustSize(struct dcache *, afs_int32, afs_int32); +static void afs_DCMoveBucket(struct dcache *, afs_int32, afs_int32); +static void afs_DCSizeInit(void); +static afs_int32 afs_DCWhichBucket(afs_int32, afs_int32); + /* * --------------------- Exported definitions --------------------- */ +/* For split cache */ +afs_int32 afs_blocksUsed_0; /*1K blocks in cache - in theory is zero */ +afs_int32 afs_blocksUsed_1; /*1K blocks in cache */ +afs_int32 afs_blocksUsed_2; /*1K blocks in cache */ +afs_int32 afs_pct1 = -1; +afs_int32 afs_pct2 = -1; +afs_uint32 afs_tpct1 = 0; +afs_uint32 afs_tpct2 = 0; +afs_uint32 splitdcache = 0; + afs_lock_t afs_xdcache; /*Lock: alloc new disk cache entries */ afs_int32 afs_freeDCList; /*Free list for disk cache entries */ afs_int32 afs_freeDCCount; /*Count of elts in freeDCList */ @@ -119,6 +136,115 @@ struct afs_cacheOps afs_MemCacheOps = { int cacheDiskType; /*Type of backing disk for cache */ struct afs_cacheOps *afs_cacheType; +static afs_int32 +afs_DCGetBucket(struct vcache *avc) +{ + if (!splitdcache) + return 1; + + /* This should be replaced with some sort of user configurable function */ + if (avc->states & CRO) { + return 2; + } else if (avc->states & CBackup) { + return 1; + } else { + /* RW */ + } + /* main bucket */ + return 1; +} + +static void +afs_DCAdjustSize(struct dcache *adc, afs_int32 oldSize, afs_int32 newSize) +{ + afs_int32 adjustSize = newSize - oldSize; + + if (!splitdcache) + return; + + switch (adc->bucket) + { + case 0: + afs_blocksUsed_0 += adjustSize; + afs_stats_cmperf.cacheBucket0_Discarded += oldSize; + break; + case 1: + afs_blocksUsed_1 += adjustSize; + afs_stats_cmperf.cacheBucket1_Discarded += oldSize; + break; + case 2: + afs_blocksUsed_2 += adjustSize; + afs_stats_cmperf.cacheBucket2_Discarded += oldSize; + break; + } + + return; +} + +static void +afs_DCMoveBucket(struct dcache *adc, afs_int32 size, afs_int32 newBucket) +{ + if (!splitdcache) + return; + + switch (adc->bucket) + { + case 0: + afs_blocksUsed_0 -= size; + break; + case 1: + afs_blocksUsed_1 -= size; + break; + case 2: + afs_blocksUsed_2 -= size; + break; + } + + adc->bucket = newBucket; + + switch (adc->bucket) + { + case 0: + afs_blocksUsed_0 += size; + break; + case 1: + afs_blocksUsed_1 += size; + break; + case 2: + afs_blocksUsed_2 += size; + break; + } + + return; +} + +static void +afs_DCSizeInit(void) +{ + afs_blocksUsed_0 = afs_blocksUsed_1 = afs_blocksUsed_2 = 0; +} + +static afs_int32 +afs_DCWhichBucket(afs_int32 phase, afs_int32 bucket) +{ + if (!splitdcache) + return 0; + + afs_pct1 = afs_blocksUsed_1 / (afs_cacheBlocks / 100); + afs_pct2 = afs_blocksUsed_2 / (afs_cacheBlocks / 100); + + /* Short cut: if we don't know about it, try to kill it */ + if (phase < 2 && afs_blocksUsed_0) + return 0; + + if (afs_pct1 > afs_tpct1) + return 1; + if (afs_pct2 > afs_tpct2) + return 2; + return 0; /* unlikely */ +} + + /* * afs_StoreWarn * @@ -240,7 +366,7 @@ afs_CacheTruncateDaemon(void) afs_blocksUsed - afs_blocksDiscarded - cb_lowat; slots_needed = dc_hiwat - afs_freeDCCount - afs_discardDCCount; - afs_GetDownD(slots_needed, &space_needed); + afs_GetDownD(slots_needed, &space_needed, 0); if ((space_needed <= 0) && (slots_needed <= 0)) { break; } @@ -335,6 +461,7 @@ afs_AdjustSize(register struct dcache *adc, register afs_int32 newSize) if (!newSize) adc->validPos = 0; newSize = ((newSize + afs_fsfragsize) ^ afs_fsfragsize) >> 10; /* round up */ + afs_DCAdjustSize(adc, oldSize, newSize); if (newSize > oldSize) { /* We're growing the file, wakeup the daemon */ afs_MaybeWakeupTruncateDaemon(); @@ -371,7 +498,7 @@ afs_AdjustSize(register struct dcache *adc, register afs_int32 newSize) #define MAXATONCE 16 /* max we can obtain at once */ static void -afs_GetDownD(int anumber, int *aneedSpace) +afs_GetDownD(int anumber, int *aneedSpace, afs_int32 buckethint) { struct dcache *tdc; @@ -387,6 +514,7 @@ afs_GetDownD(int anumber, int *aneedSpace) afs_hyper_t maxVictimTime; /* youngest (largest LRU time) victim */ afs_uint32 maxVictimPtr; /* where it is */ int discard; + int curbucket; AFS_STATCNT(afs_GetDownD); if (CheckLock(&afs_xdcache) != -1) @@ -403,12 +531,20 @@ afs_GetDownD(int anumber, int *aneedSpace) if (anumber > MAXATONCE) anumber = MAXATONCE; /* all we can do */ + /* rewrite so phases include a better eligiblity for gc test*/ /* * The phase variable manages reclaims. Set to 0, the first pass, - * we don't reclaim active entries. Set to 1, we reclaim even active - * ones. + * we don't reclaim active entries, or other than target bucket. + * Set to 1, we reclaim even active ones in target bucket. + * Set to 2, we reclaim any inactive one. + * Set to 3, we reclaim even active ones. */ - phase = 0; + if (splitdcache) { + phase = 0; + } else { + phase = 4; + } + for (i = 0; i < afs_cacheFiles; i++) /* turn off all flags */ afs_indexFlags[i] &= ~IFFlag; @@ -417,6 +553,7 @@ afs_GetDownD(int anumber, int *aneedSpace) /* find oldest entries for reclamation */ maxVictimPtr = victimPtr = 0; hzero(maxVictimTime); + curbucket = afs_DCWhichBucket(phase, buckethint); /* select victims from access time array */ for (i = 0; i < afs_cacheFiles; i++) { if (afs_indexFlags[i] & (IFDataMod | IFFree | IFDiscarded)) { @@ -424,6 +561,11 @@ afs_GetDownD(int anumber, int *aneedSpace) continue; } tdc = afs_indexTable[i]; + if (tdc && (curbucket != tdc->bucket) && (phase < 4)) + { + /* Wrong bucket; can't use it! */ + continue; + } if (tdc && (tdc->refCount != 0)) { /* Referenced; can't use it! */ continue; @@ -505,12 +647,12 @@ afs_GetDownD(int anumber, int *aneedSpace) if (tvc) { tchunkoffset = AFS_CHUNKTOBASE(tdc->f.chunk); chunkFlags = afs_indexFlags[tdc->index]; - if (phase == 0 && osi_Active(tvc)) - skip = 1; - if (phase > 0 && osi_Active(tvc) - && (tvc->states & CDCLock) - && (chunkFlags & IFAnyPages)) - skip = 1; + if (((phase & 1) == 0) && osi_Active(tvc)) + skip = 1; + if (((phase & 1) == 1) && osi_Active(tvc) + && (tvc->states & CDCLock) + && (chunkFlags & IFAnyPages)) + skip = 1; if (chunkFlags & IFDataMod) skip = 1; afs_Trace4(afs_iclSetp, CM_TRACE_GETDOWND, @@ -642,17 +784,17 @@ afs_GetDownD(int anumber, int *aneedSpace) afs_PutDCache(tdc); } - if (phase == 0) { + if (phase < 5) { /* Phase is 0 and no one was found, so try phase 1 (ignore * osi_Active flag) */ if (j == 0) { - phase = 1; + phase++; for (i = 0; i < afs_cacheFiles; i++) /* turn off all flags */ afs_indexFlags[i] &= ~IFFlag; } } else { - /* found no one in phase 1, we're hosed */ + /* found no one in phases 0-5, we're hosed */ if (victimPtr == 0) break; } @@ -911,6 +1053,7 @@ afs_FreeDiscardedDCache(void) afs_CFileTruncate(tfile, 0); afs_CFileClose(tfile); afs_AdjustSize(tdc, 0); + afs_DCMoveBucket(tdc, 0, 0); /* * Free the element we just truncated @@ -918,6 +1061,7 @@ afs_FreeDiscardedDCache(void) MObtainWriteLock(&afs_xdcache, 511); afs_indexFlags[tdc->index] &= ~IFDiscarded; afs_FreeDCache(tdc); + tdc->f.states &= ~(DRO|DBackup|DRW); ReleaseWriteLock(&tdc->lock); afs_PutDCache(tdc); MReleaseWriteLock(&afs_xdcache); @@ -1148,12 +1292,66 @@ afs_TryToSmush(register struct vcache *avc, struct AFS_UCRED *acred, int sync) #endif MReleaseWriteLock(&afs_xdcache); /* - * It's treated like a callback so that when we do lookups we'll invalidate the unique bit if any + * It's treated like a callback so that when we do lookups we'll + * invalidate the unique bit if any * trytoSmush occured during the lookup call */ afs_allCBs++; } +/* + * afs_DCacheMissingChunks + * + * Description + * Given the cached info for a file, return the number of chunks that + * are not available from the dcache. + * + * Parameters: + * avc: Pointer to the (held) vcache entry to look in. + * + * Returns: + * The number of chunks which are not currently cached. + * + * Environment: + * The vcache entry is held upon entry. + */ + +int +afs_DCacheMissingChunks(struct vcache *avc) +{ + int i, index; + afs_size_t totalLength; + afs_uint32 totalChunks; + struct dcache *tdc; + + totalLength = avc->m.Length; + if (avc->truncPos < totalLength) + totalLength = avc->truncPos; + + totalChunks = AFS_CHUNK(totalLength) + 1; + + /*printf("Should have %d chunks for %d bytes\n", totalChunks, totalLength);*/ + + i = DVHash(&avc->fid); + MObtainWriteLock(&afs_xdcache, 1001); + for (index = afs_dvhashTbl[i]; index != NULLIDX; index = i) { + i = afs_dvnextTbl[index]; + if (afs_indexUnique[index] == avc->fid.Fid.Unique) { + tdc = afs_GetDSlot(index, NULL); + if (!FidCmp(&tdc->f.fid, &avc->fid)) { + totalChunks--; + } + ReleaseReadLock(&tdc->tlock); + afs_PutDCache(tdc); + } + } + MReleaseWriteLock(&afs_xdcache); + + /*printf("Missing %d chunks\n", totalChunks);*/ + + return (totalChunks); +} + /* * afs_FindDCache * @@ -1671,6 +1869,17 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, * If we didn't find the entry, we'll create one. */ if (index == NULLIDX) { + /* If we're disconnected, we can't do anything */ + if (AFS_IS_DISCONNECTED) { + MReleaseWriteLock(&afs_xdcache); + if (setLocks) { + if (slowPass) + ReleaseWriteLock(&avc->lock); + else + ReleaseReadLock(&avc->lock); + } + return NULL; + } /* * Locks held: * avc->lock(R) if setLocks @@ -1685,7 +1894,8 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, while (1) { if (!setLocks) avc->states |= CDCLock; - afs_GetDownD(5, (int *)0); /* just need slots */ + /* just need slots */ + afs_GetDownD(5, (int *)0, afs_DCGetBucket(avc)); if (!setLocks) avc->states &= ~CDCLock; if (afs_discardDCList != NULLIDX @@ -1726,6 +1936,8 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, size = ((tdc->f.chunkBytes + afs_fsfragsize) ^ afs_fsfragsize) >> 10; + tdc->f.states &= ~(DRO|DBackup|DRW); + afs_DCMoveBucket(tdc, size, 0); afs_blocksDiscarded -= size; afs_stats_cmperf.cacheBlocksDiscarded = afs_blocksDiscarded; if (aflags & 2) { @@ -1750,6 +1962,13 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, */ afs_indexFlags[tdc->index] &= ~(IFDirtyPages | IFAnyPages); tdc->f.fid = avc->fid; + if (avc->states & CRO) + tdc->f.states = DRO; + else if (avc->states & CBackup) + tdc->f.states = DBackup; + else + tdc->f.states = DRW; + afs_DCMoveBucket(tdc, 0, afs_DCGetBucket(avc)); afs_indexUnique[tdc->index] = tdc->f.fid.Fid.Unique; hones(tdc->f.versionNo); /* invalid value */ tdc->f.chunk = chunk; @@ -1769,7 +1988,6 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, afs_dvhashTbl[i] = tdc->index; tdc->dflags = DFEntryMod; tdc->mflags = 0; - tdc->f.states = 0; afs_MaybeWakeupTruncateDaemon(); MReleaseWriteLock(&afs_xdcache); ConvertWToSLock(&tdc->lock); @@ -1906,6 +2124,23 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, /* * Version number mismatch. */ + /* + * If we are disconnected, then we can't do much of anything + * because the data doesn't match the file. + */ + if (AFS_IS_DISCONNECTED) { + ReleaseSharedLock(&tdc->lock); + if (setLocks) { + if (slowPass) + ReleaseWriteLock(&avc->lock); + else + ReleaseReadLock(&avc->lock); + } + /* Flush the Dcache */ + afs_PutDCache(tdc); + + return NULL; + } UpgradeSToWLock(&tdc->lock, 609); /* @@ -2070,6 +2305,50 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, code = afs_CFileWrite(file, 0, dynrootDir, size); afs_PutDynroot(); + if (code == size) + code = 0; + else + code = -1; + + tdc->validPos = Position + size; + afs_CFileTruncate(file, size); /* prune it */ + } else if (afs_IsDynrootMount(avc)) { + char *dynrootDir; + int dynrootLen; + + afs_GetDynrootMount(&dynrootDir, &dynrootLen, &tsmall->OutStatus); + + dynrootDir += Position; + dynrootLen -= Position; + if (size > dynrootLen) + size = dynrootLen; + if (size < 0) + size = 0; + code = afs_CFileWrite(file, 0, dynrootDir, size); + afs_PutDynroot(); + + if (code == size) + code = 0; + else + code = -1; + + tdc->validPos = Position + size; + afs_CFileTruncate(file, size); /* prune it */ + } else if (afs_IsDynrootMount(avc)) { + char *dynrootDir; + int dynrootLen; + + afs_GetDynrootMount(&dynrootDir, &dynrootLen, &tsmall->OutStatus); + + dynrootDir += Position; + dynrootLen -= Position; + if (size > dynrootLen) + size = dynrootLen; + if (size < 0) + size = 0; + code = afs_CFileWrite(file, 0, dynrootDir, size); + afs_PutDynroot(); + if (code == size) code = 0; else @@ -2380,6 +2659,8 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, if (vType(avc) == VDIR) { DZap(tdc); } + tdc->f.states &= ~(DRO|DBackup|DRW); + afs_DCMoveBucket(tdc, 0, 0); ReleaseWriteLock(&tdc->lock); afs_PutDCache(tdc); if (!afs_IsDynroot(avc)) { @@ -2395,6 +2676,8 @@ afs_GetDCache(register struct vcache *avc, afs_size_t abyte, */ osi_Assert(!setLocks || slowPass); } + tdc->f.states &= ~(DRO|DBackup|DRW); + afs_DCMoveBucket(tdc, 0, 0); tdc = NULL; goto done; } @@ -2646,7 +2929,7 @@ afs_MemGetDSlot(register afs_int32 aslot, register struct dcache *tmpdc) if (CheckLock(&afs_xdcache) != -1) osi_Panic("getdslot nolock"); if (aslot < 0 || aslot >= afs_cacheFiles) - osi_Panic("getdslot slot"); + osi_Panic("getdslot slot %d (of %d)", aslot, afs_cacheFiles); tdc = afs_indexTable[aslot]; if (tdc) { QRemove(&tdc->lruq); /* move to queue head */ @@ -2804,6 +3087,18 @@ afs_UFSGetDSlot(register afs_int32 aslot, register struct dcache *tmpdc) #endif lasterrtime = osi_Time(); afs_indexUnique[aslot] = tdc->f.fid.Fid.Unique; + tdc->f.states &= ~(DRO|DBackup|DRW); + afs_DCMoveBucket(tdc, 0, 0); + } else { + if (&tdc->f != 0) { + if (tdc->f.states & DRO) { + afs_DCMoveBucket(tdc, 0, 2); + } else if (tdc->f.states & DBackup) { + afs_DCMoveBucket(tdc, 0, 1); + } else { + afs_DCMoveBucket(tdc, 0, 1); + } + } } tdc->refCount = 1; tdc->index = aslot; @@ -3028,6 +3323,8 @@ afs_InitCacheFile(char *afile, ino_t ainode) tdc->f.fid.Fid.Volume = 0; /* not in the hash table */ if (tstat.size != 0) osi_UFSTruncate(tfile, 0); + tdc->f.states &= ~(DRO|DBackup|DRW); + afs_DCMoveBucket(tdc, 0, 0); /* put entry in free cache slot list */ afs_dvnextTbl[tdc->index] = afs_freeDCList; afs_freeDCList = index; @@ -3202,6 +3499,10 @@ afs_dcacheInit(int afiles, int ablocks, int aDentries, int achunk, int aflags) afs_dcentries = aDentries; afs_blocksUsed = 0; + afs_stats_cmperf.cacheBucket0_Discarded = + afs_stats_cmperf.cacheBucket1_Discarded = + afs_stats_cmperf.cacheBucket2_Discarded = 0; + afs_DCSizeInit(); QInit(&afs_DLRU); } @@ -3242,6 +3543,9 @@ shutdown_dcache(void) afs_osi_Free(afs_dchashTbl, afs_dhashsize * sizeof(afs_int32)); afs_blocksUsed = afs_dcentries = 0; + afs_stats_cmperf.cacheBucket0_Discarded = + afs_stats_cmperf.cacheBucket1_Discarded = + afs_stats_cmperf.cacheBucket2_Discarded = 0; hzero(afs_indexCounter); afs_freeDCCount = 0; diff --git a/src/afs/afs_disconnected.c b/src/afs/afs_disconnected.c new file mode 100644 index 000000000..0d0cc3da9 --- /dev/null +++ b/src/afs/afs_disconnected.c @@ -0,0 +1,18 @@ +/* + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID("$Header: /cvs/openafs/src/afs/afs_disconnected.c,v 1.2.2.2 2008/05/23 14:25:15 shadow Exp $"); + +#include "afs/sysincludes.h" +#include "afsincludes.h" + +#ifdef AFS_DISCON_ENV + +/* Nothing here any more. Remove from the build unless stuff comes back! */ +#endif diff --git a/src/afs/afs_dynroot.c b/src/afs/afs_dynroot.c index ba1bbe646..a0e961890 100644 --- a/src/afs/afs_dynroot.c +++ b/src/afs/afs_dynroot.c @@ -12,8 +12,13 @@ * * Implements: * afs_IsDynrootFid + * afs_IsDynrootMountFid + * afs_IsDynrootAnyFid * afs_GetDynrootFid + * afs_GetDynrootMountFid * afs_IsDynroot + * afs_IsDynrootMount + * afs_IsDynrootAny * afs_DynrootInvalidate * afs_GetDynroot * afs_PutDynroot @@ -37,33 +42,15 @@ #include "afs/prs_fs.h" #include "afs/dir.h" +#include "afs/afs_dynroot.h" #define AFS_DYNROOT_CELLNAME "dynroot" #define AFS_DYNROOT_VOLUME 1 #define AFS_DYNROOT_VNODE 1 +#define AFS_DYNROOT_MOUNT_VNODE 3 #define AFS_DYNROOT_UNIQUE 1 -/* - * Vnode numbers in dynroot are composed of a type field (upper 8 bits) - * and a type-specific identifier in the lower 24 bits. - */ -#define VN_TYPE_CELL 0x01 /* Corresponds to a struct cell */ -#define VN_TYPE_ALIAS 0x02 /* Corresponds to a struct cell_alias */ -#define VN_TYPE_SYMLINK 0x03 /* User-created symlink in /afs */ - -#define VNUM_TO_VNTYPE(vnum) ((vnum) >> 24) -#define VNUM_TO_VNID(vnum) ((vnum) & 0x00ffffff) -#define VNUM_FROM_TYPEID(type, id) \ - ((type) << 24 | (id)) -#define VNUM_TO_CIDX(vnum) (VNUM_TO_VNID(vnum) >> 2) -#define VNUM_TO_RW(vnum) (VNUM_TO_VNID(vnum) >> 1 & 1) -#define VNUM_FROM_CIDX_RW(cidx, rw) \ - VNUM_FROM_TYPEID(VN_TYPE_CELL, \ - ((cidx) << 2 | (rw) << 1)) -#define VNUM_FROM_CAIDX_RW(caidx, rw) \ - VNUM_FROM_TYPEID(VN_TYPE_ALIAS, \ - ((caidx) << 2 | (rw) << 1)) - +static int afs_dynrootInit = 0; static int afs_dynrootEnable = 0; static int afs_dynrootCell = 0; @@ -71,6 +58,8 @@ static afs_rwlock_t afs_dynrootDirLock; /* Start of variables protected by afs_dynrootDirLock */ static char *afs_dynrootDir = NULL; static int afs_dynrootDirLen; +static char *afs_dynrootMountDir = NULL; +static int afs_dynrootMountDirLen; static int afs_dynrootDirLinkcnt; static int afs_dynrootDirVersion; static int afs_dynrootVersion = 1; @@ -97,7 +86,7 @@ static int afs_dynSymlinkIndex = 0; static int afs_dynrootCellInit() { - if (afs_dynrootEnable && !afs_dynrootCell) { + if (!afs_dynrootCell) { afs_int32 cellHosts[MAXCELLHOSTS]; struct cell *tc; int code; @@ -121,15 +110,37 @@ afs_dynrootCellInit() /* * Returns non-zero iff fid corresponds to the top of the dynroot volume. */ +static int +_afs_IsDynrootFid(struct VenusFid *fid) +{ + return (fid->Cell == afs_dynrootCell + && fid->Fid.Volume == AFS_DYNROOT_VOLUME + && fid->Fid.Vnode == AFS_DYNROOT_VNODE + && fid->Fid.Unique == AFS_DYNROOT_UNIQUE); +} + int afs_IsDynrootFid(struct VenusFid *fid) { - return (afs_dynrootEnable && fid->Cell == afs_dynrootCell + return (afs_dynrootEnable && _afs_IsDynrootFid(fid)); +} + +int +afs_IsDynrootMountFid(struct VenusFid *fid) +{ + return (fid->Cell == afs_dynrootCell && fid->Fid.Volume == AFS_DYNROOT_VOLUME - && fid->Fid.Vnode == AFS_DYNROOT_VNODE + && fid->Fid.Vnode == AFS_DYNROOT_MOUNT_VNODE && fid->Fid.Unique == AFS_DYNROOT_UNIQUE); } +int +afs_IsDynrootAnyFid(struct VenusFid *fid) +{ + return (fid->Cell == afs_dynrootCell + && fid->Fid.Volume == AFS_DYNROOT_VOLUME); +} + /* * Obtain the magic dynroot volume Fid. */ @@ -142,6 +153,15 @@ afs_GetDynrootFid(struct VenusFid *fid) fid->Fid.Unique = AFS_DYNROOT_UNIQUE; } +void +afs_GetDynrootMountFid(struct VenusFid *fid) +{ + fid->Cell = afs_dynrootCell; + fid->Fid.Volume = AFS_DYNROOT_VOLUME; + fid->Fid.Vnode = AFS_DYNROOT_MOUNT_VNODE; + fid->Fid.Unique = AFS_DYNROOT_UNIQUE; +} + /* * Returns non-zero iff avc is a pointer to the dynroot /afs vnode. */ @@ -151,6 +171,18 @@ afs_IsDynroot(struct vcache *avc) return afs_IsDynrootFid(&avc->fid); } +int +afs_IsDynrootMount(struct vcache *avc) +{ + return afs_IsDynrootMountFid(&avc->fid); +} + +int +afs_IsDynrootAny(struct vcache *avc) +{ + return afs_IsDynrootAnyFid(&avc->fid); +} + /* * Given the current page and chunk pointers in a directory, adjust them * appropriately so that the given file name can be appended. Used for @@ -302,6 +334,9 @@ afs_RebuildDynroot(void) /* Reserve space for "." and ".." */ curChunk += 2; + /* Reserve space for the dynamic-mount directory */ + afs_dynroot_computeDirEnt(AFS_DYNROOT_MOUNTNAME, &curPage, &curChunk); + for (cellidx = 0;; cellidx++) { c = afs_GetCellByIndex(cellidx, READ_LOCK); if (!c) @@ -371,10 +406,12 @@ afs_RebuildDynroot(void) for (i = 0; i < NHASHENT; i++) dirHeader->hashTable[i] = 0; - /* Install "." and ".." */ + /* Install ".", "..", and the dynamic mount directory */ afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, ".", 1); afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, "..", 1); - linkCount += 2; + afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, + AFS_DYNROOT_MOUNTNAME, AFS_DYNROOT_MOUNT_VNODE); + linkCount += 3; for (cellidx = 0; cellidx < maxcellidx; cellidx++) { c = afs_GetCellByIndex(cellidx, READ_LOCK); @@ -433,6 +470,49 @@ afs_RebuildDynroot(void) ReleaseWriteLock(&afs_dynrootDirLock); } +static void +afs_RebuildDynrootMount(void) +{ + int i; + int curChunk, curPage; + char *newDir; + struct DirHeader *dirHeader; + + newDir = afs_osi_Alloc(AFS_PAGESIZE); + + /* + * Now actually construct the directory. + */ + curChunk = 13; + curPage = 0; + dirHeader = (struct DirHeader *)newDir; + + dirHeader->header.pgcount = 0; + dirHeader->header.tag = htons(1234); + dirHeader->header.freecount = 0; + + dirHeader->header.freebitmap[0] = 0xff; + dirHeader->header.freebitmap[1] = 0x1f; + for (i = 2; i < EPP / 8; i++) + dirHeader->header.freebitmap[i] = 0; + dirHeader->alloMap[0] = EPP - DHE - 1; + for (i = 1; i < MAXPAGES; i++) + dirHeader->alloMap[i] = EPP; + for (i = 0; i < NHASHENT; i++) + dirHeader->hashTable[i] = 0; + + /* Install "." and ".." */ + afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, ".", 1); + afs_dynroot_addDirEnt(dirHeader, &curPage, &curChunk, "..", 1); + + ObtainWriteLock(&afs_dynrootDirLock, 549); + if (afs_dynrootMountDir) + afs_osi_Free(afs_dynrootMountDir, afs_dynrootMountDirLen); + afs_dynrootMountDir = newDir; + afs_dynrootMountDirLen = AFS_PAGESIZE; + ReleaseWriteLock(&afs_dynrootDirLock); +} + /* * Returns a pointer to the base of the dynroot directory in memory, * length thereof, and a FetchStatus. @@ -468,6 +548,37 @@ afs_GetDynroot(char **dynrootDir, int *dynrootLen, } } +void +afs_GetDynrootMount(char **dynrootDir, int *dynrootLen, + struct AFSFetchStatus *status) +{ + ObtainReadLock(&afs_dynrootDirLock); + if (!afs_dynrootMountDir) { + ReleaseReadLock(&afs_dynrootDirLock); + afs_RebuildDynrootMount(); + ObtainReadLock(&afs_dynrootDirLock); + } + + if (dynrootDir) + *dynrootDir = afs_dynrootMountDir; + if (dynrootLen) + *dynrootLen = afs_dynrootMountDirLen; + + if (status) { + memset(status, 0, sizeof(struct AFSFetchStatus)); + status->FileType = Directory; + status->LinkCount = 1; + status->Length = afs_dynrootMountDirLen; + status->DataVersion = 1; + status->CallerAccess = PRSFS_LOOKUP | PRSFS_READ; + status->AnonymousAccess = PRSFS_LOOKUP | PRSFS_READ; + status->UnixModeBits = 0755; + status->ParentVnode = 1; + status->ParentUnique = 1; + status->dataVersionHigh = 0; + } +} + /* * Puts back the dynroot read lock. */ @@ -485,15 +596,22 @@ afs_PutDynroot(void) int afs_DynrootNewVnode(struct vcache *avc, struct AFSFetchStatus *status) { - if (!afs_dynrootEnable) - return 0; + char *bp, tbuf[CVBS]; - if (afs_IsDynroot(avc)) { + if (_afs_IsDynrootFid(&avc->fid)) { + if (!afs_dynrootEnable) + return 0; afs_GetDynroot(0, 0, status); afs_PutDynroot(); return 1; } + if (afs_IsDynrootMount(avc)) { + afs_GetDynrootMount(0, 0, status); + afs_PutDynroot(); + return 1; + } + /* * Check if this is an entry under /afs, e.g. /afs/cellname. */ @@ -540,7 +658,8 @@ afs_DynrootNewVnode(struct vcache *avc, struct AFSFetchStatus *status) } if (VNUM_TO_VNTYPE(avc->fid.Fid.Vnode) != VN_TYPE_CELL - && VNUM_TO_VNTYPE(avc->fid.Fid.Vnode) != VN_TYPE_ALIAS) { + && VNUM_TO_VNTYPE(avc->fid.Fid.Vnode) != VN_TYPE_ALIAS + && VNUM_TO_VNTYPE(avc->fid.Fid.Vnode) != VN_TYPE_MOUNT) { afs_warn("dynroot vnode inconsistency, unknown VNTYPE %d\n", VNUM_TO_VNTYPE(avc->fid.Fid.Vnode)); return 0; @@ -579,6 +698,31 @@ afs_DynrootNewVnode(struct vcache *avc, struct AFSFetchStatus *status) status->UnixModeBits = 0755; afs_PutCellAlias(ca); + + } else if (VNUM_TO_VNTYPE(avc->fid.Fid.Vnode) == VN_TYPE_MOUNT) { + c = afs_GetCellByIndex(cellidx, READ_LOCK); + if (!c) { + afs_warn("dynroot vnode inconsistency, can't find cell %d\n", + cellidx); + return 0; + } + + /* + * linkData needs to contain "%cell:volumeid" + */ + namelen = strlen(c->cellName); + bp = afs_cv2string(&tbuf[CVBS], avc->fid.Fid.Unique); + linklen = 2 + namelen + strlen(bp); + avc->linkData = afs_osi_Alloc(linklen + 1); + strcpy(avc->linkData, "%"); + afs_strcat(avc->linkData, c->cellName); + afs_strcat(avc->linkData, ":"); + afs_strcat(avc->linkData, bp); + + status->UnixModeBits = 0644; + status->ParentVnode = AFS_DYNROOT_MOUNT_VNODE; + afs_PutCell(c, READ_LOCK); + } else { c = afs_GetCellByIndex(cellidx, READ_LOCK); if (!c) { @@ -609,17 +753,29 @@ afs_DynrootNewVnode(struct vcache *avc, struct AFSFetchStatus *status) } /* - * Enable or disable dynroot. Returns 0 if successful. + * Make sure dynroot initialization has been done. */ int -afs_SetDynrootEnable(int enable) +afs_InitDynroot(void) { + if (afs_dynrootInit) + return 0; RWLOCK_INIT(&afs_dynrootDirLock, "afs_dynrootDirLock"); RWLOCK_INIT(&afs_dynSymlinkLock, "afs_dynSymlinkLock"); - afs_dynrootEnable = enable; + afs_dynrootInit = 0; return afs_dynrootCellInit(); } +/* + * Enable or disable dynroot. Returns 0 if successful. + */ +int +afs_SetDynrootEnable(int enable) +{ + afs_dynrootEnable = enable; + return afs_InitDynroot(); +} + /* * Check if dynroot support is enabled. */ diff --git a/src/afs/afs_dynroot.h b/src/afs/afs_dynroot.h new file mode 100644 index 000000000..e23e26b7b --- /dev/null +++ b/src/afs/afs_dynroot.h @@ -0,0 +1,32 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Vnode numbers in dynroot are composed of a type field (upper 8 bits) + * and a type-specific identifier in the lower 24 bits. + */ +#define VN_TYPE_CELL 0x01 /* Corresponds to a struct cell */ +#define VN_TYPE_ALIAS 0x02 /* Corresponds to a struct cell_alias */ +#define VN_TYPE_SYMLINK 0x03 /* User-created symlink in /afs */ +#define VN_TYPE_MOUNT 0x04 /* Mount point by volume ID */ + +#define VNUM_TO_VNTYPE(vnum) ((vnum) >> 24) +#define VNUM_TO_VNID(vnum) ((vnum) & 0x00ffffff) +#define VNUM_FROM_TYPEID(type, id) \ + ((type) << 24 | (id)) +#define VNUM_TO_CIDX(vnum) (VNUM_TO_VNID(vnum) >> 2) +#define VNUM_TO_RW(vnum) (VNUM_TO_VNID(vnum) >> 1 & 1) +#define VNUM_FROM_CIDX_RW(cidx, rw) \ + VNUM_FROM_TYPEID(VN_TYPE_CELL, \ + ((cidx) << 2 | (rw) << 1)) +#define VNUM_FROM_CAIDX_RW(caidx, rw) \ + VNUM_FROM_TYPEID(VN_TYPE_ALIAS, \ + ((caidx) << 2 | (rw) << 1)) + +#define AFS_DYNROOT_MOUNTNAME ".:mount" diff --git a/src/afs/afs_error.c b/src/afs/afs_error.c new file mode 100644 index 000000000..e70f6ba7c --- /dev/null +++ b/src/afs/afs_error.c @@ -0,0 +1,295 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * Implements: + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_error.c,v 1.1.2.3 2008/04/30 19:08:04 shadow Exp $"); + +#include "afs/stds.h" +#include "afs/sysincludes.h" /* Standard vendor system headers */ + +#ifndef UKERNEL +#if !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV) +#include +#include +#endif + +#ifdef AFS_SGI62_ENV +#include "h/hashing.h" +#endif +#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV) && !defined(AFS_DARWIN60_ENV) +#include +#endif +#endif /* !UKERNEL */ + +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" /* afs statistics */ +#include "afs/afs_util.h" +#include "afs/unified_afs.h" + +#if defined(AFS_SUN56_ENV) +#include +#include +#if defined(AFS_SUN58_ENV) +#include +#endif +#include +#endif + + +/* shouldn't do it this way, but for now will do */ +#ifndef ERROR_TABLE_BASE_U +#define ERROR_TABLE_BASE_U (5376L) +#endif /* ubik error base define */ + +/* shouldn't do it this way, but for now will do */ +#ifndef ERROR_TABLE_BASE_uae +#define ERROR_TABLE_BASE_uae (49733376L) +#endif /* unified afs error base define */ + +/* same hack for vlserver error base as for ubik error base */ +#ifndef ERROR_TABLE_BASE_VL +#define ERROR_TABLE_BASE_VL (363520L) +#define VL_NOENT (363524L) +#endif /* vlserver error base define */ + + +static int et2sys[512]; + +void +init_et_to_sys_error(void) +{ + memset(&et2sys, 0, sizeof(et2sys)); + et2sys[(UAEPERM - ERROR_TABLE_BASE_uae)] = EPERM; + et2sys[(UAENOENT - ERROR_TABLE_BASE_uae)] = ENOENT; + et2sys[(UAESRCH - ERROR_TABLE_BASE_uae)] = ESRCH; + et2sys[(UAEINTR - ERROR_TABLE_BASE_uae)] = EINTR; + et2sys[(UAEIO - ERROR_TABLE_BASE_uae)] = EIO; + et2sys[(UAENXIO - ERROR_TABLE_BASE_uae)] = ENXIO; + et2sys[(UAE2BIG - ERROR_TABLE_BASE_uae)] = E2BIG; + et2sys[(UAENOEXEC - ERROR_TABLE_BASE_uae)] = ENOEXEC; + et2sys[(UAEBADF - ERROR_TABLE_BASE_uae)] = EBADF; + et2sys[(UAECHILD - ERROR_TABLE_BASE_uae)] = ECHILD; + et2sys[(UAEAGAIN - ERROR_TABLE_BASE_uae)] = EAGAIN; + et2sys[(UAENOMEM - ERROR_TABLE_BASE_uae)] = ENOMEM; + et2sys[(UAEACCES - ERROR_TABLE_BASE_uae)] = EACCES; + et2sys[(UAEFAULT - ERROR_TABLE_BASE_uae)] = EFAULT; + et2sys[(UAENOTBLK - ERROR_TABLE_BASE_uae)] = ENOTBLK; + et2sys[(UAEBUSY - ERROR_TABLE_BASE_uae)] = EBUSY; + et2sys[(UAEEXIST - ERROR_TABLE_BASE_uae)] = EEXIST; + et2sys[(UAEXDEV - ERROR_TABLE_BASE_uae)] = EXDEV; + et2sys[(UAENODEV - ERROR_TABLE_BASE_uae)] = ENODEV; + et2sys[(UAENOTDIR - ERROR_TABLE_BASE_uae)] = ENOTDIR; + et2sys[(UAEISDIR - ERROR_TABLE_BASE_uae)] = EISDIR; + et2sys[(UAEINVAL - ERROR_TABLE_BASE_uae)] = EINVAL; + et2sys[(UAENFILE - ERROR_TABLE_BASE_uae)] = ENFILE; + et2sys[(UAEMFILE - ERROR_TABLE_BASE_uae)] = EMFILE; + et2sys[(UAENOTTY - ERROR_TABLE_BASE_uae)] = ENOTTY; + et2sys[(UAETXTBSY - ERROR_TABLE_BASE_uae)] = ETXTBSY; + et2sys[(UAEFBIG - ERROR_TABLE_BASE_uae)] = EFBIG; + et2sys[(UAENOSPC - ERROR_TABLE_BASE_uae)] = ENOSPC; + et2sys[(UAESPIPE - ERROR_TABLE_BASE_uae)] = ESPIPE; + et2sys[(UAEROFS - ERROR_TABLE_BASE_uae)] = EROFS; + et2sys[(UAEMLINK - ERROR_TABLE_BASE_uae)] = EMLINK; + et2sys[(UAEPIPE - ERROR_TABLE_BASE_uae)] = EPIPE; + et2sys[(UAEDOM - ERROR_TABLE_BASE_uae)] = EDOM; + et2sys[(UAERANGE - ERROR_TABLE_BASE_uae)] = ERANGE; + et2sys[(UAEDEADLK - ERROR_TABLE_BASE_uae)] = EDEADLK; + et2sys[(UAENAMETOOLONG - ERROR_TABLE_BASE_uae)] = ENAMETOOLONG; + et2sys[(UAENOLCK - ERROR_TABLE_BASE_uae)] = ENOLCK; + et2sys[(UAENOSYS - ERROR_TABLE_BASE_uae)] = ENOSYS; + et2sys[(UAENOTEMPTY - ERROR_TABLE_BASE_uae)] = ENOTEMPTY; + et2sys[(UAELOOP - ERROR_TABLE_BASE_uae)] = ELOOP; + et2sys[(UAEWOULDBLOCK - ERROR_TABLE_BASE_uae)] = EWOULDBLOCK; + et2sys[(UAENOMSG - ERROR_TABLE_BASE_uae)] = ENOMSG; + et2sys[(UAEIDRM - ERROR_TABLE_BASE_uae)] = EIDRM; + et2sys[(UAECHRNG - ERROR_TABLE_BASE_uae)] = ECHRNG; + et2sys[(UAEL2NSYNC - ERROR_TABLE_BASE_uae)] = EL2NSYNC; + et2sys[(UAEL3HLT - ERROR_TABLE_BASE_uae)] = EL3HLT; + et2sys[(UAEL3RST - ERROR_TABLE_BASE_uae)] = EL3RST; + et2sys[(UAELNRNG - ERROR_TABLE_BASE_uae)] = ELNRNG; + et2sys[(UAEUNATCH - ERROR_TABLE_BASE_uae)] = EUNATCH; + et2sys[(UAENOCSI - ERROR_TABLE_BASE_uae)] = ENOCSI; + et2sys[(UAEL2HLT - ERROR_TABLE_BASE_uae)] = EL2HLT; + et2sys[(UAEBADE - ERROR_TABLE_BASE_uae)] = EBADE; + et2sys[(UAEBADR - ERROR_TABLE_BASE_uae)] = EBADR; + et2sys[(UAEXFULL - ERROR_TABLE_BASE_uae)] = EXFULL; + et2sys[(UAENOANO - ERROR_TABLE_BASE_uae)] = ENOANO; + et2sys[(UAEBADRQC - ERROR_TABLE_BASE_uae)] = EBADRQC; + et2sys[(UAEBADSLT - ERROR_TABLE_BASE_uae)] = EBADSLT; + et2sys[(UAEBFONT - ERROR_TABLE_BASE_uae)] = EBFONT; + et2sys[(UAENOSTR - ERROR_TABLE_BASE_uae)] = ENOSTR; + et2sys[(UAENODATA - ERROR_TABLE_BASE_uae)] = ENODATA; + et2sys[(UAETIME - ERROR_TABLE_BASE_uae)] = ETIME; + et2sys[(UAENOSR - ERROR_TABLE_BASE_uae)] = ENOSR; + et2sys[(UAENONET - ERROR_TABLE_BASE_uae)] = ENONET; + et2sys[(UAENOPKG - ERROR_TABLE_BASE_uae)] = ENOPKG; + et2sys[(UAEREMOTE - ERROR_TABLE_BASE_uae)] = EREMOTE; + et2sys[(UAENOLINK - ERROR_TABLE_BASE_uae)] = ENOLINK; + et2sys[(UAEADV - ERROR_TABLE_BASE_uae)] = EADV; + et2sys[(UAESRMNT - ERROR_TABLE_BASE_uae)] = ESRMNT; + et2sys[(UAECOMM - ERROR_TABLE_BASE_uae)] = ECOMM; + et2sys[(UAEPROTO - ERROR_TABLE_BASE_uae)] = EPROTO; + et2sys[(UAEMULTIHOP - ERROR_TABLE_BASE_uae)] = EMULTIHOP; + et2sys[(UAEDOTDOT - ERROR_TABLE_BASE_uae)] = EDOTDOT; + et2sys[(UAEBADMSG - ERROR_TABLE_BASE_uae)] = EBADMSG; + et2sys[(UAEOVERFLOW - ERROR_TABLE_BASE_uae)] = EOVERFLOW; + et2sys[(UAENOTUNIQ - ERROR_TABLE_BASE_uae)] = ENOTUNIQ; + et2sys[(UAEBADFD - ERROR_TABLE_BASE_uae)] = EBADFD; + et2sys[(UAEREMCHG - ERROR_TABLE_BASE_uae)] = EREMCHG; + et2sys[(UAELIBACC - ERROR_TABLE_BASE_uae)] = ELIBACC; + et2sys[(UAELIBBAD - ERROR_TABLE_BASE_uae)] = ELIBBAD; + et2sys[(UAELIBSCN - ERROR_TABLE_BASE_uae)] = ELIBSCN; + et2sys[(UAELIBMAX - ERROR_TABLE_BASE_uae)] = ELIBMAX; + et2sys[(UAELIBEXEC - ERROR_TABLE_BASE_uae)] = ELIBEXEC; + et2sys[(UAEILSEQ - ERROR_TABLE_BASE_uae)] = EILSEQ; + et2sys[(UAERESTART - ERROR_TABLE_BASE_uae)] = ERESTART; + et2sys[(UAESTRPIPE - ERROR_TABLE_BASE_uae)] = ESTRPIPE; + et2sys[(UAEUSERS - ERROR_TABLE_BASE_uae)] = EUSERS; + et2sys[(UAENOTSOCK - ERROR_TABLE_BASE_uae)] = ENOTSOCK; + et2sys[(UAEDESTADDRREQ - ERROR_TABLE_BASE_uae)] = EDESTADDRREQ; + et2sys[(UAEMSGSIZE - ERROR_TABLE_BASE_uae)] = EMSGSIZE; + et2sys[(UAEPROTOTYPE - ERROR_TABLE_BASE_uae)] = EPROTOTYPE; + et2sys[(UAENOPROTOOPT - ERROR_TABLE_BASE_uae)] = ENOPROTOOPT; + et2sys[(UAEPROTONOSUPPORT - ERROR_TABLE_BASE_uae)] = EPROTONOSUPPORT; + et2sys[(UAESOCKTNOSUPPORT - ERROR_TABLE_BASE_uae)] = ESOCKTNOSUPPORT; + et2sys[(UAEOPNOTSUPP - ERROR_TABLE_BASE_uae)] = EOPNOTSUPP; + et2sys[(UAEPFNOSUPPORT - ERROR_TABLE_BASE_uae)] = EPFNOSUPPORT; + et2sys[(UAEAFNOSUPPORT - ERROR_TABLE_BASE_uae)] = EAFNOSUPPORT; + et2sys[(UAEADDRINUSE - ERROR_TABLE_BASE_uae)] = EADDRINUSE; + et2sys[(UAEADDRNOTAVAIL - ERROR_TABLE_BASE_uae)] = EADDRNOTAVAIL; + et2sys[(UAENETDOWN - ERROR_TABLE_BASE_uae)] = ENETDOWN; + et2sys[(UAENETUNREACH - ERROR_TABLE_BASE_uae)] = ENETUNREACH; + et2sys[(UAENETRESET - ERROR_TABLE_BASE_uae)] = ENETRESET; + et2sys[(UAECONNABORTED - ERROR_TABLE_BASE_uae)] = ECONNABORTED; + et2sys[(UAECONNRESET - ERROR_TABLE_BASE_uae)] = ECONNRESET; + et2sys[(UAENOBUFS - ERROR_TABLE_BASE_uae)] = ENOBUFS; + et2sys[(UAEISCONN - ERROR_TABLE_BASE_uae)] = EISCONN; + et2sys[(UAENOTCONN - ERROR_TABLE_BASE_uae)] = ENOTCONN; + et2sys[(UAESHUTDOWN - ERROR_TABLE_BASE_uae)] = ESHUTDOWN; + et2sys[(UAETOOMANYREFS - ERROR_TABLE_BASE_uae)] = ETOOMANYREFS; + et2sys[(UAETIMEDOUT - ERROR_TABLE_BASE_uae)] = ETIMEDOUT; + et2sys[(UAECONNREFUSED - ERROR_TABLE_BASE_uae)] = ECONNREFUSED; + et2sys[(UAEHOSTDOWN - ERROR_TABLE_BASE_uae)] = EHOSTDOWN; + et2sys[(UAEHOSTUNREACH - ERROR_TABLE_BASE_uae)] = EHOSTUNREACH; + et2sys[(UAEALREADY - ERROR_TABLE_BASE_uae)] = EALREADY; + et2sys[(UAEINPROGRESS - ERROR_TABLE_BASE_uae)] = EINPROGRESS; + et2sys[(UAESTALE - ERROR_TABLE_BASE_uae)] = ESTALE; + et2sys[(UAEUCLEAN - ERROR_TABLE_BASE_uae)] = EUCLEAN; + et2sys[(UAENOTNAM - ERROR_TABLE_BASE_uae)] = ENOTNAM; + et2sys[(UAENAVAIL - ERROR_TABLE_BASE_uae)] = ENAVAIL; + et2sys[(UAEISNAM - ERROR_TABLE_BASE_uae)] = EISNAM; + et2sys[(UAEREMOTEIO - ERROR_TABLE_BASE_uae)] = EREMOTEIO; + et2sys[(UAEDQUOT - ERROR_TABLE_BASE_uae)] = EDQUOT; + et2sys[(UAENOMEDIUM - ERROR_TABLE_BASE_uae)] = ENOMEDIUM; + et2sys[(UAEMEDIUMTYPE - ERROR_TABLE_BASE_uae)] = EMEDIUMTYPE; +} + +afs_int32 +et_to_sys_error(afs_int32 in) +{ + if (in < ERROR_TABLE_BASE_uae || in >= ERROR_TABLE_BASE_uae + 512) + return in; + if (et2sys[in - ERROR_TABLE_BASE_uae] != 0) + return et2sys[in - ERROR_TABLE_BASE_uae]; + return in; +} + +void +afs_CopyError(register struct vrequest *afrom, register struct vrequest *ato) +{ + int i = 0; + AFS_STATCNT(afs_CopyError); + if (!afrom->initd) + return; + afs_FinalizeReq(ato); + while (i < MAXHOSTS) { + ato->skipserver[i] = afrom->skipserver[i]; + i++; + } + if (afrom->tokenError) + ato->tokenError = afrom->tokenError; + if (afrom->idleError) + ato->idleError = afrom->idleError; + if (afrom->accessError) + ato->accessError = 1; + if (afrom->volumeError) + ato->volumeError = 1; + if (afrom->networkError) + ato->networkError = 1; + if (afrom->permWriteError) + ato->permWriteError = 1; + +} + +void +afs_FinalizeReq(register struct vrequest *areq) +{ + int i = 0; + AFS_STATCNT(afs_FinalizeReq); + if (areq->initd) + return; + while (i < MAXHOSTS) { + areq->skipserver[i] = 0; + i++; + } + areq->busyCount = 0; + areq->idleError = 0; + areq->tokenError = 0; + areq->accessError = 0; + areq->volumeError = 0; + areq->networkError = 0; + areq->permWriteError = 0; + areq->initd = 1; + +} + +int +afs_CheckCode(afs_int32 acode, struct vrequest *areq, int where) +{ + AFS_STATCNT(afs_CheckCode); + if (acode) { + afs_Trace2(afs_iclSetp, CM_TRACE_CHECKCODE, ICL_TYPE_INT32, acode, + ICL_TYPE_INT32, where); + } + if ((acode & ~0xff) == ERROR_TABLE_BASE_uae) + acode = et_to_sys_error(acode); + if (!areq || !areq->initd) + return acode; + if (areq->networkError) + return ETIMEDOUT; + if (acode == 0) + return 0; + if (areq->accessError) + return EACCES; + if (areq->volumeError == VOLMISSING) + return ENODEV; + if (areq->volumeError == VOLBUSY) + return EWOULDBLOCK; + if (acode == VNOVNODE) + return ENOENT; + if (acode == VDISKFULL) + return ENOSPC; + if (acode == VOVERQUOTA) + return +#ifdef EDQUOT + EDQUOT +#else + ENOSPC +#endif + ; + + return acode; + +} /*afs_CheckCode */ diff --git a/src/afs/afs_icl.c b/src/afs/afs_icl.c new file mode 100644 index 000000000..49903e2ee --- /dev/null +++ b/src/afs/afs_icl.c @@ -0,0 +1,1527 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_icl.c,v 1.1.2.4 2008/05/20 19:50:41 shadow Exp $"); + +#include "afs/sysincludes.h" /* Standard vendor system headers */ +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" +#include "rx/rx_globals.h" +#if !defined(UKERNEL) && !defined(AFS_LINUX20_ENV) +#include "net/if.h" +#ifdef AFS_SGI62_ENV +#include "h/hashing.h" +#endif +#if !defined(AFS_HPUX110_ENV) && !defined(AFS_DARWIN60_ENV) +#include "netinet/in_var.h" +#endif +#endif /* !defined(UKERNEL) */ +#ifdef AFS_LINUX22_ENV +#include "h/smp_lock.h" +#endif + + +struct afs_icl_set *afs_iclSetp = (struct afs_icl_set *)0; +struct afs_icl_set *afs_iclLongTermSetp = (struct afs_icl_set *)0; + +#if defined(AFS_OSF_ENV) || defined(AFS_SGI61_ENV) +/* For SGI 6.2, this can is changed to 1 if it's a 32 bit kernel. */ +#if defined(AFS_SGI62_ENV) && defined(KERNEL) && !defined(_K64U64) +int afs_icl_sizeofLong = 1; +#else +int afs_icl_sizeofLong = 2; +#endif /* SGI62 */ +#else +#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) +int afs_icl_sizeofLong = 2; +#else +int afs_icl_sizeofLong = 1; +#endif +#endif + +int afs_icl_inited = 0; + +/* init function, called once, under afs_icl_lock */ +int +afs_icl_Init(void) +{ + afs_icl_inited = 1; + return 0; +} + +int +afs_icl_InitLogs(void) +{ + struct afs_icl_log *logp; + int code; + + /* initialize the ICL system */ + code = afs_icl_CreateLog("cmfx", 60 * 1024, &logp); + if (code == 0) + code = + afs_icl_CreateSetWithFlags("cm", logp, NULL, + ICL_CRSET_FLAG_DEFAULT_OFF, + &afs_iclSetp); + code = + afs_icl_CreateSet("cmlongterm", logp, NULL, + &afs_iclLongTermSetp); + return code; +} + + +struct afs_icl_log *afs_icl_FindLog(); +struct afs_icl_set *afs_icl_FindSet(); + + +int +Afscall_icl(long opcode, long p1, long p2, long p3, long p4, long *retval) +{ + afs_int32 *lp, elts, flags; + register afs_int32 code; + struct afs_icl_log *logp; + struct afs_icl_set *setp; +#if defined(AFS_SGI61_ENV) || defined(AFS_SUN57_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + size_t temp; +#else /* AFS_SGI61_ENV */ +#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) + afs_uint64 temp; +#else + afs_uint32 temp; +#endif +#endif /* AFS_SGI61_ENV */ + char tname[65]; + afs_int32 startCookie; + afs_int32 allocated; + struct afs_icl_log *tlp; + +#ifdef AFS_SUN5_ENV + if (!afs_suser(CRED())) { /* only root can run this code */ + return (EACCES); + } +#else + if (!afs_suser(NULL)) { /* only root can run this code */ +#if defined(KERNEL_HAVE_UERROR) + setuerror(EACCES); + return EACCES; +#else + return EPERM; +#endif + } +#endif + switch (opcode) { + case ICL_OP_COPYOUTCLR: /* copy out data then clear */ + case ICL_OP_COPYOUT: /* copy ouy data */ + /* copyout: p1=logname, p2=&buffer, p3=size(words), p4=&cookie + * return flags<<24 + nwords. + * updates cookie to updated start (not end) if we had to + * skip some records. + */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + AFS_COPYIN((char *)p4, (char *)&startCookie, sizeof(afs_int32), code); + if (code) + return code; + logp = afs_icl_FindLog(tname); + if (!logp) + return ENOENT; +#define BUFFERSIZE AFS_LRALLOCSIZ + lp = (afs_int32 *) osi_AllocLargeSpace(AFS_LRALLOCSIZ); + elts = BUFFERSIZE / sizeof(afs_int32); + if (p3 < elts) + elts = p3; + flags = (opcode == ICL_OP_COPYOUT) ? 0 : ICL_COPYOUTF_CLRAFTERREAD; + code = + afs_icl_CopyOut(logp, lp, &elts, (afs_uint32 *) & startCookie, + &flags); + if (code) { + osi_FreeLargeSpace((struct osi_buffer *)lp); + break; + } + AFS_COPYOUT((char *)lp, (char *)p2, elts * sizeof(afs_int32), code); + if (code) + goto done; + AFS_COPYOUT((char *)&startCookie, (char *)p4, sizeof(afs_int32), + code); + if (code) + goto done; +#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) + if (!(IS64U)) + *retval = ((long)((flags << 24) | (elts & 0xffffff))) << 32; + else +#endif + *retval = (flags << 24) | (elts & 0xffffff); + done: + afs_icl_LogRele(logp); + osi_FreeLargeSpace((struct osi_buffer *)lp); + break; + + case ICL_OP_ENUMLOGS: /* enumerate logs */ + /* enumerate logs: p1=index, p2=&name, p3=sizeof(name), p4=&size. + * return 0 for success, otherwise error. + */ + for (tlp = afs_icl_allLogs; tlp; tlp = tlp->nextp) { + if (p1-- == 0) + break; + } + if (!tlp) + return ENOENT; /* past the end of file */ + temp = strlen(tlp->name) + 1; + if (temp > p3) + return EINVAL; + AFS_COPYOUT(tlp->name, (char *)p2, temp, code); + if (!code) /* copy out size of log */ + AFS_COPYOUT((char *)&tlp->logSize, (char *)p4, sizeof(afs_int32), + code); + break; + + case ICL_OP_ENUMLOGSBYSET: /* enumerate logs by set name */ + /* enumerate logs: p1=setname, p2=index, p3=&name, p4=sizeof(name). + * return 0 for success, otherwise error. + */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + setp = afs_icl_FindSet(tname); + if (!setp) + return ENOENT; + if (p2 > ICL_LOGSPERSET) + return EINVAL; + if (!(tlp = setp->logs[p2])) + return EBADF; + temp = strlen(tlp->name) + 1; + if (temp > p4) + return EINVAL; + AFS_COPYOUT(tlp->name, (char *)p3, temp, code); + break; + + case ICL_OP_CLRLOG: /* clear specified log */ + /* zero out the specified log: p1=logname */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + logp = afs_icl_FindLog(tname); + if (!logp) + return ENOENT; + code = afs_icl_ZeroLog(logp); + afs_icl_LogRele(logp); + break; + + case ICL_OP_CLRSET: /* clear specified set */ + /* zero out the specified set: p1=setname */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + setp = afs_icl_FindSet(tname); + if (!setp) + return ENOENT; + code = afs_icl_ZeroSet(setp); + afs_icl_SetRele(setp); + break; + + case ICL_OP_CLRALL: /* clear all logs */ + /* zero out all logs -- no args */ + code = 0; + ObtainWriteLock(&afs_icl_lock, 178); + for (tlp = afs_icl_allLogs; tlp; tlp = tlp->nextp) { + tlp->refCount++; /* hold this guy */ + ReleaseWriteLock(&afs_icl_lock); + /* don't clear persistent logs */ + if ((tlp->states & ICL_LOGF_PERSISTENT) == 0) + code = afs_icl_ZeroLog(tlp); + ObtainWriteLock(&afs_icl_lock, 179); + if (--tlp->refCount == 0) + afs_icl_ZapLog(tlp); + if (code) + break; + } + ReleaseWriteLock(&afs_icl_lock); + break; + + case ICL_OP_ENUMSETS: /* enumerate all sets */ + /* enumerate sets: p1=index, p2=&name, p3=sizeof(name), p4=&states. + * return 0 for success, otherwise error. + */ + for (setp = afs_icl_allSets; setp; setp = setp->nextp) { + if (p1-- == 0) + break; + } + if (!setp) + return ENOENT; /* past the end of file */ + temp = strlen(setp->name) + 1; + if (temp > p3) + return EINVAL; + AFS_COPYOUT(setp->name, (char *)p2, temp, code); + if (!code) /* copy out size of log */ + AFS_COPYOUT((char *)&setp->states, (char *)p4, sizeof(afs_int32), + code); + break; + + case ICL_OP_SETSTAT: /* set status on a set */ + /* activate the specified set: p1=setname, p2=op */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + setp = afs_icl_FindSet(tname); + if (!setp) + return ENOENT; + code = afs_icl_SetSetStat(setp, p2); + afs_icl_SetRele(setp); + break; + + case ICL_OP_SETSTATALL: /* set status on all sets */ + /* activate the specified set: p1=op */ + code = 0; + ObtainWriteLock(&afs_icl_lock, 180); + for (setp = afs_icl_allSets; setp; setp = setp->nextp) { + setp->refCount++; /* hold this guy */ + ReleaseWriteLock(&afs_icl_lock); + /* don't set states on persistent sets */ + if ((setp->states & ICL_SETF_PERSISTENT) == 0) + code = afs_icl_SetSetStat(setp, p1); + ObtainWriteLock(&afs_icl_lock, 181); + if (--setp->refCount == 0) + afs_icl_ZapSet(setp); + if (code) + break; + } + ReleaseWriteLock(&afs_icl_lock); + break; + + case ICL_OP_SETLOGSIZE: /* set size of log */ + /* set the size of the specified log: p1=logname, p2=size (in words) */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + logp = afs_icl_FindLog(tname); + if (!logp) + return ENOENT; + code = afs_icl_LogSetSize(logp, p2); + afs_icl_LogRele(logp); + break; + + case ICL_OP_GETLOGINFO: /* get size of log */ + /* zero out the specified log: p1=logname, p2=&logSize, p3=&allocated */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + logp = afs_icl_FindLog(tname); + if (!logp) + return ENOENT; + allocated = !!logp->datap; + AFS_COPYOUT((char *)&logp->logSize, (char *)p2, sizeof(afs_int32), + code); + if (!code) + AFS_COPYOUT((char *)&allocated, (char *)p3, sizeof(afs_int32), + code); + afs_icl_LogRele(logp); + break; + + case ICL_OP_GETSETINFO: /* get state of set */ + /* zero out the specified set: p1=setname, p2=&state */ + AFS_COPYINSTR((char *)p1, tname, sizeof(tname), &temp, code); + if (code) + return code; + setp = afs_icl_FindSet(tname); + if (!setp) + return ENOENT; + AFS_COPYOUT((char *)&setp->states, (char *)p2, sizeof(afs_int32), + code); + afs_icl_SetRele(setp); + break; + + default: + code = EINVAL; + } + + return code; +} + + +afs_lock_t afs_icl_lock; + +/* exported routine: a 4 parameter event */ +int +afs_icl_Event4(register struct afs_icl_set *setp, afs_int32 eventID, + afs_int32 lAndT, long p1, long p2, long p3, long p4) +{ + afs_int32 mask; + register int i; + register afs_int32 tmask; + int ix; + + /* If things aren't init'ed yet (or the set is inactive), don't panic */ + if (!ICL_SETACTIVE(setp)) + return 0; + + AFS_ASSERT_GLOCK(); + mask = lAndT >> 24 & 0xff; /* mask of which logs to log to */ + ix = ICL_EVENTBYTE(eventID); + ObtainReadLock(&setp->lock); + if (setp->eventFlags[ix] & ICL_EVENTMASK(eventID)) { + for (i = 0, tmask = 1; i < ICL_LOGSPERSET; i++, tmask <<= 1) { + if (mask & tmask) { + afs_icl_AppendRecord(setp->logs[i], eventID, lAndT & 0xffffff, + p1, p2, p3, p4); + } + mask &= ~tmask; + if (mask == 0) + break; /* break early */ + } + } + ReleaseReadLock(&setp->lock); + return 0; +} + +/* Next 4 routines should be implemented via var-args or something. + * Whole purpose is to avoid compiler warnings about parameter # mismatches. + * Otherwise, could call afs_icl_Event4 directly. + */ +int +afs_icl_Event3(register struct afs_icl_set *setp, afs_int32 eventID, + afs_int32 lAndT, long p1, long p2, long p3) +{ + return afs_icl_Event4(setp, eventID, lAndT, p1, p2, p3, (long)0); +} + +int +afs_icl_Event2(register struct afs_icl_set *setp, afs_int32 eventID, + afs_int32 lAndT, long p1, long p2) +{ + return afs_icl_Event4(setp, eventID, lAndT, p1, p2, (long)0, (long)0); +} + +int +afs_icl_Event1(register struct afs_icl_set *setp, afs_int32 eventID, + afs_int32 lAndT, long p1) +{ + return afs_icl_Event4(setp, eventID, lAndT, p1, (long)0, (long)0, + (long)0); +} + +int +afs_icl_Event0(register struct afs_icl_set *setp, afs_int32 eventID, + afs_int32 lAndT) +{ + return afs_icl_Event4(setp, eventID, lAndT, (long)0, (long)0, (long)0, + (long)0); +} + +struct afs_icl_log *afs_icl_allLogs = 0; + +/* function to purge records from the start of the log, until there + * is at least minSpace long's worth of space available without + * making the head and the tail point to the same word. + * + * Log must be write-locked. + */ +static void +afs_icl_GetLogSpace(register struct afs_icl_log *logp, afs_int32 minSpace) +{ + register unsigned int tsize; + + while (logp->logSize - logp->logElements <= minSpace) { + /* eat a record */ + tsize = ((logp->datap[logp->firstUsed]) >> 24) & 0xff; + logp->logElements -= tsize; + logp->firstUsed += tsize; + if (logp->firstUsed >= logp->logSize) + logp->firstUsed -= logp->logSize; + logp->baseCookie += tsize; + } +} + +/* append string astr to buffer, including terminating null char. + * + * log must be write-locked. + */ +#define ICL_CHARSPERLONG 4 +static void +afs_icl_AppendString(struct afs_icl_log *logp, char *astr) +{ + char *op; /* ptr to char to write */ + int tc; + register int bib; /* bytes in buffer */ + + bib = 0; + op = (char *)&(logp->datap[logp->firstFree]); + while (1) { + tc = *astr++; + *op++ = tc; + if (++bib >= ICL_CHARSPERLONG) { + /* new word */ + bib = 0; + if (++(logp->firstFree) >= logp->logSize) { + logp->firstFree = 0; + op = (char *)&(logp->datap[0]); + } + logp->logElements++; + } + if (tc == 0) + break; + } + if (bib > 0) { + /* if we've used this word at all, allocate it */ + if (++(logp->firstFree) >= logp->logSize) { + logp->firstFree = 0; + } + logp->logElements++; + } +} + +/* add a long to the log, ignoring overflow (checked already) */ +#define ICL_APPENDINT32(lp, x) \ + MACRO_BEGIN \ + (lp)->datap[(lp)->firstFree] = (x); \ + if (++((lp)->firstFree) >= (lp)->logSize) { \ + (lp)->firstFree = 0; \ + } \ + (lp)->logElements++; \ + MACRO_END + +#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) +#define ICL_APPENDLONG(lp, x) \ + MACRO_BEGIN \ + ICL_APPENDINT32((lp), ((x) >> 32) & 0xffffffffL); \ + ICL_APPENDINT32((lp), (x) & 0xffffffffL); \ + MACRO_END + +#else /* AFS_OSF_ENV */ +#define ICL_APPENDLONG(lp, x) ICL_APPENDINT32((lp), (x)) +#endif /* AFS_OSF_ENV */ + +/* routine to tell whether we're dealing with the address or the + * object itself + */ +int +afs_icl_UseAddr(int type) +{ + if (type == ICL_TYPE_HYPER || type == ICL_TYPE_STRING + || type == ICL_TYPE_FID || type == ICL_TYPE_INT64) + return 1; + else + return 0; +} + +/* Function to append a record to the log. Written for speed + * since we know that we're going to have to make this work fast + * pretty soon, anyway. The log must be unlocked. + */ + +void +afs_icl_AppendRecord(register struct afs_icl_log *logp, afs_int32 op, + afs_int32 types, long p1, long p2, long p3, long p4) +{ + int rsize; /* record size in longs */ + register int tsize; /* temp size */ + osi_timeval_t tv; + int t1, t2, t3, t4; + + t4 = types & 0x3f; /* decode types */ + types >>= 6; + t3 = types & 0x3f; + types >>= 6; + t2 = types & 0x3f; + types >>= 6; + t1 = types & 0x3f; + + osi_GetTime(&tv); /* It panics for solaris if inside */ + ObtainWriteLock(&logp->lock, 182); + if (!logp->datap) { + ReleaseWriteLock(&logp->lock); + return; + } + + /* get timestamp as # of microseconds since some time that doesn't + * change that often. This algorithm ticks over every 20 minutes + * or so (1000 seconds). Write a timestamp record if it has. + */ + if (tv.tv_sec - logp->lastTS > 1024) { + /* the timer has wrapped -- write a timestamp record */ + if (logp->logSize - logp->logElements <= 5) + afs_icl_GetLogSpace(logp, 5); + + ICL_APPENDINT32(logp, + (afs_int32) (5 << 24) + (ICL_TYPE_UNIXDATE << 18)); + ICL_APPENDINT32(logp, (afs_int32) ICL_INFO_TIMESTAMP); + ICL_APPENDINT32(logp, (afs_int32) 0); /* use thread ID zero for clocks */ + ICL_APPENDINT32(logp, + (afs_int32) (tv.tv_sec & 0x3ff) * 1000000 + + tv.tv_usec); + ICL_APPENDINT32(logp, (afs_int32) tv.tv_sec); + + logp->lastTS = tv.tv_sec; + } + + rsize = 4; /* base case */ + if (t1) { + /* compute size of parameter p1. Only tricky case is string. + * In that case, we have to call strlen to get the string length. + */ + ICL_SIZEHACK(t1, p1); + } + if (t2) { + /* compute size of parameter p2. Only tricky case is string. + * In that case, we have to call strlen to get the string length. + */ + ICL_SIZEHACK(t2, p2); + } + if (t3) { + /* compute size of parameter p3. Only tricky case is string. + * In that case, we have to call strlen to get the string length. + */ + ICL_SIZEHACK(t3, p3); + } + if (t4) { + /* compute size of parameter p4. Only tricky case is string. + * In that case, we have to call strlen to get the string length. + */ + ICL_SIZEHACK(t4, p4); + } + + /* At this point, we've computed all of the parameter sizes, and + * have in rsize the size of the entire record we want to append. + * Next, we check that we actually have room in the log to do this + * work, and then we do the append. + */ + if (rsize > 255) { + ReleaseWriteLock(&logp->lock); + return; /* log record too big to express */ + } + + if (logp->logSize - logp->logElements <= rsize) + afs_icl_GetLogSpace(logp, rsize); + + ICL_APPENDINT32(logp, + (afs_int32) (rsize << 24) + (t1 << 18) + (t2 << 12) + + (t3 << 6) + t4); + ICL_APPENDINT32(logp, (afs_int32) op); + ICL_APPENDINT32(logp, (afs_int32) osi_ThreadUnique()); + ICL_APPENDINT32(logp, + (afs_int32) (tv.tv_sec & 0x3ff) * 1000000 + tv.tv_usec); + + if (t1) { + /* marshall parameter 1 now */ + if (t1 == ICL_TYPE_STRING) { + afs_icl_AppendString(logp, (char *)p1); + } else if (t1 == ICL_TYPE_HYPER) { + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p1)->high); + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p1)->low); + } else if (t1 == ICL_TYPE_INT64) { +#ifndef WORDS_BIGENDIAN +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) p1); + ICL_APPENDINT32(logp, (afs_int32) 0); +#endif /* AFS_64BIT_CLIENT */ +#else /* AFSLITTLE_ENDIAN */ +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) 0); + ICL_APPENDINT32(logp, (afs_int32) p1); +#endif /* AFS_64BIT_CLIENT */ +#endif /* AFSLITTLE_ENDIAN */ + } else if (t1 == ICL_TYPE_FID) { + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[2]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[3]); + } +#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) + else if (t1 == ICL_TYPE_INT32) + ICL_APPENDINT32(logp, (afs_int32) p1); +#endif /* AFS_OSF_ENV */ + else + ICL_APPENDLONG(logp, p1); + } + if (t2) { + /* marshall parameter 2 now */ + if (t2 == ICL_TYPE_STRING) + afs_icl_AppendString(logp, (char *)p2); + else if (t2 == ICL_TYPE_HYPER) { + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p2)->high); + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p2)->low); + } else if (t2 == ICL_TYPE_INT64) { +#ifndef WORDS_BIGENDIAN +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) p2); + ICL_APPENDINT32(logp, (afs_int32) 0); +#endif /* AFS_64BIT_CLIENT */ +#else /* AFSLITTLE_ENDIAN */ +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) 0); + ICL_APPENDINT32(logp, (afs_int32) p2); +#endif /* AFS_64BIT_CLIENT */ +#endif /* AFSLITTLE_ENDIAN */ + } else if (t2 == ICL_TYPE_FID) { + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[2]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[3]); + } +#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) + else if (t2 == ICL_TYPE_INT32) + ICL_APPENDINT32(logp, (afs_int32) p2); +#endif /* AFS_OSF_ENV */ + else + ICL_APPENDLONG(logp, p2); + } + if (t3) { + /* marshall parameter 3 now */ + if (t3 == ICL_TYPE_STRING) + afs_icl_AppendString(logp, (char *)p3); + else if (t3 == ICL_TYPE_HYPER) { + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p3)->high); + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p3)->low); + } else if (t3 == ICL_TYPE_INT64) { +#ifndef WORDS_BIGENDIAN +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) p3); + ICL_APPENDINT32(logp, (afs_int32) 0); +#endif /* AFS_64BIT_CLIENT */ +#else /* AFSLITTLE_ENDIAN */ +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) 0); + ICL_APPENDINT32(logp, (afs_int32) p3); +#endif /* AFS_64BIT_CLIENT */ +#endif /* AFSLITTLE_ENDIAN */ + } else if (t3 == ICL_TYPE_FID) { + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[2]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[3]); + } +#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) + else if (t3 == ICL_TYPE_INT32) + ICL_APPENDINT32(logp, (afs_int32) p3); +#endif /* AFS_OSF_ENV */ + else + ICL_APPENDLONG(logp, p3); + } + if (t4) { + /* marshall parameter 4 now */ + if (t4 == ICL_TYPE_STRING) + afs_icl_AppendString(logp, (char *)p4); + else if (t4 == ICL_TYPE_HYPER) { + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p4)->high); + ICL_APPENDINT32(logp, + (afs_int32) ((struct afs_hyper_t *)p4)->low); + } else if (t4 == ICL_TYPE_INT64) { +#ifndef WORDS_BIGENDIAN +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) p4); + ICL_APPENDINT32(logp, (afs_int32) 0); +#endif /* AFS_64BIT_CLIENT */ +#else /* AFSLITTLE_ENDIAN */ +#ifdef AFS_64BIT_CLIENT + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]); +#else /* AFS_64BIT_CLIENT */ + ICL_APPENDINT32(logp, (afs_int32) 0); + ICL_APPENDINT32(logp, (afs_int32) p4); +#endif /* AFS_64BIT_CLIENT */ +#endif /* AFSLITTLE_ENDIAN */ + } else if (t4 == ICL_TYPE_FID) { + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[2]); + ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[3]); + } +#if defined(AFS_OSF_ENV) || (defined(AFS_SGI61_ENV) && (_MIPS_SZLONG==64)) || (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) + else if (t4 == ICL_TYPE_INT32) + ICL_APPENDINT32(logp, (afs_int32) p4); +#endif /* AFS_OSF_ENV */ + else + ICL_APPENDLONG(logp, p4); + } + ReleaseWriteLock(&logp->lock); +} + +/* create a log with size logSize; return it in *outLogpp and tag + * it with name "name." + */ +int +afs_icl_CreateLog(char *name, afs_int32 logSize, + struct afs_icl_log **outLogpp) +{ + return afs_icl_CreateLogWithFlags(name, logSize, /*flags */ 0, outLogpp); +} + +/* create a log with size logSize; return it in *outLogpp and tag + * it with name "name." 'flags' can be set to make the log unclearable. + */ +int +afs_icl_CreateLogWithFlags(char *name, afs_int32 logSize, afs_uint32 flags, + struct afs_icl_log **outLogpp) +{ + register struct afs_icl_log *logp; + + /* add into global list under lock */ + ObtainWriteLock(&afs_icl_lock, 183); + if (!afs_icl_inited) + afs_icl_Init(); + + for (logp = afs_icl_allLogs; logp; logp = logp->nextp) { + if (strcmp(logp->name, name) == 0) { + /* found it already created, just return it */ + logp->refCount++; + *outLogpp = logp; + if (flags & ICL_CRLOG_FLAG_PERSISTENT) { + ObtainWriteLock(&logp->lock, 184); + logp->states |= ICL_LOGF_PERSISTENT; + ReleaseWriteLock(&logp->lock); + } + ReleaseWriteLock(&afs_icl_lock); + return 0; + } + } + + logp = (struct afs_icl_log *) + osi_AllocSmallSpace(sizeof(struct afs_icl_log)); + memset((caddr_t) logp, 0, sizeof(*logp)); + + logp->refCount = 1; + logp->name = osi_AllocSmallSpace(strlen(name) + 1); + strcpy(logp->name, name); + LOCK_INIT(&logp->lock, "logp lock"); + logp->logSize = logSize; + logp->datap = NULL; /* don't allocate it until we need it */ + + if (flags & ICL_CRLOG_FLAG_PERSISTENT) + logp->states |= ICL_LOGF_PERSISTENT; + + logp->nextp = afs_icl_allLogs; + afs_icl_allLogs = logp; + ReleaseWriteLock(&afs_icl_lock); + + *outLogpp = logp; + return 0; +} + +/* called with a log, a pointer to a buffer, the size of the buffer + * (in *bufSizep), the starting cookie (in *cookiep, use 0 at the start) + * and returns data in the provided buffer, and returns output flags + * in *flagsp. The flag ICL_COPYOUTF_MISSEDSOME is set if we can't + * find the record with cookie value cookie. + */ +int +afs_icl_CopyOut(register struct afs_icl_log *logp, afs_int32 * bufferp, + afs_int32 * bufSizep, afs_uint32 * cookiep, + afs_int32 * flagsp) +{ + afs_int32 nwords; /* number of words to copy out */ + afs_uint32 startCookie; /* first cookie to use */ + afs_int32 outWords; /* words we've copied out */ + afs_int32 inWords; /* max words to copy out */ + afs_int32 code; /* return code */ + afs_int32 ix; /* index we're copying from */ + afs_int32 outFlags; /* return flags */ + afs_int32 inFlags; /* flags passed in */ + afs_int32 end; + + inWords = *bufSizep; /* max to copy out */ + outWords = 0; /* amount copied out */ + startCookie = *cookiep; + outFlags = 0; + inFlags = *flagsp; + code = 0; + + ObtainWriteLock(&logp->lock, 185); + if (!logp->datap) { + ReleaseWriteLock(&logp->lock); + goto done; + } + + /* first, compute the index of the start cookie we've been passed */ + while (1) { + /* (re-)compute where we should start */ + if (startCookie < logp->baseCookie) { + if (startCookie) /* missed some output */ + outFlags |= ICL_COPYOUTF_MISSEDSOME; + /* skip to the first available record */ + startCookie = logp->baseCookie; + *cookiep = startCookie; + } + + /* compute where we find the first element to copy out */ + ix = logp->firstUsed + startCookie - logp->baseCookie; + if (ix >= logp->logSize) + ix -= logp->logSize; + + /* if have some data now, break out and process it */ + if (startCookie - logp->baseCookie < logp->logElements) + break; + + /* At end of log, so clear it if we need to */ + if (inFlags & ICL_COPYOUTF_CLRAFTERREAD) { + logp->firstUsed = logp->firstFree = 0; + logp->logElements = 0; + } + /* otherwise, either wait for the data to arrive, or return */ + if (!(inFlags & ICL_COPYOUTF_WAITIO)) { + ReleaseWriteLock(&logp->lock); + code = 0; + goto done; + } + logp->states |= ICL_LOGF_WAITING; + ReleaseWriteLock(&logp->lock); + afs_osi_Sleep(&logp->lock); + ObtainWriteLock(&logp->lock, 186); + } + /* copy out data from ix to logSize or firstFree, depending + * upon whether firstUsed <= firstFree (no wrap) or otherwise. + * be careful not to copy out more than nwords. + */ + if (ix >= logp->firstUsed) { + if (logp->firstUsed <= logp->firstFree) + /* no wrapping */ + end = logp->firstFree; /* first element not to copy */ + else + end = logp->logSize; + nwords = inWords; /* don't copy more than this */ + if (end - ix < nwords) + nwords = end - ix; + if (nwords > 0) { + memcpy((char *)bufferp, (char *)&logp->datap[ix], + sizeof(afs_int32) * nwords); + outWords += nwords; + inWords -= nwords; + bufferp += nwords; + } + /* if we're going to copy more out below, we'll start here */ + ix = 0; + } + /* now, if active part of the log has wrapped, there's more stuff + * starting at the head of the log. Copy out more from there. + */ + if (logp->firstUsed > logp->firstFree && ix < logp->firstFree + && inWords > 0) { + /* (more to) copy out from the wrapped section at the + * start of the log. May get here even if didn't copy any + * above, if the cookie points directly into the wrapped section. + */ + nwords = inWords; + if (logp->firstFree - ix < nwords) + nwords = logp->firstFree - ix; + memcpy((char *)bufferp, (char *)&logp->datap[ix], + sizeof(afs_int32) * nwords); + outWords += nwords; + inWords -= nwords; + bufferp += nwords; + } + + ReleaseWriteLock(&logp->lock); + + done: + if (code == 0) { + *bufSizep = outWords; + *flagsp = outFlags; + } + return code; +} + +/* return basic parameter information about a log */ +int +afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, + afs_int32 * curSizep) +{ + ObtainReadLock(&logp->lock); + *maxSizep = logp->logSize; + *curSizep = logp->logElements; + ReleaseReadLock(&logp->lock); + return 0; +} + + +/* hold and release logs */ +int +afs_icl_LogHold(register struct afs_icl_log *logp) +{ + ObtainWriteLock(&afs_icl_lock, 187); + logp->refCount++; + ReleaseWriteLock(&afs_icl_lock); + return 0; +} + +/* hold and release logs, called with lock already held */ +int +afs_icl_LogHoldNL(register struct afs_icl_log *logp) +{ + logp->refCount++; + return 0; +} + +/* keep track of how many sets believe the log itself is allocated */ +int +afs_icl_LogUse(register struct afs_icl_log *logp) +{ + ObtainWriteLock(&logp->lock, 188); + if (logp->setCount == 0) { + /* this is the first set actually using the log -- allocate it */ + if (logp->logSize == 0) { + /* we weren't passed in a hint and it wasn't set */ + logp->logSize = ICL_DEFAULT_LOGSIZE; + } + logp->datap = + (afs_int32 *) afs_osi_Alloc(sizeof(afs_int32) * logp->logSize); +#ifdef KERNEL_HAVE_PIN + pin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); +#endif + } + logp->setCount++; + ReleaseWriteLock(&logp->lock); + return 0; +} + +/* decrement the number of real users of the log, free if possible */ +int +afs_icl_LogFreeUse(register struct afs_icl_log *logp) +{ + ObtainWriteLock(&logp->lock, 189); + if (--logp->setCount == 0) { + /* no more users -- free it (but keep log structure around) */ + afs_osi_Free(logp->datap, sizeof(afs_int32) * logp->logSize); +#ifdef KERNEL_HAVE_PIN + unpin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); +#endif + logp->firstUsed = logp->firstFree = 0; + logp->logElements = 0; + logp->datap = NULL; + } + ReleaseWriteLock(&logp->lock); + return 0; +} + +/* set the size of the log to 'logSize' */ +int +afs_icl_LogSetSize(register struct afs_icl_log *logp, afs_int32 logSize) +{ + ObtainWriteLock(&logp->lock, 190); + if (!logp->datap) { + /* nothing to worry about since it's not allocated */ + logp->logSize = logSize; + } else { + /* reset log */ + logp->firstUsed = logp->firstFree = 0; + logp->logElements = 0; + + /* free and allocate a new one */ + afs_osi_Free(logp->datap, sizeof(afs_int32) * logp->logSize); +#ifdef KERNEL_HAVE_PIN + unpin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); +#endif + logp->datap = + (afs_int32 *) afs_osi_Alloc(sizeof(afs_int32) * logSize); +#ifdef KERNEL_HAVE_PIN + pin((char *)logp->datap, sizeof(afs_int32) * logSize); +#endif + logp->logSize = logSize; + } + ReleaseWriteLock(&logp->lock); + + return 0; +} + +/* free a log. Called with afs_icl_lock locked. */ +int +afs_icl_ZapLog(register struct afs_icl_log *logp) +{ + register struct afs_icl_log **lpp, *tp; + + for (lpp = &afs_icl_allLogs, tp = *lpp; tp; lpp = &tp->nextp, tp = *lpp) { + if (tp == logp) { + /* found the dude we want to remove */ + *lpp = logp->nextp; + osi_FreeSmallSpace(logp->name); + afs_osi_Free(logp->datap, sizeof(afs_int32) * logp->logSize); +#ifdef KERNEL_HAVE_PIN + unpin((char *)logp->datap, sizeof(afs_int32) * logp->logSize); +#endif + osi_FreeSmallSpace(logp); + break; /* won't find it twice */ + } + } + return 0; +} + +/* do the release, watching for deleted entries */ +int +afs_icl_LogRele(register struct afs_icl_log *logp) +{ + ObtainWriteLock(&afs_icl_lock, 191); + if (--logp->refCount == 0 && (logp->states & ICL_LOGF_DELETED)) { + afs_icl_ZapLog(logp); /* destroys logp's lock! */ + } + ReleaseWriteLock(&afs_icl_lock); + return 0; +} + +/* do the release, watching for deleted entries, log already held */ +int +afs_icl_LogReleNL(register struct afs_icl_log *logp) +{ + if (--logp->refCount == 0 && (logp->states & ICL_LOGF_DELETED)) { + afs_icl_ZapLog(logp); /* destroys logp's lock! */ + } + return 0; +} + +/* zero out the log */ +int +afs_icl_ZeroLog(register struct afs_icl_log *logp) +{ + ObtainWriteLock(&logp->lock, 192); + logp->firstUsed = logp->firstFree = 0; + logp->logElements = 0; + logp->baseCookie = 0; + ReleaseWriteLock(&logp->lock); + return 0; +} + +/* free a log entry, and drop its reference count */ +int +afs_icl_LogFree(register struct afs_icl_log *logp) +{ + ObtainWriteLock(&logp->lock, 193); + logp->states |= ICL_LOGF_DELETED; + ReleaseWriteLock(&logp->lock); + afs_icl_LogRele(logp); + return 0; +} + +/* find a log by name, returning it held */ +struct afs_icl_log * +afs_icl_FindLog(char *name) +{ + register struct afs_icl_log *tp; + ObtainWriteLock(&afs_icl_lock, 194); + for (tp = afs_icl_allLogs; tp; tp = tp->nextp) { + if (strcmp(tp->name, name) == 0) { + /* this is the dude we want */ + tp->refCount++; + break; + } + } + ReleaseWriteLock(&afs_icl_lock); + return tp; +} + +int +afs_icl_EnumerateLogs(int (*aproc) + (char *name, char *arock, struct afs_icl_log * tp), + char *arock) +{ + register struct afs_icl_log *tp; + register afs_int32 code; + + code = 0; + ObtainWriteLock(&afs_icl_lock, 195); + for (tp = afs_icl_allLogs; tp; tp = tp->nextp) { + tp->refCount++; /* hold this guy */ + ReleaseWriteLock(&afs_icl_lock); + ObtainReadLock(&tp->lock); + code = (*aproc) (tp->name, arock, tp); + ReleaseReadLock(&tp->lock); + ObtainWriteLock(&afs_icl_lock, 196); + if (--tp->refCount == 0) + afs_icl_ZapLog(tp); + if (code) + break; + } + ReleaseWriteLock(&afs_icl_lock); + return code; +} + +struct afs_icl_set *afs_icl_allSets = 0; + +int +afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, + struct afs_icl_log *fatalLogp, + struct afs_icl_set **outSetpp) +{ + return afs_icl_CreateSetWithFlags(name, baseLogp, fatalLogp, + /*flags */ 0, outSetpp); +} + +/* create a set, given pointers to base and fatal logs, if any. + * Logs are unlocked, but referenced, and *outSetpp is returned + * referenced. Function bumps reference count on logs, since it + * addds references from the new afs_icl_set. When the set is destroyed, + * those references will be released. + */ +int +afs_icl_CreateSetWithFlags(char *name, struct afs_icl_log *baseLogp, + struct afs_icl_log *fatalLogp, afs_uint32 flags, + struct afs_icl_set **outSetpp) +{ + register struct afs_icl_set *setp; + register int i; + afs_int32 states = ICL_DEFAULT_SET_STATES; + + ObtainWriteLock(&afs_icl_lock, 197); + if (!afs_icl_inited) + afs_icl_Init(); + + for (setp = afs_icl_allSets; setp; setp = setp->nextp) { + if (strcmp(setp->name, name) == 0) { + setp->refCount++; + *outSetpp = setp; + if (flags & ICL_CRSET_FLAG_PERSISTENT) { + ObtainWriteLock(&setp->lock, 198); + setp->states |= ICL_SETF_PERSISTENT; + ReleaseWriteLock(&setp->lock); + } + ReleaseWriteLock(&afs_icl_lock); + return 0; + } + } + + /* determine initial state */ + if (flags & ICL_CRSET_FLAG_DEFAULT_ON) + states = ICL_SETF_ACTIVE; + else if (flags & ICL_CRSET_FLAG_DEFAULT_OFF) + states = ICL_SETF_FREED; + if (flags & ICL_CRSET_FLAG_PERSISTENT) + states |= ICL_SETF_PERSISTENT; + + setp = (struct afs_icl_set *)afs_osi_Alloc(sizeof(struct afs_icl_set)); + memset((caddr_t) setp, 0, sizeof(*setp)); + setp->refCount = 1; + if (states & ICL_SETF_FREED) + states &= ~ICL_SETF_ACTIVE; /* if freed, can't be active */ + setp->states = states; + + LOCK_INIT(&setp->lock, "setp lock"); + /* next lock is obtained in wrong order, hierarchy-wise, but + * it doesn't matter, since no one can find this lock yet, since + * the afs_icl_lock is still held, and thus the obtain can't block. + */ + ObtainWriteLock(&setp->lock, 199); + setp->name = osi_AllocSmallSpace(strlen(name) + 1); + strcpy(setp->name, name); + setp->nevents = ICL_DEFAULTEVENTS; + setp->eventFlags = afs_osi_Alloc(ICL_DEFAULTEVENTS); +#ifdef KERNEL_HAVE_PIN + pin((char *)setp->eventFlags, ICL_DEFAULTEVENTS); +#endif + for (i = 0; i < ICL_DEFAULTEVENTS; i++) + setp->eventFlags[i] = 0xff; /* default to enabled */ + + /* update this global info under the afs_icl_lock */ + setp->nextp = afs_icl_allSets; + afs_icl_allSets = setp; + ReleaseWriteLock(&afs_icl_lock); + + /* set's basic lock is still held, so we can finish init */ + if (baseLogp) { + setp->logs[0] = baseLogp; + afs_icl_LogHold(baseLogp); + if (!(setp->states & ICL_SETF_FREED)) + afs_icl_LogUse(baseLogp); /* log is actually being used */ + } + if (fatalLogp) { + setp->logs[1] = fatalLogp; + afs_icl_LogHold(fatalLogp); + if (!(setp->states & ICL_SETF_FREED)) + afs_icl_LogUse(fatalLogp); /* log is actually being used */ + } + ReleaseWriteLock(&setp->lock); + + *outSetpp = setp; + return 0; +} + +/* function to change event enabling information for a particular set */ +int +afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, int setValue) +{ + char *tp; + + ObtainWriteLock(&setp->lock, 200); + if (!ICL_EVENTOK(setp, eventID)) { + ReleaseWriteLock(&setp->lock); + return -1; + } + tp = &setp->eventFlags[ICL_EVENTBYTE(eventID)]; + if (setValue) + *tp |= ICL_EVENTMASK(eventID); + else + *tp &= ~(ICL_EVENTMASK(eventID)); + ReleaseWriteLock(&setp->lock); + return 0; +} + +/* return indication of whether a particular event ID is enabled + * for tracing. If *getValuep is set to 0, the event is disabled, + * otherwise it is enabled. All events start out enabled by default. + */ +int +afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, int *getValuep) +{ + ObtainReadLock(&setp->lock); + if (!ICL_EVENTOK(setp, eventID)) { + ReleaseWriteLock(&setp->lock); + return -1; + } + if (setp->eventFlags[ICL_EVENTBYTE(eventID)] & ICL_EVENTMASK(eventID)) + *getValuep = 1; + else + *getValuep = 0; + ReleaseReadLock(&setp->lock); + return 0; +} + +/* hold and release event sets */ +int +afs_icl_SetHold(register struct afs_icl_set *setp) +{ + ObtainWriteLock(&afs_icl_lock, 201); + setp->refCount++; + ReleaseWriteLock(&afs_icl_lock); + return 0; +} + +/* free a set. Called with afs_icl_lock locked */ +int +afs_icl_ZapSet(register struct afs_icl_set *setp) +{ + register struct afs_icl_set **lpp, *tp; + int i; + register struct afs_icl_log *tlp; + + for (lpp = &afs_icl_allSets, tp = *lpp; tp; lpp = &tp->nextp, tp = *lpp) { + if (tp == setp) { + /* found the dude we want to remove */ + *lpp = setp->nextp; + osi_FreeSmallSpace(setp->name); + afs_osi_Free(setp->eventFlags, ICL_DEFAULTEVENTS); +#ifdef KERNEL_HAVE_PIN + unpin((char *)setp->eventFlags, ICL_DEFAULTEVENTS); +#endif + for (i = 0; i < ICL_LOGSPERSET; i++) { + if ((tlp = setp->logs[i])) + afs_icl_LogReleNL(tlp); + } + osi_FreeSmallSpace(setp); + break; /* won't find it twice */ + } + } + return 0; +} + +/* do the release, watching for deleted entries */ +int +afs_icl_SetRele(register struct afs_icl_set *setp) +{ + ObtainWriteLock(&afs_icl_lock, 202); + if (--setp->refCount == 0 && (setp->states & ICL_SETF_DELETED)) { + afs_icl_ZapSet(setp); /* destroys setp's lock! */ + } + ReleaseWriteLock(&afs_icl_lock); + return 0; +} + +/* free a set entry, dropping its reference count */ +int +afs_icl_SetFree(register struct afs_icl_set *setp) +{ + ObtainWriteLock(&setp->lock, 203); + setp->states |= ICL_SETF_DELETED; + ReleaseWriteLock(&setp->lock); + afs_icl_SetRele(setp); + return 0; +} + +/* find a set by name, returning it held */ +struct afs_icl_set * +afs_icl_FindSet(char *name) +{ + register struct afs_icl_set *tp; + ObtainWriteLock(&afs_icl_lock, 204); + for (tp = afs_icl_allSets; tp; tp = tp->nextp) { + if (strcmp(tp->name, name) == 0) { + /* this is the dude we want */ + tp->refCount++; + break; + } + } + ReleaseWriteLock(&afs_icl_lock); + return tp; +} + +/* zero out all the logs in the set */ +int +afs_icl_ZeroSet(struct afs_icl_set *setp) +{ + register int i; + int code = 0; + int tcode; + struct afs_icl_log *logp; + + ObtainReadLock(&setp->lock); + for (i = 0; i < ICL_LOGSPERSET; i++) { + logp = setp->logs[i]; + if (logp) { + afs_icl_LogHold(logp); + tcode = afs_icl_ZeroLog(logp); + if (tcode != 0) + code = tcode; /* save the last bad one */ + afs_icl_LogRele(logp); + } + } + ReleaseReadLock(&setp->lock); + return code; +} + +int +afs_icl_EnumerateSets(int (*aproc) + (char *name, char *arock, struct afs_icl_log * tp), + char *arock) +{ + register struct afs_icl_set *tp, *np; + register afs_int32 code; + + code = 0; + ObtainWriteLock(&afs_icl_lock, 205); + for (tp = afs_icl_allSets; tp; tp = np) { + tp->refCount++; /* hold this guy */ + ReleaseWriteLock(&afs_icl_lock); + code = (*aproc) (tp->name, arock, (struct afs_icl_log *)tp); + ObtainWriteLock(&afs_icl_lock, 206); + np = tp->nextp; /* tp may disappear next, but not np */ + if (--tp->refCount == 0 && (tp->states & ICL_SETF_DELETED)) + afs_icl_ZapSet(tp); + if (code) + break; + } + ReleaseWriteLock(&afs_icl_lock); + return code; +} + +int +afs_icl_AddLogToSet(struct afs_icl_set *setp, struct afs_icl_log *newlogp) +{ + register int i; + int code = -1; + + ObtainWriteLock(&setp->lock, 207); + for (i = 0; i < ICL_LOGSPERSET; i++) { + if (!setp->logs[i]) { + setp->logs[i] = newlogp; + code = i; + afs_icl_LogHold(newlogp); + if (!(setp->states & ICL_SETF_FREED)) { + /* bump up the number of sets using the log */ + afs_icl_LogUse(newlogp); + } + break; + } + } + ReleaseWriteLock(&setp->lock); + return code; +} + +int +afs_icl_SetSetStat(struct afs_icl_set *setp, int op) +{ + int i; + afs_int32 code; + struct afs_icl_log *logp; + + ObtainWriteLock(&setp->lock, 208); + switch (op) { + case ICL_OP_SS_ACTIVATE: /* activate a log */ + /* + * If we are not already active, see if we have released + * our demand that the log be allocated (FREED set). If + * we have, reassert our desire. + */ + if (!(setp->states & ICL_SETF_ACTIVE)) { + if (setp->states & ICL_SETF_FREED) { + /* have to reassert desire for logs */ + for (i = 0; i < ICL_LOGSPERSET; i++) { + logp = setp->logs[i]; + if (logp) { + afs_icl_LogHold(logp); + afs_icl_LogUse(logp); + afs_icl_LogRele(logp); + } + } + setp->states &= ~ICL_SETF_FREED; + } + setp->states |= ICL_SETF_ACTIVE; + } + code = 0; + break; + + case ICL_OP_SS_DEACTIVATE: /* deactivate a log */ + /* this doesn't require anything beyond clearing the ACTIVE flag */ + setp->states &= ~ICL_SETF_ACTIVE; + code = 0; + break; + + case ICL_OP_SS_FREE: /* deassert design for log */ + /* + * if we are already in this state, do nothing; otherwise + * deassert desire for log + */ + if (setp->states & ICL_SETF_ACTIVE) + code = EINVAL; + else { + if (!(setp->states & ICL_SETF_FREED)) { + for (i = 0; i < ICL_LOGSPERSET; i++) { + logp = setp->logs[i]; + if (logp) { + afs_icl_LogHold(logp); + afs_icl_LogFreeUse(logp); + afs_icl_LogRele(logp); + } + } + setp->states |= ICL_SETF_FREED; + } + code = 0; + } + break; + + default: + code = EINVAL; + } + ReleaseWriteLock(&setp->lock); + return code; +} diff --git a/src/afs/afs_init.c b/src/afs/afs_init.c index 03217c5c6..459838467 100644 --- a/src/afs/afs_init.c +++ b/src/afs/afs_init.c @@ -17,7 +17,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_init.c,v 1.28.2.7 2007/10/10 17:43:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_init.c,v 1.37.4.7 2008/06/12 17:24:38 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -39,11 +39,15 @@ char *afs_sysname = 0; /* So that superuser may change the * local value of @sys */ char *afs_sysnamelist[MAXNUMSYSNAMES]; /* For support of a list of sysname */ int afs_sysnamecount = 0; +int afs_sysnamegen = 0; struct volume *Initialafs_freeVolList; int afs_memvolumes = 0; #if defined(AFS_XBSD_ENV) static struct vnode *volumeVnode; #endif +#if defined(AFS_DISCON_ENV) +afs_rwlock_t afs_discon_lock; +#endif /* * Initialization order is important. Must first call afs_CacheInit, @@ -109,6 +113,9 @@ afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, afs_int32 ablocks, LOCK_INIT(&afs_ftf, "afs_ftf"); RWLOCK_INIT(&afs_xaxs, "afs_xaxs"); +#ifdef AFS_DISCON_ENV + RWLOCK_INIT(&afs_discon_lock, "afs_discon_lock"); +#endif osi_dnlc_init(); /* @@ -116,8 +123,8 @@ afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, afs_int32 ablocks, */ if (aVolumes < 50) aVolumes = 50; - else if (aVolumes > 3000) - aVolumes = 3000; + else if (aVolumes > 32767) + aVolumes = 32767; tv = (struct volume *)afs_osi_Alloc(aVolumes * sizeof(struct volume)); for (i = 0; i < aVolumes - 1; i++) @@ -502,6 +509,7 @@ afs_ResourceInit(int preallocs) afs_sysname = afs_sysnamelist[0]; strcpy(afs_sysname, SYS_NAME); afs_sysnamecount = 1; + afs_sysnamegen++; } secobj = rxnull_NewServerSecurityObject(); diff --git a/src/afs/afs_md5.c b/src/afs/afs_md5.c new file mode 100644 index 000000000..9da4887af --- /dev/null +++ b/src/afs/afs_md5.c @@ -0,0 +1,285 @@ +/* + * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include "afs/param.h" +#include "afs/sysincludes.h" +#include "afsincludes.h" + + +RCSID("$Id: afs_md5.c,v 1.1.2.3 2006/08/02 19:01:22 shadow Exp $"); + +#include "afs_md5.h" + +#define A m->counter[0] +#define B m->counter[1] +#define C m->counter[2] +#define D m->counter[3] +#define X data + +void +AFS_MD5_Init(struct afs_md5 *m) +{ + m->sz[0] = 0; + m->sz[1] = 0; + D = 0x10325476; + C = 0x98badcfe; + B = 0xefcdab89; + A = 0x67452301; +} + +#define F(x,y,z) CRAYFIX((x & y) | (~x & z)) +#define G(x,y,z) CRAYFIX((x & z) | (y & ~z)) +#define H(x,y,z) (x ^ y ^ z) +#define I(x,y,z) CRAYFIX(y ^ (x | ~z)) + +#define DOIT(a,b,c,d,k,s,i,OP) \ +a = b + cshift(a + OP(b,c,d) + X[k] + (i), s) + +#define DO1(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,F) +#define DO2(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,G) +#define DO3(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,H) +#define DO4(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,I) + +static inline void +calc(struct afs_md5 *m, afs_uint32 * data) +{ + afs_uint32 AA, BB, CC, DD; + + AA = A; + BB = B; + CC = C; + DD = D; + + /* Round 1 */ + + DO1(A, B, C, D, 0, 7, 0xd76aa478); + DO1(D, A, B, C, 1, 12, 0xe8c7b756); + DO1(C, D, A, B, 2, 17, 0x242070db); + DO1(B, C, D, A, 3, 22, 0xc1bdceee); + + DO1(A, B, C, D, 4, 7, 0xf57c0faf); + DO1(D, A, B, C, 5, 12, 0x4787c62a); + DO1(C, D, A, B, 6, 17, 0xa8304613); + DO1(B, C, D, A, 7, 22, 0xfd469501); + + DO1(A, B, C, D, 8, 7, 0x698098d8); + DO1(D, A, B, C, 9, 12, 0x8b44f7af); + DO1(C, D, A, B, 10, 17, 0xffff5bb1); + DO1(B, C, D, A, 11, 22, 0x895cd7be); + + DO1(A, B, C, D, 12, 7, 0x6b901122); + DO1(D, A, B, C, 13, 12, 0xfd987193); + DO1(C, D, A, B, 14, 17, 0xa679438e); + DO1(B, C, D, A, 15, 22, 0x49b40821); + + /* Round 2 */ + + DO2(A, B, C, D, 1, 5, 0xf61e2562); + DO2(D, A, B, C, 6, 9, 0xc040b340); + DO2(C, D, A, B, 11, 14, 0x265e5a51); + DO2(B, C, D, A, 0, 20, 0xe9b6c7aa); + + DO2(A, B, C, D, 5, 5, 0xd62f105d); + DO2(D, A, B, C, 10, 9, 0x2441453); + DO2(C, D, A, B, 15, 14, 0xd8a1e681); + DO2(B, C, D, A, 4, 20, 0xe7d3fbc8); + + DO2(A, B, C, D, 9, 5, 0x21e1cde6); + DO2(D, A, B, C, 14, 9, 0xc33707d6); + DO2(C, D, A, B, 3, 14, 0xf4d50d87); + DO2(B, C, D, A, 8, 20, 0x455a14ed); + + DO2(A, B, C, D, 13, 5, 0xa9e3e905); + DO2(D, A, B, C, 2, 9, 0xfcefa3f8); + DO2(C, D, A, B, 7, 14, 0x676f02d9); + DO2(B, C, D, A, 12, 20, 0x8d2a4c8a); + + /* Round 3 */ + + DO3(A, B, C, D, 5, 4, 0xfffa3942); + DO3(D, A, B, C, 8, 11, 0x8771f681); + DO3(C, D, A, B, 11, 16, 0x6d9d6122); + DO3(B, C, D, A, 14, 23, 0xfde5380c); + + DO3(A, B, C, D, 1, 4, 0xa4beea44); + DO3(D, A, B, C, 4, 11, 0x4bdecfa9); + DO3(C, D, A, B, 7, 16, 0xf6bb4b60); + DO3(B, C, D, A, 10, 23, 0xbebfbc70); + + DO3(A, B, C, D, 13, 4, 0x289b7ec6); + DO3(D, A, B, C, 0, 11, 0xeaa127fa); + DO3(C, D, A, B, 3, 16, 0xd4ef3085); + DO3(B, C, D, A, 6, 23, 0x4881d05); + + DO3(A, B, C, D, 9, 4, 0xd9d4d039); + DO3(D, A, B, C, 12, 11, 0xe6db99e5); + DO3(C, D, A, B, 15, 16, 0x1fa27cf8); + DO3(B, C, D, A, 2, 23, 0xc4ac5665); + + /* Round 4 */ + + DO4(A, B, C, D, 0, 6, 0xf4292244); + DO4(D, A, B, C, 7, 10, 0x432aff97); + DO4(C, D, A, B, 14, 15, 0xab9423a7); + DO4(B, C, D, A, 5, 21, 0xfc93a039); + + DO4(A, B, C, D, 12, 6, 0x655b59c3); + DO4(D, A, B, C, 3, 10, 0x8f0ccc92); + DO4(C, D, A, B, 10, 15, 0xffeff47d); + DO4(B, C, D, A, 1, 21, 0x85845dd1); + + DO4(A, B, C, D, 8, 6, 0x6fa87e4f); + DO4(D, A, B, C, 15, 10, 0xfe2ce6e0); + DO4(C, D, A, B, 6, 15, 0xa3014314); + DO4(B, C, D, A, 13, 21, 0x4e0811a1); + + DO4(A, B, C, D, 4, 6, 0xf7537e82); + DO4(D, A, B, C, 11, 10, 0xbd3af235); + DO4(C, D, A, B, 2, 15, 0x2ad7d2bb); + DO4(B, C, D, A, 9, 21, 0xeb86d391); + + A += AA; + B += BB; + C += CC; + D += DD; +} + +/* + * From `Performance analysis of MD5' by Joseph D. Touch + */ + +#if defined(WORDS_BIGENDIAN) +static inline afs_uint32 +swap_afs_uint32(afs_uint32 t) +{ + afs_uint32 temp1, temp2; + + temp1 = cshift(t, 16); + temp2 = temp1 >> 8; + temp1 &= 0x00ff00ff; + temp2 &= 0x00ff00ff; + temp1 <<= 8; + return temp1 | temp2; +} +#endif + +struct x32 { + unsigned int a:32; + unsigned int b:32; +}; + +void +AFS_MD5_Update(struct afs_md5 *m, const void *v, size_t len) +{ + const unsigned char *p = v; + size_t old_sz = m->sz[0]; + size_t offset; + + m->sz[0] += len * 8; + if (m->sz[0] < old_sz) + ++m->sz[1]; + offset = (old_sz / 8) % 64; + while (len > 0) { + size_t l = min(len, 64 - offset); + memcpy(m->save + offset, p, l); + offset += l; + p += l; + len -= l; + if (offset == 64) { +#if defined(WORDS_BIGENDIAN) + int i; + afs_uint32 cur[16]; + struct x32 *ui = (struct x32 *)m->save; + for (i = 0; i < 8; i++) { + cur[2 * i + 0] = swap_afs_uint32(ui[i].a); + cur[2 * i + 1] = swap_afs_uint32(ui[i].b); + } + calc(m, cur); +#else + calc(m, (afs_uint32 *) m->save); +#endif + offset = 0; + } + } +} + +void +AFS_MD5_Final(void *res, struct afs_md5 *m) +{ + static unsigned char zeros[72]; + unsigned offset = (m->sz[0] / 8) % 64; + unsigned int dstart = (120 - offset - 1) % 64 + 1; + + *zeros = 0x80; + memset(zeros + 1, 0, sizeof(zeros) - 1); + zeros[dstart + 0] = (m->sz[0] >> 0) & 0xff; + zeros[dstart + 1] = (m->sz[0] >> 8) & 0xff; + zeros[dstart + 2] = (m->sz[0] >> 16) & 0xff; + zeros[dstart + 3] = (m->sz[0] >> 24) & 0xff; + zeros[dstart + 4] = (m->sz[1] >> 0) & 0xff; + zeros[dstart + 5] = (m->sz[1] >> 8) & 0xff; + zeros[dstart + 6] = (m->sz[1] >> 16) & 0xff; + zeros[dstart + 7] = (m->sz[1] >> 24) & 0xff; + AFS_MD5_Update(m, zeros, dstart + 8); + { + int i; + unsigned char *r = (unsigned char *)res; + + for (i = 0; i < 4; ++i) { + r[4 * i] = m->counter[i] & 0xFF; + r[4 * i + 1] = (m->counter[i] >> 8) & 0xFF; + r[4 * i + 2] = (m->counter[i] >> 16) & 0xFF; + r[4 * i + 3] = (m->counter[i] >> 24) & 0xFF; + } + } +#if 0 + { + int i; + afs_uint32 *r = (afs_uint32 *) res; + + for (i = 0; i < 4; ++i) + r[i] = swap_afs_uint32(m->counter[i]); + } +#endif +} + +void +AFS_MD5_String(void *res, const void *v, size_t len) +{ + struct afs_md5 m; + + AFS_MD5_Init(&m); + AFS_MD5_Update(&m, v, len); + AFS_MD5_Final(res, &m); +} diff --git a/src/rxgk/rxgk_info.c b/src/afs/afs_md5.h similarity index 57% rename from src/rxgk/rxgk_info.c rename to src/afs/afs_md5.h index bfb30ff72..ac3841c37 100644 --- a/src/rxgk/rxgk_info.c +++ b/src/afs/afs_md5.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995 - 1998, 2002 Kungliga Tekniska Högskolan + * Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -31,29 +31,46 @@ * SUCH DAMAGE. */ -#include "rxgk_locl.h" +/* $Id: afs_md5.h,v 1.1.2.2 2006/07/31 21:27:38 shadow Exp $ */ -RCSID("$Id: rxgk_info.c,v 1.1 2004/08/08 19:21:33 shadow Exp $"); -int32_t -rxgk_GetServerInfo(struct rx_connection *con, - rxgk_level *level, - uint32_t *expiration, - char *name, size_t name_size, - char *cell, size_t cell_size, - int32_t *kvno) +struct afs_md5 { + unsigned int sz[2]; + afs_uint32 counter[4]; + unsigned char save[64]; +}; + +void AFS_MD5_Init(struct afs_md5 *m); +void AFS_MD5_Update(struct afs_md5 *m, const void *p, size_t len); +void AFS_MD5_Final(void *res, struct afs_md5 *m); /* afs_uint32 res[4] */ +void AFS_MD5_String(void *res, const void *v, size_t len); + +/* stuff in common between md4, md5, and sha1 */ + +#ifndef min +#define min(a,b) (((a)>(b))?(b):(a)) +#endif + +/* Vector Crays doesn't have a good 32-bit type, or more precisely, + int32_t as defined by isn't 32 bits, and we don't + want to depend in being able to redefine this type. To cope with + this we have to clamp the result in some places to [0,2^32); no + need to do this on other machines. Did I say this was a mess? + */ + +#ifdef _CRAY +#define CRAYFIX(X) ((X) & 0xffffffff) +#else +#define CRAYFIX(X) (X) +#endif + +#if !defined(inline) && !defined(__GNUC__) +#define inline +#endif + +static inline afs_uint32 +cshift(afs_uint32 x, unsigned int n) { - serv_con_data *cdat = (serv_con_data *) con->securityData; - - if (cdat && cdat->authenticated - && (time(0) < cdat->expires)) - { - if (level) - *level = cdat->cur_level; - if (expiration) - *expiration = cdat->expires; - return 0; - } - else - return RXGKNOAUTH; + x = CRAYFIX(x); + return CRAYFIX((x << n) | (x >> (32 - n))); } diff --git a/src/afs/afs_memcache.c b/src/afs/afs_memcache.c index e5663a854..fe8cfe50a 100644 --- a/src/afs/afs_memcache.c +++ b/src/afs/afs_memcache.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_memcache.c,v 1.15.2.6 2007/06/23 15:31:11 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_memcache.c,v 1.22.4.1 2007/06/23 15:29:36 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #ifndef AFS_LINUX22_ENV diff --git a/src/afs/afs_nfsclnt.c b/src/afs/afs_nfsclnt.c index 071f0b5b3..f0bf68c08 100644 --- a/src/afs/afs_nfsclnt.c +++ b/src/afs/afs_nfsclnt.c @@ -11,16 +11,20 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_nfsclnt.c,v 1.12.2.4 2007/10/16 22:03:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_nfsclnt.c,v 1.13.6.7 2007/10/16 21:56:45 shadow Exp $"); #if !defined(AFS_NONFSTRANS) || defined(AFS_AIX_IAUTH_ENV) #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ #include "afs/afs_stats.h" /* statistics */ #include "afs/nfsclient.h" +#include "rx/rx_globals.h" +#include "afs/pagcb.h" -int afs_nfsclient_reqhandler(), afs_nfsclient_hold(), afs_PutNfsClientPag(); -int afs_nfsclient_sysname(), afs_nfsclient_GC(), afs_nfsclient_stats(); +void afs_nfsclient_hold(), afs_PutNfsClientPag(), afs_nfsclient_GC(); +static void afs_nfsclient_getcreds(); +int afs_nfsclient_sysname(), afs_nfsclient_stats(), afs_nfsclient_checkhost(); +afs_int32 afs_nfsclient_gethost(); #ifdef AFS_AIX_IAUTH_ENV int afs_allnfsreqs, afs_nfscalls; #endif @@ -33,6 +37,8 @@ struct exporterops nfs_exportops = { afs_nfsclient_sysname, afs_nfsclient_GC, afs_nfsclient_stats, + afs_nfsclient_checkhost, + afs_nfsclient_gethost }; @@ -89,7 +95,7 @@ afs_GetNfsClientPag(uid, host) /* Decrement refCount; must always match a previous afs_FindNfsClientPag/afs_GetNfsClientPag call . It's also called whenever a unixuser structure belonging to the remote user associated with the nfsclientpag structure, np, is garbage collected. */ -int +void afs_PutNfsClientPag(np) register struct nfsclientpag *np; { @@ -146,7 +152,9 @@ afs_FindNfsClientPag(uid, host, pag) */ struct afs_exporter *afs_nfsexported = 0; static afs_int32 init_nfsexporter = 0; -afs_nfsclient_init() + +void +afs_nfsclient_init(void) { #if defined(AFS_SGIMP_ENV) osi_Assert(ISAFS_GLOCK()); @@ -166,17 +174,15 @@ afs_nfsclient_init() * phases of any remote call (via the NFS server or pioctl). */ int -afs_nfsclient_reqhandler(exporter, cred, host, pagparam, outexporter) - register struct afs_exporter *exporter, **outexporter; - struct AFS_UCRED **cred; - register afs_int32 host; - afs_int32 *pagparam; +afs_nfsclient_reqhandler(struct afs_exporter *exporter, + struct AFS_UCRED **cred, + afs_int32 host, afs_int32 *pagparam, + struct afs_exporter **outexporter) { register struct nfsclientpag *np, *tnp; extern struct unixuser *afs_FindUser(), *afs_GetUser(); register struct unixuser *au = 0; - afs_int32 pag, code = 0; - uid_t uid; + afs_int32 uid, pag, code = 0; AFS_ASSERT_GLOCK(); AFS_STATCNT(afs_nfsclient_reqhandler); @@ -192,12 +198,25 @@ afs_nfsclient_reqhandler(exporter, cred, host, pagparam, outexporter) } /* ObtainWriteLock(&afs_xnfsreq); */ pag = PagInCred(*cred); - if (pag != NOPAG) { +#if defined(AFS_SUN510_ENV) + uid = crgetuid(*cred); +#else + uid = (*cred)->cr_uid; +#endif + /* Do this early, so pag management knows */ +#ifdef AFS_OSF_ENV + (*cred)->cr_ruid = NFSXLATOR_CRED; /* Identify it as nfs xlator call */ +#else + (*cred)->cr_rgid = NFSXLATOR_CRED; /* Identify it as nfs xlator call */ +#endif + if ((afs_nfsexporter->exp_states & EXP_CLIPAGS) && pag != NOPAG) { + uid = pag; + } else if (pag != NOPAG) { /* Do some minimal pag verification */ if (pag > getpag()) { pag = NOPAG; /* treat it as not paged since couldn't be good */ } else { - if (au = afs_FindUser(pag, -1, READ_LOCK)) { + if ((au = afs_FindUser(pag, -1, READ_LOCK))) { if (!au->exporter) { pag = NOPAG; afs_PutUser(au, READ_LOCK); @@ -207,21 +226,24 @@ afs_nfsclient_reqhandler(exporter, cred, host, pagparam, outexporter) pag = NOPAG; /* No unixuser struct so pag not trusted */ } } -#if defined(AFS_SUN510_ENV) - uid = crgetuid(*cred); -#else - uid = (*cred)->cr_uid; -#endif np = afs_FindNfsClientPag(uid, host, 0); afs_Trace4(afs_iclSetp, CM_TRACE_NFSREQH, ICL_TYPE_INT32, pag, - ICL_TYPE_LONG, uid, ICL_TYPE_INT32, host, + ICL_TYPE_LONG, (*cred)->cr_uid, ICL_TYPE_INT32, host, ICL_TYPE_POINTER, np); + /* If remote-pags are enabled, we are no longer interested in what PAG + * they claimed, and from here on we should behave as if they claimed + * none at all, which is to say we use the (local) pag named in the + * nfsclientpag structure (if any). This is deferred until here so + * that we can log the PAG they claimed. + */ + if ((afs_nfsexporter->exp_states & EXP_CLIPAGS)) + pag = NOPAG; if (!np) { /* Even if there is a "good" pag coming in we don't accept it if no nfsclientpag struct exists for the user since that would mean that the translator rebooted and therefore we ignore all older pag values */ #ifdef AFS_OSF_ENV - if (code = setpag(u.u_procp, cred, -1, &pag, 1)) { /* XXX u.u_procp is a no-op XXX */ + if (code = setpag(u.u_procp, cred, -1, &pag, 0)) { /* XXX u.u_procp is a no-op XXX */ #else - if (code = setpag(cred, -1, &pag, 1)) { + if ((code = setpag(cred, -1, &pag, 0))) { #endif if (au) afs_PutUser(au, READ_LOCK); @@ -231,14 +253,15 @@ afs_nfsclient_reqhandler(exporter, cred, host, pagparam, outexporter) #endif return (code); } - np = afs_GetNfsClientPag((*cred)->cr_uid, host); + np = afs_GetNfsClientPag(uid, host); np->pag = pag; + np->client_uid = (*cred)->cr_uid; } else { if (pag == NOPAG) { #ifdef AFS_OSF_ENV - if (code = setpag(u.u_procp, cred, np->pag, &pag, 1)) { /* XXX u.u_procp is a no-op XXX */ + if (code = setpag(u.u_procp, cred, np->pag, &pag, 0)) { /* XXX u.u_procp is a no-op XXX */ #else - if (code = setpag(cred, np->pag, &pag, 1)) { + if ((code = setpag(cred, np->pag, &pag, 0))) { #endif afs_PutNfsClientPag(np); /* ReleaseWriteLock(&afs_xnfsreq); */ @@ -253,9 +276,9 @@ afs_nfsclient_reqhandler(exporter, cred, host, pagparam, outexporter) if (tnp->uid && (tnp->uid != (afs_int32) - 2)) { /* allow "root" initiators */ /* Pag doesn't belong to caller; treat it as an unpaged call too */ #ifdef AFS_OSF_ENV - if (code = setpag(u.u_procp, cred, np->pag, &pag, 1)) { /* XXX u.u_procp is a no-op XXX */ + if (code = setpag(u.u_procp, cred, np->pag, &pag, 0)) { /* XXX u.u_procp is a no-op XXX */ #else - if (code = setpag(cred, np->pag, &pag, 1)) { + if ((code = setpag(cred, np->pag, &pag, 0))) { #endif afs_PutNfsClientPag(np); afs_PutUser(au, READ_LOCK); @@ -275,22 +298,135 @@ afs_nfsclient_reqhandler(exporter, cred, host, pagparam, outexporter) if (!(au->exporter)) { /* Created new unixuser struct */ np->refCount++; /* so it won't disappear */ au->exporter = (struct afs_exporter *)np; + if ((afs_nfsexporter->exp_states & EXP_CALLBACK)) + afs_nfsclient_getcreds(au); + } else while (au->states & UNFSGetCreds) { + afs_osi_Sleep((void *)au); } *pagparam = pag; *outexporter = (struct afs_exporter *)np; afs_PutUser(au, WRITE_LOCK); -#ifdef AFS_OSF_ENV - (*cred)->cr_ruid = NFSXLATOR_CRED; /* Identify it as nfs xlator call */ -#else - (*cred)->cr_rgid = NFSXLATOR_CRED; /* Identify it as nfs xlator call */ -#endif /* ReleaseWriteLock(&afs_xnfsreq); */ return 0; } +void +afs_nfsclient_getcreds(au) + struct unixuser *au; +{ + struct nfsclientpag *np = (struct nfsclientpag *)(au->exporter); + struct rx_securityClass *csec; + struct rx_connection *tconn; + SysNameList tsysnames; + CredInfos tcreds; + CredInfo *tcred; + struct unixuser *tu; + struct cell *tcell; + int code, i, cellnum; + + au->states |= UNFSGetCreds; + memset(&tcreds, 0, sizeof(tcreds)); + memset(&tsysnames, 0, sizeof(tsysnames)); + + /* Get a connection */ + /* This sucks a little. We should cache the connections or something. + * But at this point I don't yet think it's worth the effort. + */ + csec = rxnull_NewClientSecurityObject(); + AFS_GUNLOCK(); + tconn = rx_NewConnection(np->host, htons(7001), PAGCB_SERVICEID, csec, 0); + AFS_GLOCK(); + + /* Get the sysname, if needed */ + if (!np->sysnamecount) { + AFS_GUNLOCK(); + code = PAGCB_GetSysName(tconn, np->uid, &tsysnames); + AFS_GLOCK(); + if (code || + tsysnames.SysNameList_len <= 0 || + tsysnames.SysNameList_len > MAXNUMSYSNAMES) + goto done; + + for(i = 0; i < np->sysnamecount; i++) + afs_osi_Free(np->sysname[i], MAXSYSNAME); + + np->sysnamecount = tsysnames.SysNameList_len; + for(i = 0; i < np->sysnamecount; i++) + np->sysname[i] = tsysnames.SysNameList_val[i].sysname; + afs_osi_Free(tsysnames.SysNameList_val, + tsysnames.SysNameList_len * sizeof(SysNameEnt)); + } + + /* Get credentials */ + AFS_GUNLOCK(); + code = PAGCB_GetCreds(tconn, np->uid, &tcreds); + AFS_GLOCK(); + if (code) + goto done; + + /* Now, set the credentials they gave us... */ + for (i = 0; i < tcreds.CredInfos_len; i++) { + tcred = &tcreds.CredInfos_val[i]; + + /* Find the cell. If it is unknown to us, punt this entry. */ + tcell = afs_GetCellByName(tcred->cellname, READ_LOCK); + afs_osi_Free(tcred->cellname, strlen(tcred->cellname) + 1); + if (!tcell) { + memset(tcred->ct.HandShakeKey, 0, 8); + memset(tcred->st.st_val, 0, tcred->st.st_len); + afs_osi_Free(tcred->st.st_val, tcred->st.st_len); + continue; + } + cellnum = tcell->cellNum; + afs_PutCell(tcell, READ_LOCK); + + /* Find the appropriate unixuser. This might be the same as + * the one we were passed (au), but that's OK. + */ + tu = afs_GetUser(np->pag, cellnum, WRITE_LOCK); + if (!(tu->exporter)) { /* Created new unixuser struct */ + np->refCount++; /* so it won't disappear */ + tu->exporter = (struct afs_exporter *)np; + } + + /* free any old secret token, and keep the new one */ + if (tu->stp != NULL) { + afs_osi_Free(tu->stp, tu->stLen); + } + tu->stp = tcred->st.st_val; + tu->stLen = tcred->st.st_len; + + /* copy the clear token */ + memset(&tu->ct, 0, sizeof(tu->ct)); + memcpy(tu->ct.HandShakeKey, tcred->ct.HandShakeKey, 8); + memset(tcred->ct.HandShakeKey, 0, 8); + tu->ct.AuthHandle = tcred->ct.AuthHandle; + tu->ct.ViceId = tcred->ct.ViceId; + tu->ct.BeginTimestamp = tcred->ct.BeginTimestamp; + tu->ct.EndTimestamp = tcred->ct.EndTimestamp; + + /* Set everything else, reset connections, and move on. */ + tu->vid = tcred->vid; + tu->states |= UHasTokens; + tu->states &= ~UTokensBad; + afs_SetPrimary(tu, !!(tcred->states & UPrimary)); + tu->tokenTime = osi_Time(); + afs_ResetUserConns(tu); + afs_PutUser(tu, WRITE_LOCK); + } + afs_osi_Free(tcreds.CredInfos_val, tcreds.CredInfos_len * sizeof(CredInfo)); + +done: + AFS_GUNLOCK(); + rx_DestroyConnection(tconn); + AFS_GLOCK(); + au->states &= ~UNFSGetCreds; + afs_osi_Wakeup((void *)au); +} + /* It's called whenever a new unixuser structure is created for the remote user associated with the nfsclientpag structure, np */ -int +void afs_nfsclient_hold(np) register struct nfsclientpag *np; { @@ -302,17 +438,51 @@ afs_nfsclient_hold(np) } +/* check if this exporter corresponds to the specified host */ +int +afs_nfsclient_checkhost(np, host) + register struct nfsclientpag *np; +{ + if (np->type != EXP_NFS) + return 0; + return np->host == host; +} + + +/* get the host for this exporter, or 0 if there is an error */ +afs_int32 +afs_nfsclient_gethost(np) + register struct nfsclientpag *np; +{ + if (np->type != EXP_NFS) + return 0; + return np->host; +} + + /* if inname is non-null, a new system name value is set for the remote user (inname contains the new sysname). In all cases, outname returns the current sysname value for this remote user */ int afs_nfsclient_sysname(register struct nfsclientpag *np, char *inname, - char **outname[], int *num) + char ***outname, int *num, int allpags) { + register struct nfsclientpag *tnp; + register afs_int32 i; char *cp; int count, t; #if defined(AFS_SGIMP_ENV) osi_Assert(ISAFS_GLOCK()); #endif AFS_STATCNT(afs_nfsclient_sysname); + if (allpags > 0) { + /* update every client, not just the one making the request */ + i = NHash(np->host); + MObtainWriteLock(&afs_xnfspag, 315); + for (tnp = afs_nfspags[i]; tnp; tnp = tnp->next) { + if (tnp != np && tnp->host == np->host) + afs_nfsclient_sysname(tnp, inname, outname, num, -1); + } + MReleaseWriteLock(&afs_xnfspag); + } if (inname) { for(count=0; count < np->sysnamecount;++count) { afs_osi_Free(np->sysname[count], MAXSYSNAME); @@ -329,16 +499,19 @@ afs_nfsclient_sysname(register struct nfsclientpag *np, char *inname, } np->sysnamecount = *num; } - *outname = np->sysname; - *num = np->sysnamecount; - if (!np->sysname[0]) - return ENODEV; /* XXX */ + if (allpags >= 0) { + /* Don't touch our arguments when called recursively */ + *outname = np->sysname; + *num = np->sysnamecount; + if (!np->sysname[0]) + return ENODEV; /* XXX */ + } return 0; } /* Garbage collect routine for the nfs exporter. When pag is -1 then all entries are removed (used by the nfsclient_shutdown routine); else if it's non zero then only the entry with that pag is removed, else all "timedout" entries are removed. TimedOut entries are those who have no "unixuser" structures associated with them (i.e. unixusercnt == 0) and they haven't had any activity the last NFSCLIENTGC seconds */ -int +void afs_nfsclient_GC(exporter, pag) register struct afs_exporter *exporter; register afs_int32 pag; @@ -464,6 +637,7 @@ afs_iauth_unregister() +void shutdown_nfsclnt() { #if defined(AFS_SGIMP_ENV) diff --git a/src/afs/afs_nfsdisp.c b/src/afs/afs_nfsdisp.c index 62f01a24e..fbd37d461 100644 --- a/src/afs/afs_nfsdisp.c +++ b/src/afs/afs_nfsdisp.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_nfsdisp.c,v 1.18.2.3 2005/10/13 18:26:06 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_nfsdisp.c,v 1.21 2005/10/13 18:25:05 shadow Exp $"); /* Ugly Ugly Ugly but precludes conflicting XDR macros; We want kernel xdr */ #define __XDR_INCLUDE__ diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c index fabe9acbb..9f113a3b5 100644 --- a/src/afs/afs_osi.c +++ b/src/afs/afs_osi.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osi.c,v 1.48.2.15 2008/02/06 01:43:44 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osi.c,v 1.58.2.6 2008/02/06 01:32:13 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -20,18 +20,14 @@ RCSID #include /* for vm_att(), vm_det() */ #endif -static char memZero; /* address of 0 bytes for kmem_alloc */ - -struct osimem { - struct osimem *next; -}; - /* osi_Init -- do once per kernel installation initialization. * -- On Solaris this is called from modload initialization. * -- On AIX called from afs_config. * -- On HP called from afsc_link. * -- On SGI called from afs_init. */ +afs_lock_t afs_ftf; /* flush text lock */ + #ifdef AFS_SGI53_ENV lock_t afs_event_lock; #endif @@ -42,6 +38,43 @@ flid_t osi_flid; struct AFS_UCRED *afs_osi_credp; +#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) +kmutex_t afs_global_lock; +kmutex_t afs_rxglobal_lock; +#endif + +#if defined(AFS_SGI_ENV) && !defined(AFS_SGI64_ENV) +long afs_global_owner; +#endif + +#if defined(AFS_OSF_ENV) +simple_lock_data_t afs_global_lock; +#endif + +#if defined(AFS_DARWIN_ENV) +#ifdef AFS_DARWIN80_ENV +lck_mtx_t *afs_global_lock; +#else +struct lock__bsd__ afs_global_lock; +#endif +#endif + +#if defined(AFS_XBSD_ENV) && !defined(AFS_FBSD50_ENV) +struct lock afs_global_lock; +struct proc *afs_global_owner; +#endif +#ifdef AFS_FBSD50_ENV +struct mtx afs_global_mtx; +#endif + +#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) +thread_t afs_global_owner; +#endif /* AFS_OSF_ENV */ + +#if defined(AFS_AIX41_ENV) +simple_lock_data afs_global_lock; +#endif + void osi_Init(void) { @@ -105,142 +138,6 @@ osi_Init(void) init_et_to_sys_error(); } -int -osi_Active(register struct vcache *avc) -{ - AFS_STATCNT(osi_Active); -#if defined(AFS_AIX_ENV) || defined(AFS_OSF_ENV) || defined(AFS_SUN5_ENV) || (AFS_LINUX20_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) - if ((avc->opens > 0) || (avc->states & CMAPPED)) - return 1; /* XXX: Warning, verify this XXX */ -#elif defined(AFS_SGI_ENV) - if ((avc->opens > 0) || AFS_VN_MAPPED(AFSTOV(avc))) - return 1; -#else - if (avc->opens > 0 || (AFSTOV(avc)->v_flag & VTEXT)) - return (1); -#endif - return 0; -} - -/* this call, unlike osi_FlushText, is supposed to discard caches that may - contain invalid information if a file is written remotely, but that may - contain valid information that needs to be written back if the file is - being written locally. It doesn't subsume osi_FlushText, since the latter - function may be needed to flush caches that are invalidated by local writes. - - avc->pvnLock is already held, avc->lock is guaranteed not to be held (by - us, of course). -*/ -void -osi_FlushPages(register struct vcache *avc, struct AFS_UCRED *credp) -{ - afs_hyper_t origDV; - ObtainReadLock(&avc->lock); - /* If we've already purged this version, or if we're the ones - * writing this version, don't flush it (could lose the - * data we're writing). */ - if ((hcmp((avc->m.DataVersion), (avc->mapDV)) <= 0) - || ((avc->execsOrWriters > 0) && afs_DirtyPages(avc))) { - ReleaseReadLock(&avc->lock); - return; - } - ReleaseReadLock(&avc->lock); - ObtainWriteLock(&avc->lock, 10); - /* Check again */ - if ((hcmp((avc->m.DataVersion), (avc->mapDV)) <= 0) - || ((avc->execsOrWriters > 0) && afs_DirtyPages(avc))) { - ReleaseWriteLock(&avc->lock); - return; - } - if (hiszero(avc->mapDV)) { - hset(avc->mapDV, avc->m.DataVersion); - ReleaseWriteLock(&avc->lock); - return; - } - - AFS_STATCNT(osi_FlushPages); - hset(origDV, avc->m.DataVersion); - afs_Trace3(afs_iclSetp, CM_TRACE_FLUSHPAGES, ICL_TYPE_POINTER, avc, - ICL_TYPE_INT32, origDV.low, ICL_TYPE_INT32, avc->m.Length); - - ReleaseWriteLock(&avc->lock); - AFS_GUNLOCK(); - osi_VM_FlushPages(avc, credp); - AFS_GLOCK(); - ObtainWriteLock(&avc->lock, 88); - - /* do this last, and to original version, since stores may occur - * while executing above PUTPAGE call */ - hset(avc->mapDV, origDV); - ReleaseWriteLock(&avc->lock); -} - -afs_lock_t afs_ftf; /* flush text lock */ - -#ifdef AFS_TEXT_ENV - -/* This call is supposed to flush all caches that might be invalidated - * by either a local write operation or a write operation done on - * another client. This call may be called repeatedly on the same - * version of a file, even while a file is being written, so it - * shouldn't do anything that would discard newly written data before - * it is written to the file system. */ - -void -osi_FlushText_really(register struct vcache *vp) -{ - afs_hyper_t fdv; /* version before which we'll flush */ - - AFS_STATCNT(osi_FlushText); - /* see if we've already flushed this data version */ - if (hcmp(vp->m.DataVersion, vp->flushDV) <= 0) - return; - - MObtainWriteLock(&afs_ftf, 317); - hset(fdv, vp->m.DataVersion); - - /* why this disgusting code below? - * xuntext, called by xrele, doesn't notice when it is called - * with a freed text object. Sun continually calls xrele or xuntext - * without any locking, as long as VTEXT is set on the - * corresponding vnode. - * But, if the text object is locked when you check the VTEXT - * flag, several processes can wait in xuntext, waiting for the - * text lock; when the second one finally enters xuntext's - * critical region, the text object is already free, but the check - * was already done by xuntext's caller. - * Even worse, it turns out that xalloc locks the text object - * before reading or stating a file via the vnode layer. Thus, we - * could end up in getdcache, being asked to bring in a new - * version of a file, but the corresponding text object could be - * locked. We can't flush the text object without causing - * deadlock, so now we just don't try to lock the text object - * unless it is guaranteed to work. And we try to flush the text - * when we need to a bit more often at the vnode layer. Sun - * really blew the vm-cache flushing interface. - */ - -#if defined (AFS_HPUX_ENV) - if (vp->v.v_flag & VTEXT) { - xrele(vp); - - if (vp->v.v_flag & VTEXT) { /* still has a text object? */ - MReleaseWriteLock(&afs_ftf); - return; - } - } -#endif - - /* next do the stuff that need not check for deadlock problems */ - mpurge(vp); - - /* finally, record that we've done it */ - hset(vp->flushDV, fdv); - MReleaseWriteLock(&afs_ftf); - -} -#endif /* AFS_TEXT_ENV */ - /* mask signals in afsds */ void afs_osi_MaskSignals(void) @@ -319,7 +216,7 @@ afs_osi_Visible(void) #endif } -#if !defined(AFS_LINUX20_ENV) && !defined(AFS_XBSD_ENV) +#if !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV) /* set the real time */ void afs_osi_SetTime(osi_timeval_t * atv) @@ -399,187 +296,6 @@ afs_osi_SetTime(osi_timeval_t * atv) #endif /* AFS_LINUX20_ENV */ -void * -afs_osi_Alloc(size_t x) -{ -#if !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV) - register struct osimem *tm = NULL; - register int size; -#endif - - AFS_STATCNT(osi_Alloc); - /* 0-length allocs may return NULL ptr from AFS_KALLOC, so we special-case - * things so that NULL returned iff an error occurred */ - if (x == 0) - return &memZero; - - AFS_STATS(afs_stats_cmperf.OutStandingAllocs++); - AFS_STATS(afs_stats_cmperf.OutStandingMemUsage += x); -#ifdef AFS_LINUX20_ENV - return osi_linux_alloc(x, 1); -#elif defined(AFS_FBSD_ENV) - return osi_fbsd_alloc(x, 1); -#else - size = x; - tm = (struct osimem *)AFS_KALLOC(size); -#ifdef AFS_SUN5_ENV - if (!tm) - osi_Panic("osi_Alloc: Couldn't allocate %d bytes; out of memory!\n", - size); -#endif - return (void *)tm; -#endif -} - -#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) - -void * -afs_osi_Alloc_NoSleep(size_t x) -{ - register struct osimem *tm; - register int size; - - AFS_STATCNT(osi_Alloc); - /* 0-length allocs may return NULL ptr from AFS_KALLOC, so we special-case - * things so that NULL returned iff an error occurred */ - if (x == 0) - return &memZero; - - size = x; - AFS_STATS(afs_stats_cmperf.OutStandingAllocs++); - AFS_STATS(afs_stats_cmperf.OutStandingMemUsage += x); - tm = (struct osimem *)AFS_KALLOC_NOSLEEP(size); - return (void *)tm; -} - -#endif /* SUN || SGI */ - -void -afs_osi_Free(void *x, size_t asize) -{ - AFS_STATCNT(osi_Free); - if (x == &memZero) - return; /* check for putting memZero back */ - - AFS_STATS(afs_stats_cmperf.OutStandingAllocs--); - AFS_STATS(afs_stats_cmperf.OutStandingMemUsage -= asize); -#if defined(AFS_LINUX20_ENV) - osi_linux_free(x); -#elif defined(AFS_FBSD_ENV) - osi_fbsd_free(x); -#else - AFS_KFREE((struct osimem *)x, asize); -#endif -} - -void -afs_osi_FreeStr(char *x) -{ - afs_osi_Free(x, strlen(x) + 1); -} - -/* ? is it moderately likely that there are dirty VM pages associated with - * this vnode? - * - * Prereqs: avc must be write-locked - * - * System Dependencies: - *must* support each type of system for which - * memory mapped files are supported, even if all - * it does is return TRUE; - * - * NB: this routine should err on the side of caution for ProcessFS to work - * correctly (or at least, not to introduce worse bugs than already exist) - */ -#ifdef notdef -int -osi_VMDirty_p(struct vcache *avc) -{ - int dirtyPages; - - if (avc->execsOrWriters <= 0) - return 0; /* can't be many dirty pages here, I guess */ - -#if defined (AFS_AIX32_ENV) -#ifdef notdef - /* because of the level of hardware involvment with VM and all the - * warnings about "This routine must be called at VMM interrupt - * level", I thought it would be safest to disable interrupts while - * looking at the software page fault table. */ - - /* convert vm handle into index into array: I think that stoinio is - * always zero... Look into this XXX */ -#define VMHASH(handle) ( \ - ( ((handle) & ~vmker.stoinio) \ - ^ ((((handle) & ~vmker.stoinio) & vmker.stoimask) << vmker.stoihash) \ - ) & 0x000fffff) - - if (avc->segid) { - unsigned int pagef, pri, index, next; - - index = VMHASH(avc->segid); - if (scb_valid(index)) { /* could almost be an ASSERT */ - - pri = disable_ints(); - for (pagef = scb_sidlist(index); pagef >= 0; pagef = next) { - next = pft_sidfwd(pagef); - if (pft_modbit(pagef)) { /* has page frame been modified? */ - enable_ints(pri); - return 1; - } - } - enable_ints(pri); - } - } -#undef VMHASH -#endif -#endif /* AFS_AIX32_ENV */ - -#if defined (AFS_SUN5_ENV) - if (avc->states & CMAPPED) { - struct page *pg; - for (pg = avc->v.v_s.v_Pages; pg; pg = pg->p_vpnext) { - if (pg->p_mod) { - return 1; - } - } - } -#endif - return 0; -} -#endif /* notdef */ - - -/* - * Solaris osi_ReleaseVM should not drop and re-obtain the vcache entry lock. - * This leads to bad races when osi_ReleaseVM() is called from - * afs_InvalidateAllSegments(). - - * We can do this because Solaris osi_VM_Truncate() doesn't care whether the - * vcache entry lock is held or not. - * - * For other platforms, in some cases osi_VM_Truncate() doesn't care, but - * there may be cases where it does care. If so, it would be good to fix - * them so they don't care. Until then, we assume the worst. - * - * Locking: the vcache entry lock is held. It is dropped and re-obtained. - */ -void -osi_ReleaseVM(struct vcache *avc, struct AFS_UCRED *acred) -{ -#ifdef AFS_SUN5_ENV - AFS_GUNLOCK(); - osi_VM_Truncate(avc, 0, acred); - AFS_GLOCK(); -#else - ReleaseWriteLock(&avc->lock); - AFS_GUNLOCK(); - osi_VM_Truncate(avc, 0, acred); - AFS_GLOCK(); - ObtainWriteLock(&avc->lock, 80); -#endif -} - - void shutdown_osi(void) { @@ -610,526 +326,3 @@ afs_osi_suser(void *cr) #endif } #endif - -#if AFS_GCPAGS - -/* afs_osi_TraverseProcTable() - Walk through the systems process - * table, calling afs_GCPAGs_perproc_func() for each process. - */ - -#if defined(AFS_SUN5_ENV) -void -afs_osi_TraverseProcTable(void) -{ - struct proc *prp; - for (prp = practive; prp != NULL; prp = prp->p_next) { - afs_GCPAGs_perproc_func(prp); - } -} -#endif - -#if defined(AFS_HPUX_ENV) - -/* - * NOTE: h/proc_private.h gives the process table locking rules - * It indicates that access to p_cred must be protected by - * mp_mtproc_lock(p); - * mp_mtproc_unlock(p); - * - * The code in sys/pm_prot.c uses pcred_lock() to protect access to - * the process creds, and uses mp_mtproc_lock() only for audit-related - * changes. To be safe, we use both. - */ - -void -afs_osi_TraverseProcTable(void) -{ - register proc_t *p; - int endchain = 0; - - MP_SPINLOCK(activeproc_lock); - MP_SPINLOCK(sched_lock); - pcred_lock(); - - /* - * Instead of iterating through all of proc[], traverse only - * the list of active processes. As an example of this, - * see foreach_process() in sys/vm_sched.c. - * - * We hold the locks for the entire scan in order to get a - * consistent view of the current set of creds. - */ - - for (p = proc; endchain == 0; p = &proc[p->p_fandx]) { - if (p->p_fandx == 0) { - endchain = 1; - } - - if (system_proc(p)) - continue; - - mp_mtproc_lock(p); - afs_GCPAGs_perproc_func(p); - mp_mtproc_unlock(p); - } - - pcred_unlock(); - MP_SPINUNLOCK(sched_lock); - MP_SPINUNLOCK(activeproc_lock); -} -#endif - -#if defined(AFS_SGI_ENV) - -#ifdef AFS_SGI65_ENV -/* TODO: Fix this later. */ -static int -SGI_ProcScanFunc(void *p, void *arg, int mode) -{ - return 0; -} -#else /* AFS_SGI65_ENV */ -static int -SGI_ProcScanFunc(proc_t * p, void *arg, int mode) -{ - afs_int32(*perproc_func) (struct proc *) = arg; - int code = 0; - /* we pass in the function pointer for arg, - * mode ==0 for startup call, ==1 for each valid proc, - * and ==2 for terminate call. - */ - if (mode == 1) { - code = perproc_func(p); - } - return code; -} -#endif /* AFS_SGI65_ENV */ - -void -afs_osi_TraverseProcTable(void) -{ - procscan(SGI_ProcScanFunc, afs_GCPAGs_perproc_func); -} -#endif /* AFS_SGI_ENV */ - -#if defined(AFS_AIX_ENV) -#ifdef AFS_AIX51_ENV -#define max_proc v.ve_proc -#endif -void -afs_osi_TraverseProcTable(void) -{ - struct proc *p; - int i; - - /* - * For binary compatibility, on AIX we need to be careful to use the - * proper size of a struct proc, even if it is different from what - * we were compiled with. - */ - if (!afs_gcpags_procsize) - return; - -#ifndef AFS_AIX51_ENV - simple_lock(&proc_tbl_lock); -#endif - for (p = (struct proc *)v.vb_proc, i = 0; p < max_proc; - p = (struct proc *)((char *)p + afs_gcpags_procsize), i++) { - -#ifdef AFS_AIX51_ENV - if (p->p_pvprocp->pv_stat == SNONE) - continue; - if (p->p_pvprocp->pv_stat == SIDL) - continue; - if (p->p_pvprocp->pv_stat == SEXIT) - continue; -#else - if (p->p_stat == SNONE) - continue; - if (p->p_stat == SIDL) - continue; - if (p->p_stat == SEXIT) - continue; -#endif - - /* sanity check */ - - if (PROCMASK(p->p_pid) != i) { - afs_gcpags = AFS_GCPAGS_EPIDCHECK; - break; - } - - /* sanity check */ - - if ((p->p_nice < P_NICE_MIN) || (P_NICE_MAX < p->p_nice)) { - afs_gcpags = AFS_GCPAGS_ENICECHECK; - break; - } - - afs_GCPAGs_perproc_func(p); - } -#ifndef AFS_AIX51_ENV - simple_unlock(&proc_tbl_lock); -#endif -} -#endif - -#if defined(AFS_OSF_ENV) - -#ifdef AFS_DUX50_ENV -extern struct pid_entry *pidtab; -extern int npid; -#endif - -void -afs_osi_TraverseProcTable(void) -{ - struct pid_entry *pe; -#ifdef AFS_DUX50_ENV -#define pidNPID (pidtab + npid) -#define PID_LOCK() -#define PID_UNLOCK() -#endif - PID_LOCK(); - for (pe = pidtab; pe < pidNPID; ++pe) { - if (pe->pe_proc != PROC_NULL) - afs_GCPAGs_perproc_func(pe->pe_proc); - } - PID_UNLOCK(); -} -#endif - -#if (defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN80_ENV)) || defined(AFS_FBSD_ENV) -void -afs_osi_TraverseProcTable(void) -{ - struct proc *p; - LIST_FOREACH(p, &allproc, p_list) { - if (p->p_stat == SIDL) - continue; - if (p->p_stat == SZOMB) - continue; - if (p->p_flag & P_SYSTEM) - continue; - afs_GCPAGs_perproc_func(p); - } -} -#endif - -#if defined(AFS_LINUX22_ENV) -#ifdef EXPORTED_TASKLIST_LOCK -extern rwlock_t tasklist_lock __attribute__((weak)); -#endif -void -afs_osi_TraverseProcTable() -{ -#if !defined(LINUX_KEYRING_SUPPORT) - struct task_struct *p; - -#ifdef EXPORTED_TASKLIST_LOCK - if (&tasklist_lock) - read_lock(&tasklist_lock); -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) -#ifdef EXPORTED_TASKLIST_LOCK - else -#endif - rcu_read_lock(); -#endif - -#ifdef DEFINED_FOR_EACH_PROCESS - for_each_process(p) if (p->pid) { -#ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE - if (p->exit_state) - continue; -#else - if (p->state & TASK_ZOMBIE) - continue; -#endif - afs_GCPAGs_perproc_func(p); - } -#else - for_each_task(p) if (p->pid) { -#ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE - if (p->exit_state) - continue; -#else - if (p->state & TASK_ZOMBIE) - continue; -#endif - afs_GCPAGs_perproc_func(p); - } -#endif -#ifdef EXPORTED_TASKLIST_LOCK - if (&tasklist_lock) - read_unlock(&tasklist_lock); -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) -#ifdef EXPORTED_TASKLIST_LOCK - else -#endif - rcu_read_unlock(); -#endif -#endif -} -#endif - -/* return a pointer (sometimes a static copy ) to the cred for a - * given AFS_PROC. - * subsequent calls may overwrite the previously returned value. - */ - -#if defined(AFS_SGI65_ENV) -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * p) -{ - return NULL; -} -#elif defined(AFS_HPUX_ENV) -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * p) -{ - if (!p) - return; - - /* - * Cannot use afs_warnuser() here, as the code path - * eventually wants to grab sched_lock, which is - * already held here - */ - - return p_cred(p); -} -#elif defined(AFS_AIX_ENV) - -/* GLOBAL DECLARATIONS */ - -/* - * LOCKS: the caller must do - * simple_lock(&proc_tbl_lock); - * simple_unlock(&proc_tbl_lock); - * around calls to this function. - */ - -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * pproc) -{ - struct AFS_UCRED *pcred = 0; - - /* - * pointer to process user structure valid in *our* - * address space - * - * The user structure for a process is stored in the user - * address space (as distinct from the kernel address - * space), and so to refer to the user structure of a - * different process we must employ special measures. - * - * I followed the example used in the AIX getproc() system - * call in bos/kernel/proc/getproc.c - */ - struct user *xmem_userp; - - struct xmem dp; /* ptr to xmem descriptor */ - int xm; /* xmem result */ - - if (!pproc) { - return pcred; - } - - /* - * The process private segment in which the user - * area is located may disappear. We need to increment - * its use count. Therefore we - * - get the proc_tbl_lock to hold the segment. - * - get the p_lock to lockout vm_cleardata. - * - vm_att to load the segment register (no check) - * - xmattach to bump its use count. - * - release the p_lock. - * - release the proc_tbl_lock. - * - do whatever we need. - * - xmdetach to decrement the use count. - * - vm_det to free the segment register (no check) - */ - - xmem_userp = NULL; - xm = XMEM_FAIL; - /* simple_lock(&proc_tbl_lock); */ -#ifdef __64BIT__ - if (pproc->p_adspace != vm_handle(NULLSEGID, (int32long64_t) 0)) { -#else - if (pproc->p_adspace != NULLSEGVAL) { -#endif - -#ifdef AFS_AIX51_ENV - simple_lock(&pproc->p_pvprocp->pv_lock); -#else - simple_lock(&pproc->p_lock); -#endif - - if (pproc->p_threadcount && -#ifdef AFS_AIX51_ENV - pproc->p_pvprocp->pv_threadlist) { -#else - pproc->p_threadlist) { -#endif - - /* - * arbitrarily pick the first thread in pproc - */ - struct thread *pproc_thread = -#ifdef AFS_AIX51_ENV - pproc->p_pvprocp->pv_threadlist; -#else - pproc->p_threadlist; -#endif - - /* - * location of 'struct user' in pproc's - * address space - */ - struct user *pproc_userp = pproc_thread->t_userp; - - /* - * create a pointer valid in my own address space - */ - - xmem_userp = (struct user *)vm_att(pproc->p_adspace, pproc_userp); - - dp.aspace_id = XMEM_INVAL; - xm = xmattach(xmem_userp, sizeof(*xmem_userp), &dp, SYS_ADSPACE); - } - -#ifdef AFS_AIX51_ENV - simple_unlock(&pproc->p_pvprocp->pv_lock); -#else - simple_unlock(&pproc->p_lock); -#endif - } - /* simple_unlock(&proc_tbl_lock); */ - if (xm == XMEM_SUCC) { - - static struct AFS_UCRED cred; - - /* - * What locking should we use to protect access to the user - * area? If needed also change the code in AIX/osi_groups.c. - */ - - /* copy cred to local address space */ - cred = *xmem_userp->U_cred; - pcred = &cred; - - xmdetach(&dp); - } - if (xmem_userp) { - vm_det((void *)xmem_userp); - } - - return pcred; -} - -#elif defined(AFS_OSF_ENV) -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * pr) -{ - struct AFS_UCRED *rv = NULL; - - if (pr == NULL) { - return NULL; - } - - if ((pr->p_stat == SSLEEP) || (pr->p_stat == SRUN) - || (pr->p_stat == SSTOP)) - rv = pr->p_rcred; - - return rv; -} -#elif defined(AFS_DARWIN80_ENV) -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * pr) -{ - struct AFS_UCRED *rv = NULL; - static struct AFS_UCRED cr; - struct ucred *pcred; - - if (pr == NULL) { - return NULL; - } - pcred = proc_ucred(pr); - cr.cr_ref = 1; - cr.cr_uid = pcred->cr_uid; - cr.cr_ngroups = pcred->cr_ngroups; - memcpy(cr.cr_groups, pcred->cr_groups, - NGROUPS * sizeof(gid_t)); - return &cr; -} -#elif defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * pr) -{ - struct AFS_UCRED *rv = NULL; - static struct AFS_UCRED cr; - - if (pr == NULL) { - return NULL; - } - - if ((pr->p_stat == SSLEEP) || (pr->p_stat == SRUN) - || (pr->p_stat == SSTOP)) { - pcred_readlock(pr); - cr.cr_ref = 1; - cr.cr_uid = pr->p_cred->pc_ucred->cr_uid; - cr.cr_ngroups = pr->p_cred->pc_ucred->cr_ngroups; - memcpy(cr.cr_groups, pr->p_cred->pc_ucred->cr_groups, - NGROUPS * sizeof(gid_t)); - pcred_unlock(pr); - rv = &cr; - } - - return rv; -} -#elif defined(AFS_LINUX22_ENV) -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * pr) -{ - struct AFS_UCRED *rv = NULL; - static struct AFS_UCRED cr; - - if (pr == NULL) { - return NULL; - } - - if ((pr->state == TASK_RUNNING) || (pr->state == TASK_INTERRUPTIBLE) - || (pr->state == TASK_UNINTERRUPTIBLE) - || (pr->state == TASK_STOPPED)) { - cr.cr_ref = 1; - cr.cr_uid = pr->uid; -#if defined(AFS_LINUX26_ENV) - get_group_info(pr->group_info); - cr.cr_group_info = pr->group_info; -#else - cr.cr_ngroups = pr->ngroups; - memcpy(cr.cr_groups, pr->groups, NGROUPS * sizeof(gid_t)); -#endif - rv = &cr; - } - - return rv; -} -#else -const struct AFS_UCRED * -afs_osi_proc2cred(AFS_PROC * pr) -{ - struct AFS_UCRED *rv = NULL; - - if (pr == NULL) { - return NULL; - } - rv = pr->p_cred; - - return rv; -} -#endif - -#endif /* AFS_GCPAGS */ diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index c66ece886..799caabd8 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -150,15 +150,6 @@ extern struct vnodeops *afs_ops; #endif #endif -#ifdef AFS_SGI65_ENV -#define gop_lookupname(fnamep,segflg,followlink,compvpp) \ - lookupname((fnamep),(segflg),(followlink),NULL,(compvpp),\ - NULL) -#else -#define gop_lookupname(fnamep,segflg,followlink,compvpp) \ - lookupname((fnamep),(segflg),(followlink),NULL,(compvpp)) -#endif - /* * In IRIX 6.5 we cannot have DEBUG turned on since certain * system-defined structures are a different size with DEBUG on, the diff --git a/src/afs/afs_osi_alloc.c b/src/afs/afs_osi_alloc.c index cfc1b4f3b..29d7d696e 100644 --- a/src/afs/afs_osi_alloc.c +++ b/src/afs/afs_osi_alloc.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osi_alloc.c,v 1.10.2.3 2007/12/13 19:18:47 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osi_alloc.c,v 1.11.6.6 2008/05/20 19:50:41 shadow Exp $"); @@ -38,6 +38,93 @@ static struct osi_packet { } *freePacketList = NULL, *freeSmallList; afs_lock_t osi_flplock; +static char memZero; /* address of 0 bytes for kmem_alloc */ + +struct osimem { + struct osimem *next; +}; + + +void * +afs_osi_Alloc(size_t x) +{ +#if !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV) + register struct osimem *tm = NULL; + register int size; +#endif + + AFS_STATCNT(osi_Alloc); + /* 0-length allocs may return NULL ptr from AFS_KALLOC, so we special-case + * things so that NULL returned iff an error occurred */ + if (x == 0) + return &memZero; + + AFS_STATS(afs_stats_cmperf.OutStandingAllocs++); + AFS_STATS(afs_stats_cmperf.OutStandingMemUsage += x); +#ifdef AFS_LINUX20_ENV + return osi_linux_alloc(x, 1); +#elif defined(AFS_FBSD_ENV) + return osi_fbsd_alloc(x, 1); +#else + size = x; + tm = (struct osimem *)AFS_KALLOC(size); +#ifdef AFS_SUN5_ENV + if (!tm) + osi_Panic("osi_Alloc: Couldn't allocate %d bytes; out of memory!\n", + size); +#endif + return (void *)tm; +#endif +} + +#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) + +void * +afs_osi_Alloc_NoSleep(size_t x) +{ + register struct osimem *tm; + register int size; + + AFS_STATCNT(osi_Alloc); + /* 0-length allocs may return NULL ptr from AFS_KALLOC, so we special-case + * things so that NULL returned iff an error occurred */ + if (x == 0) + return &memZero; + + size = x; + AFS_STATS(afs_stats_cmperf.OutStandingAllocs++); + AFS_STATS(afs_stats_cmperf.OutStandingMemUsage += x); + tm = (struct osimem *)AFS_KALLOC_NOSLEEP(size); + return (void *)tm; +} + +#endif /* SUN || SGI */ + +void +afs_osi_Free(void *x, size_t asize) +{ + AFS_STATCNT(osi_Free); + if (x == &memZero) + return; /* check for putting memZero back */ + + AFS_STATS(afs_stats_cmperf.OutStandingAllocs--); + AFS_STATS(afs_stats_cmperf.OutStandingMemUsage -= asize); +#if defined(AFS_LINUX20_ENV) + osi_linux_free(x); +#elif defined(AFS_FBSD_ENV) + osi_fbsd_free(x); +#else + AFS_KFREE((struct osimem *)x, asize); +#endif +} + +void +afs_osi_FreeStr(char *x) +{ + afs_osi_Free(x, strlen(x) + 1); +} + + /* free space allocated by AllocLargeSpace. Also called by mclput when freeing * a packet allocated by osi_NetReceive. */ @@ -146,18 +233,18 @@ shutdown_osinet(void) while ((tp = freePacketList)) { freePacketList = tp->next; + afs_osi_Free(tp, AFS_LRALLOCSIZ); #ifdef KERNEL_HAVE_PIN unpin(tp, AFS_LRALLOCSIZ); #endif - afs_osi_Free(tp, AFS_LRALLOCSIZ); } while ((tp = freeSmallList)) { freeSmallList = tp->next; + afs_osi_Free(tp, AFS_SMALLOCSIZ); #ifdef KERNEL_HAVE_PIN unpin(tp, AFS_SMALLOCSIZ); #endif - afs_osi_Free(tp, AFS_SMALLOCSIZ); } LOCK_INIT(&osi_fsplock, "osi_fsplock"); LOCK_INIT(&osi_flplock, "osi_flplock"); diff --git a/src/afs/afs_osi_gcpags.c b/src/afs/afs_osi_gcpags.c new file mode 100644 index 000000000..a38266502 --- /dev/null +++ b/src/afs/afs_osi_gcpags.c @@ -0,0 +1,543 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_osi_gcpags.c,v 1.1.2.6 2007/04/03 18:54:15 shadow Exp $"); + +#include "afs/sysincludes.h" /* Standard vendor system headers */ +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" /* afs statistics */ +#ifdef AFS_AIX_ENV +#include /* for vm_att(), vm_det() */ +#endif + +#if AFS_GCPAGS + +/* afs_osi_TraverseProcTable() - Walk through the systems process + * table, calling afs_GCPAGs_perproc_func() for each process. + */ + +#if defined(AFS_SUN5_ENV) +void +afs_osi_TraverseProcTable(void) +{ + struct proc *prp; + for (prp = practive; prp != NULL; prp = prp->p_next) { + afs_GCPAGs_perproc_func(prp); + } +} +#endif + +#if defined(AFS_HPUX_ENV) + +/* + * NOTE: h/proc_private.h gives the process table locking rules + * It indicates that access to p_cred must be protected by + * mp_mtproc_lock(p); + * mp_mtproc_unlock(p); + * + * The code in sys/pm_prot.c uses pcred_lock() to protect access to + * the process creds, and uses mp_mtproc_lock() only for audit-related + * changes. To be safe, we use both. + */ + +void +afs_osi_TraverseProcTable(void) +{ + register proc_t *p; + int endchain = 0; + + MP_SPINLOCK(activeproc_lock); + MP_SPINLOCK(sched_lock); + pcred_lock(); + + /* + * Instead of iterating through all of proc[], traverse only + * the list of active processes. As an example of this, + * see foreach_process() in sys/vm_sched.c. + * + * We hold the locks for the entire scan in order to get a + * consistent view of the current set of creds. + */ + + for (p = proc; endchain == 0; p = &proc[p->p_fandx]) { + if (p->p_fandx == 0) { + endchain = 1; + } + + if (system_proc(p)) + continue; + + mp_mtproc_lock(p); + afs_GCPAGs_perproc_func(p); + mp_mtproc_unlock(p); + } + + pcred_unlock(); + MP_SPINUNLOCK(sched_lock); + MP_SPINUNLOCK(activeproc_lock); +} +#endif + +#if defined(AFS_SGI_ENV) + +#ifdef AFS_SGI65_ENV +/* TODO: Fix this later. */ +static int +SGI_ProcScanFunc(void *p, void *arg, int mode) +{ + return 0; +} +#else /* AFS_SGI65_ENV */ +static int +SGI_ProcScanFunc(proc_t * p, void *arg, int mode) +{ + afs_int32(*perproc_func) (struct proc *) = arg; + int code = 0; + /* we pass in the function pointer for arg, + * mode ==0 for startup call, ==1 for each valid proc, + * and ==2 for terminate call. + */ + if (mode == 1) { + code = perproc_func(p); + } + return code; +} +#endif /* AFS_SGI65_ENV */ + +void +afs_osi_TraverseProcTable(void) +{ + procscan(SGI_ProcScanFunc, afs_GCPAGs_perproc_func); +} +#endif /* AFS_SGI_ENV */ + +#if defined(AFS_AIX_ENV) +#ifdef AFS_AIX51_ENV +#define max_proc v.ve_proc +#endif +void +afs_osi_TraverseProcTable(void) +{ + struct proc *p; + int i; + + /* + * For binary compatibility, on AIX we need to be careful to use the + * proper size of a struct proc, even if it is different from what + * we were compiled with. + */ + if (!afs_gcpags_procsize) + return; + +#ifndef AFS_AIX51_ENV + simple_lock(&proc_tbl_lock); +#endif + for (p = (struct proc *)v.vb_proc, i = 0; p < max_proc; + p = (struct proc *)((char *)p + afs_gcpags_procsize), i++) { + +#ifdef AFS_AIX51_ENV + if (p->p_pvprocp->pv_stat == SNONE) + continue; + if (p->p_pvprocp->pv_stat == SIDL) + continue; + if (p->p_pvprocp->pv_stat == SEXIT) + continue; +#else + if (p->p_stat == SNONE) + continue; + if (p->p_stat == SIDL) + continue; + if (p->p_stat == SEXIT) + continue; +#endif + + /* sanity check */ + + if (PROCMASK(p->p_pid) != i) { + afs_gcpags = AFS_GCPAGS_EPIDCHECK; + break; + } + + /* sanity check */ + + if ((p->p_nice < P_NICE_MIN) || (P_NICE_MAX < p->p_nice)) { + afs_gcpags = AFS_GCPAGS_ENICECHECK; + break; + } + + afs_GCPAGs_perproc_func(p); + } +#ifndef AFS_AIX51_ENV + simple_unlock(&proc_tbl_lock); +#endif +} +#endif + +#if defined(AFS_OSF_ENV) + +#ifdef AFS_DUX50_ENV +extern struct pid_entry *pidtab; +extern int npid; +#endif + +void +afs_osi_TraverseProcTable(void) +{ + struct pid_entry *pe; +#ifdef AFS_DUX50_ENV +#define pidNPID (pidtab + npid) +#define PID_LOCK() +#define PID_UNLOCK() +#endif + PID_LOCK(); + for (pe = pidtab; pe < pidNPID; ++pe) { + if (pe->pe_proc != PROC_NULL) + afs_GCPAGs_perproc_func(pe->pe_proc); + } + PID_UNLOCK(); +} +#endif + +#if (defined(AFS_DARWIN_ENV) && !defined(AFS_DARWIN80_ENV)) || defined(AFS_FBSD_ENV) +void +afs_osi_TraverseProcTable(void) +{ + struct proc *p; + LIST_FOREACH(p, &allproc, p_list) { + if (p->p_stat == SIDL) + continue; + if (p->p_stat == SZOMB) + continue; + if (p->p_flag & P_SYSTEM) + continue; + afs_GCPAGs_perproc_func(p); + } +} +#endif + +#if defined(AFS_LINUX22_ENV) +#ifdef EXPORTED_TASKLIST_LOCK +extern rwlock_t tasklist_lock __attribute__((weak)); +#endif +void +afs_osi_TraverseProcTable() +{ +#if !defined(LINUX_KEYRING_SUPPORT) + struct task_struct *p; +#ifdef EXPORTED_TASKLIST_LOCK + if (&tasklist_lock) + read_lock(&tasklist_lock); +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +#ifdef EXPORTED_TASKLIST_LOCK + else +#endif + rcu_read_lock(); +#endif + +#ifdef DEFINED_FOR_EACH_PROCESS + for_each_process(p) if (p->pid) { +#ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE + if (p->exit_state) + continue; +#else + if (p->state & TASK_ZOMBIE) + continue; +#endif + afs_GCPAGs_perproc_func(p); + } +#else + for_each_task(p) if (p->pid) { +#ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE + if (p->exit_state) + continue; +#else + if (p->state & TASK_ZOMBIE) + continue; +#endif + afs_GCPAGs_perproc_func(p); + } +#endif +#ifdef EXPORTED_TASKLIST_LOCK + if (&tasklist_lock) + read_unlock(&tasklist_lock); +#endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +#ifdef EXPORTED_TASKLIST_LOCK + else +#endif + rcu_read_unlock(); +#endif +#endif +} +#endif + +/* return a pointer (sometimes a static copy ) to the cred for a + * given AFS_PROC. + * subsequent calls may overwrite the previously returned value. + */ + +#if defined(AFS_SGI65_ENV) +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * p) +{ + return NULL; +} +#elif defined(AFS_HPUX_ENV) +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * p) +{ + if (!p) + return; + + /* + * Cannot use afs_warnuser() here, as the code path + * eventually wants to grab sched_lock, which is + * already held here + */ + + return p_cred(p); +} +#elif defined(AFS_AIX_ENV) + +/* GLOBAL DECLARATIONS */ + +/* + * LOCKS: the caller must do + * simple_lock(&proc_tbl_lock); + * simple_unlock(&proc_tbl_lock); + * around calls to this function. + */ + +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * pproc) +{ + struct AFS_UCRED *pcred = 0; + + /* + * pointer to process user structure valid in *our* + * address space + * + * The user structure for a process is stored in the user + * address space (as distinct from the kernel address + * space), and so to refer to the user structure of a + * different process we must employ special measures. + * + * I followed the example used in the AIX getproc() system + * call in bos/kernel/proc/getproc.c + */ + struct user *xmem_userp; + + struct xmem dp; /* ptr to xmem descriptor */ + int xm; /* xmem result */ + + if (!pproc) { + return pcred; + } + + /* + * The process private segment in which the user + * area is located may disappear. We need to increment + * its use count. Therefore we + * - get the proc_tbl_lock to hold the segment. + * - get the p_lock to lockout vm_cleardata. + * - vm_att to load the segment register (no check) + * - xmattach to bump its use count. + * - release the p_lock. + * - release the proc_tbl_lock. + * - do whatever we need. + * - xmdetach to decrement the use count. + * - vm_det to free the segment register (no check) + */ + + xmem_userp = NULL; + xm = XMEM_FAIL; + /* simple_lock(&proc_tbl_lock); */ +#ifdef __64BIT__ + if (pproc->p_adspace != vm_handle(NULLSEGID, (int32long64_t) 0)) { +#else + if (pproc->p_adspace != NULLSEGVAL) { +#endif + +#ifdef AFS_AIX51_ENV + simple_lock(&pproc->p_pvprocp->pv_lock); +#else + simple_lock(&pproc->p_lock); +#endif + + if (pproc->p_threadcount && +#ifdef AFS_AIX51_ENV + pproc->p_pvprocp->pv_threadlist) { +#else + pproc->p_threadlist) { +#endif + + /* + * arbitrarily pick the first thread in pproc + */ + struct thread *pproc_thread = +#ifdef AFS_AIX51_ENV + pproc->p_pvprocp->pv_threadlist; +#else + pproc->p_threadlist; +#endif + + /* + * location of 'struct user' in pproc's + * address space + */ + struct user *pproc_userp = pproc_thread->t_userp; + + /* + * create a pointer valid in my own address space + */ + + xmem_userp = (struct user *)vm_att(pproc->p_adspace, pproc_userp); + + dp.aspace_id = XMEM_INVAL; + xm = xmattach(xmem_userp, sizeof(*xmem_userp), &dp, SYS_ADSPACE); + } + +#ifdef AFS_AIX51_ENV + simple_unlock(&pproc->p_pvprocp->pv_lock); +#else + simple_unlock(&pproc->p_lock); +#endif + } + /* simple_unlock(&proc_tbl_lock); */ + if (xm == XMEM_SUCC) { + + static struct AFS_UCRED cred; + + /* + * What locking should we use to protect access to the user + * area? If needed also change the code in AIX/osi_groups.c. + */ + + /* copy cred to local address space */ + cred = *xmem_userp->U_cred; + pcred = &cred; + + xmdetach(&dp); + } + if (xmem_userp) { + vm_det((void *)xmem_userp); + } + + return pcred; +} + +#elif defined(AFS_OSF_ENV) +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * pr) +{ + struct AFS_UCRED *rv = NULL; + + if (pr == NULL) { + return NULL; + } + + if ((pr->p_stat == SSLEEP) || (pr->p_stat == SRUN) + || (pr->p_stat == SSTOP)) + rv = pr->p_rcred; + + return rv; +} +#elif defined(AFS_DARWIN80_ENV) +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * pr) +{ + struct AFS_UCRED *rv = NULL; + static struct AFS_UCRED cr; + struct ucred *pcred; + + if (pr == NULL) { + return NULL; + } + pcred = proc_ucred(pr); + cr.cr_ref = 1; + cr.cr_uid = pcred->cr_uid; + cr.cr_ngroups = pcred->cr_ngroups; + memcpy(cr.cr_groups, pcred->cr_groups, + NGROUPS * sizeof(gid_t)); + return &cr; +} +#elif defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * pr) +{ + struct AFS_UCRED *rv = NULL; + static struct AFS_UCRED cr; + + if (pr == NULL) { + return NULL; + } + + if ((pr->p_stat == SSLEEP) || (pr->p_stat == SRUN) + || (pr->p_stat == SSTOP)) { + pcred_readlock(pr); + cr.cr_ref = 1; + cr.cr_uid = pr->p_cred->pc_ucred->cr_uid; + cr.cr_ngroups = pr->p_cred->pc_ucred->cr_ngroups; + memcpy(cr.cr_groups, pr->p_cred->pc_ucred->cr_groups, + NGROUPS * sizeof(gid_t)); + pcred_unlock(pr); + rv = &cr; + } + + return rv; +} +#elif defined(AFS_LINUX22_ENV) +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * pr) +{ + struct AFS_UCRED *rv = NULL; + static struct AFS_UCRED cr; + + if (pr == NULL) { + return NULL; + } + + if ((pr->state == TASK_RUNNING) || (pr->state == TASK_INTERRUPTIBLE) + || (pr->state == TASK_UNINTERRUPTIBLE) + || (pr->state == TASK_STOPPED)) { + cr.cr_ref = 1; + cr.cr_uid = pr->uid; +#if defined(AFS_LINUX26_ENV) + get_group_info(pr->group_info); + cr.cr_group_info = pr->group_info; +#else + cr.cr_ngroups = pr->ngroups; + memcpy(cr.cr_groups, pr->groups, NGROUPS * sizeof(gid_t)); +#endif + rv = &cr; + } + + return rv; +} +#else +const struct AFS_UCRED * +afs_osi_proc2cred(AFS_PROC * pr) +{ + struct AFS_UCRED *rv = NULL; + + if (pr == NULL) { + return NULL; + } + rv = pr->p_cred; + + return rv; +} +#endif + +#endif /* AFS_GCPAGS */ diff --git a/src/afs/afs_osi_pag.c b/src/afs/afs_osi_pag.c index 9494534c7..075141d24 100644 --- a/src/afs/afs_osi_pag.c +++ b/src/afs/afs_osi_pag.c @@ -23,7 +23,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osi_pag.c,v 1.21.2.11 2008/01/04 18:40:30 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osi_pag.c,v 1.29.4.12 2008/01/04 18:38:34 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -429,9 +429,20 @@ AddPag(afs_int32 aval, struct AFS_UCRED **credpp) int afs_InitReq(register struct vrequest *av, struct AFS_UCRED *acred) { + int code; + AFS_STATCNT(afs_InitReq); + memset(av, 0, sizeof(*av)); if (afs_shuttingdown) return EIO; + +#ifdef AFS_LINUX26_ENV +#if !defined(AFS_NONFSTRANS) + if (osi_linux_nfs_initreq(av, acred, &code)) + return code; +#endif +#endif + av->uid = PagInCred(acred); if (av->uid == NOPAG) { /* Afs doesn't use the unix uid for anuthing except a handle @@ -551,11 +562,7 @@ PagInCred(const struct AFS_UCRED *cred) g0 = cred->cr_groups[1]; g1 = cred->cr_groups[2]; #else -#if defined(AFS_AIX51_ENV) - if (kcred_getpag(cred, PAG_AFS, &pag) < 0 || pag == 0) - pag = NOPAG; - return pag; -#elif defined(AFS_AIX_ENV) +#if defined(AFS_AIX_ENV) if (cred->cr_ngrps < 2) { return NOPAG; } @@ -596,7 +603,7 @@ PagInCred(const struct AFS_UCRED *cred) #endif out: #if defined(AFS_LINUX26_ENV) && defined(LINUX_KEYRING_SUPPORT) - if (pag == NOPAG) { + if (pag == NOPAG && cred->cr_rgid != NFSXLATOR_CRED) { struct key *key; afs_uint32 upag, newpag; diff --git a/src/afs/afs_osi_uio.c b/src/afs/afs_osi_uio.c index 619893b73..63fb608d3 100644 --- a/src/afs/afs_osi_uio.c +++ b/src/afs/afs_osi_uio.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osi_uio.c,v 1.8.2.2 2005/10/12 06:17:25 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osi_uio.c,v 1.12 2005/10/13 15:12:07 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/afs_osi_vget.c b/src/afs/afs_osi_vget.c index 704f7a3e8..e3d9b4066 100644 --- a/src/afs/afs_osi_vget.c +++ b/src/afs/afs_osi_vget.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osi_vget.c,v 1.10.2.1 2005/10/05 05:58:27 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osi_vget.c,v 1.13 2005/10/13 15:12:07 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ diff --git a/src/afs/afs_osi_vm.c b/src/afs/afs_osi_vm.c new file mode 100644 index 000000000..5472cfce8 --- /dev/null +++ b/src/afs/afs_osi_vm.c @@ -0,0 +1,256 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_osi_vm.c,v 1.1.2.2 2006/07/31 21:27:38 shadow Exp $"); + +#include "afs/sysincludes.h" /* Standard vendor system headers */ +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" /* afs statistics */ +#ifdef AFS_AIX_ENV +#include /* for vm_att(), vm_det() */ +#endif + +int +osi_Active(register struct vcache *avc) +{ + AFS_STATCNT(osi_Active); +#if defined(AFS_AIX_ENV) || defined(AFS_OSF_ENV) || defined(AFS_SUN5_ENV) || (AFS_LINUX20_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + if ((avc->opens > 0) || (avc->states & CMAPPED)) + return 1; /* XXX: Warning, verify this XXX */ +#elif defined(AFS_SGI_ENV) + if ((avc->opens > 0) || AFS_VN_MAPPED(AFSTOV(avc))) + return 1; +#else + if (avc->opens > 0 || (AFSTOV(avc)->v_flag & VTEXT)) + return (1); +#endif + return 0; +} + +/* this call, unlike osi_FlushText, is supposed to discard caches that may + contain invalid information if a file is written remotely, but that may + contain valid information that needs to be written back if the file is + being written locally. It doesn't subsume osi_FlushText, since the latter + function may be needed to flush caches that are invalidated by local writes. + + avc->pvnLock is already held, avc->lock is guaranteed not to be held (by + us, of course). +*/ +void +osi_FlushPages(register struct vcache *avc, struct AFS_UCRED *credp) +{ + afs_hyper_t origDV; + ObtainReadLock(&avc->lock); + /* If we've already purged this version, or if we're the ones + * writing this version, don't flush it (could lose the + * data we're writing). */ + if ((hcmp((avc->m.DataVersion), (avc->mapDV)) <= 0) + || ((avc->execsOrWriters > 0) && afs_DirtyPages(avc))) { + ReleaseReadLock(&avc->lock); + return; + } + ReleaseReadLock(&avc->lock); + ObtainWriteLock(&avc->lock, 10); + /* Check again */ + if ((hcmp((avc->m.DataVersion), (avc->mapDV)) <= 0) + || ((avc->execsOrWriters > 0) && afs_DirtyPages(avc))) { + ReleaseWriteLock(&avc->lock); + return; + } + if (hiszero(avc->mapDV)) { + hset(avc->mapDV, avc->m.DataVersion); + ReleaseWriteLock(&avc->lock); + return; + } + + AFS_STATCNT(osi_FlushPages); + hset(origDV, avc->m.DataVersion); + afs_Trace3(afs_iclSetp, CM_TRACE_FLUSHPAGES, ICL_TYPE_POINTER, avc, + ICL_TYPE_INT32, origDV.low, ICL_TYPE_INT32, avc->m.Length); + + ReleaseWriteLock(&avc->lock); + AFS_GUNLOCK(); + osi_VM_FlushPages(avc, credp); + AFS_GLOCK(); + ObtainWriteLock(&avc->lock, 88); + + /* do this last, and to original version, since stores may occur + * while executing above PUTPAGE call */ + hset(avc->mapDV, origDV); + ReleaseWriteLock(&avc->lock); +} + +#ifdef AFS_TEXT_ENV + +/* This call is supposed to flush all caches that might be invalidated + * by either a local write operation or a write operation done on + * another client. This call may be called repeatedly on the same + * version of a file, even while a file is being written, so it + * shouldn't do anything that would discard newly written data before + * it is written to the file system. */ + +void +osi_FlushText_really(register struct vcache *vp) +{ + afs_hyper_t fdv; /* version before which we'll flush */ + + AFS_STATCNT(osi_FlushText); + /* see if we've already flushed this data version */ + if (hcmp(vp->m.DataVersion, vp->flushDV) <= 0) + return; + + MObtainWriteLock(&afs_ftf, 317); + hset(fdv, vp->m.DataVersion); + + /* why this disgusting code below? + * xuntext, called by xrele, doesn't notice when it is called + * with a freed text object. Sun continually calls xrele or xuntext + * without any locking, as long as VTEXT is set on the + * corresponding vnode. + * But, if the text object is locked when you check the VTEXT + * flag, several processes can wait in xuntext, waiting for the + * text lock; when the second one finally enters xuntext's + * critical region, the text object is already free, but the check + * was already done by xuntext's caller. + * Even worse, it turns out that xalloc locks the text object + * before reading or stating a file via the vnode layer. Thus, we + * could end up in getdcache, being asked to bring in a new + * version of a file, but the corresponding text object could be + * locked. We can't flush the text object without causing + * deadlock, so now we just don't try to lock the text object + * unless it is guaranteed to work. And we try to flush the text + * when we need to a bit more often at the vnode layer. Sun + * really blew the vm-cache flushing interface. + */ + +#if defined (AFS_HPUX_ENV) + if (vp->v.v_flag & VTEXT) { + xrele(vp); + + if (vp->v.v_flag & VTEXT) { /* still has a text object? */ + MReleaseWriteLock(&afs_ftf); + return; + } + } +#endif + + /* next do the stuff that need not check for deadlock problems */ + mpurge(vp); + + /* finally, record that we've done it */ + hset(vp->flushDV, fdv); + MReleaseWriteLock(&afs_ftf); + +} +#endif /* AFS_TEXT_ENV */ + +/* ? is it moderately likely that there are dirty VM pages associated with + * this vnode? + * + * Prereqs: avc must be write-locked + * + * System Dependencies: - *must* support each type of system for which + * memory mapped files are supported, even if all + * it does is return TRUE; + * + * NB: this routine should err on the side of caution for ProcessFS to work + * correctly (or at least, not to introduce worse bugs than already exist) + */ +#ifdef notdef +int +osi_VMDirty_p(struct vcache *avc) +{ + int dirtyPages; + + if (avc->execsOrWriters <= 0) + return 0; /* can't be many dirty pages here, I guess */ + +#if defined (AFS_AIX32_ENV) +#ifdef notdef + /* because of the level of hardware involvment with VM and all the + * warnings about "This routine must be called at VMM interrupt + * level", I thought it would be safest to disable interrupts while + * looking at the software page fault table. */ + + /* convert vm handle into index into array: I think that stoinio is + * always zero... Look into this XXX */ +#define VMHASH(handle) ( \ + ( ((handle) & ~vmker.stoinio) \ + ^ ((((handle) & ~vmker.stoinio) & vmker.stoimask) << vmker.stoihash) \ + ) & 0x000fffff) + + if (avc->segid) { + unsigned int pagef, pri, index, next; + + index = VMHASH(avc->segid); + if (scb_valid(index)) { /* could almost be an ASSERT */ + + pri = disable_ints(); + for (pagef = scb_sidlist(index); pagef >= 0; pagef = next) { + next = pft_sidfwd(pagef); + if (pft_modbit(pagef)) { /* has page frame been modified? */ + enable_ints(pri); + return 1; + } + } + enable_ints(pri); + } + } +#undef VMHASH +#endif +#endif /* AFS_AIX32_ENV */ + +#if defined (AFS_SUN5_ENV) + if (avc->states & CMAPPED) { + struct page *pg; + for (pg = avc->v.v_s.v_Pages; pg; pg = pg->p_vpnext) { + if (pg->p_mod) { + return 1; + } + } + } +#endif + return 0; +} +#endif /* notdef */ + + +/* + * Solaris osi_ReleaseVM should not drop and re-obtain the vcache entry lock. + * This leads to bad races when osi_ReleaseVM() is called from + * afs_InvalidateAllSegments(). + + * We can do this because Solaris osi_VM_Truncate() doesn't care whether the + * vcache entry lock is held or not. + * + * For other platforms, in some cases osi_VM_Truncate() doesn't care, but + * there may be cases where it does care. If so, it would be good to fix + * them so they don't care. Until then, we assume the worst. + * + * Locking: the vcache entry lock is held. It is dropped and re-obtained. + */ +void +osi_ReleaseVM(struct vcache *avc, struct AFS_UCRED *acred) +{ +#ifdef AFS_SUN5_ENV + AFS_GUNLOCK(); + osi_VM_Truncate(avc, 0, acred); + AFS_GLOCK(); +#else + ReleaseWriteLock(&avc->lock); + AFS_GUNLOCK(); + osi_VM_Truncate(avc, 0, acred); + AFS_GLOCK(); + ObtainWriteLock(&avc->lock, 80); +#endif +} diff --git a/src/afs/afs_osidnlc.c b/src/afs/afs_osidnlc.c index 5caf6549f..3b7512c9f 100644 --- a/src/afs/afs_osidnlc.c +++ b/src/afs/afs_osidnlc.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osidnlc.c,v 1.8.2.6 2007/10/19 20:40:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osidnlc.c,v 1.13.2.1 2007/10/19 20:39:07 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ diff --git a/src/afs/afs_pag_call.c b/src/afs/afs_pag_call.c new file mode 100644 index 000000000..256cf496a --- /dev/null +++ b/src/afs/afs_pag_call.c @@ -0,0 +1,561 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_pag_call.c,v 1.1.2.3 2008/07/01 03:35:23 shadow Exp $"); + +#include "afs/sysincludes.h" /* Standard vendor system headers */ +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" +#include "rx/rx_globals.h" +#if !defined(UKERNEL) && !defined(AFS_LINUX20_ENV) +#include "net/if.h" +#ifdef AFS_SGI62_ENV +#include "h/hashing.h" +#endif +#if !defined(AFS_HPUX110_ENV) && !defined(AFS_DARWIN60_ENV) +#include "netinet/in_var.h" +#endif +#endif /* !defined(UKERNEL) */ +#ifdef AFS_LINUX22_ENV +#include "h/smp_lock.h" +#endif +#include "rmtsys.h" +#include "pagcb.h" + + +afs_int32 afs_termState = 0; +afs_int32 afs_gcpags = AFS_GCPAGS; +int afs_shuttingdown = 0; +int afs_cold_shutdown = 0; +int afs_resourceinit_flag = 0; +afs_int32 afs_nfs_server_addr; +struct interfaceAddr afs_cb_interface; +struct afs_osi_WaitHandle AFS_WaitHandler; +static struct rx_securityClass *srv_secobj; +static struct rx_securityClass *clt_secobj; +static struct rx_service *stats_svc; +static struct rx_service *pagcb_svc; +static struct rx_connection *rmtsys_conn; +char *afs_sysname = 0; +char *afs_sysnamelist[MAXNUMSYSNAMES]; +int afs_sysnamecount = 0; +int afs_sysnamegen = 0; +afs_int32 afs_showflags = GAGUSER | GAGCONSOLE; /* show all messages */ + + +void afs_Daemon(void) +{ + afs_int32 now, last10MinCheck, last60MinCheck; + + last10MinCheck = 0; + last60MinCheck = 0; + while (1) { + rx_CheckPackets(); + now = osi_Time(); + + if (last10MinCheck + 600 < now) { + afs_GCUserData(0); + } + + if (last60MinCheck + 3600 < now) { + afs_int32 didany; + afs_GCPAGs(&didany); + } + + now = 20000 - (osi_Time() - now); + afs_osi_Wait(now, &AFS_WaitHandler, 0); + + if (afs_termState == AFSOP_STOP_AFS) { +#if defined(AFS_SUN5_ENV) || defined(RXK_LISTENER_ENV) + afs_termState = AFSOP_STOP_RXEVENT; +#else + afs_termState = AFSOP_STOP_COMPLETE; +#endif + afs_osi_Wakeup(&afs_termState); + return; + } + } +} + + +void afspag_Init(afs_int32 nfs_server_addr) +{ + struct clientcred ccred; + struct rmtbulk idata, odata; + afs_int32 code, err, addr, obuf; + int i; + + afs_uuid_create(&afs_cb_interface.uuid); + + AFS_GLOCK(); + + afs_InitStats(); + rx_Init(htons(7001)); + + AFS_STATCNT(afs_ResourceInit); + RWLOCK_INIT(&afs_xuser, "afs_xuser"); + RWLOCK_INIT(&afs_xpagcell, "afs_xpagcell"); + RWLOCK_INIT(&afs_xpagsys, "afs_xpagsys"); + RWLOCK_INIT(&afs_icl_lock, "afs_icl_lock"); +#ifndef AFS_FBSD_ENV + LOCK_INIT(&osi_fsplock, "osi_fsplock"); + LOCK_INIT(&osi_flplock, "osi_flplock"); +#endif + + afs_resourceinit_flag = 1; + afs_nfs_server_addr = nfs_server_addr; + for (i = 0; i < MAXNUMSYSNAMES; i++) + afs_sysnamelist[i] = afs_osi_Alloc(MAXSYSNAME); + afs_sysname = afs_sysnamelist[0]; + strcpy(afs_sysname, SYS_NAME); + afs_sysnamecount = 1; + afs_sysnamegen++; + + srv_secobj = rxnull_NewServerSecurityObject(); + stats_svc = rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", &srv_secobj, + 1, RXSTATS_ExecuteRequest); + pagcb_svc = rx_NewService(0, PAGCB_SERVICEID, "pagcb", &srv_secobj, + 1, PAGCB_ExecuteRequest); + rx_StartServer(0); + + clt_secobj = rxnull_NewClientSecurityObject(); + rmtsys_conn = rx_NewConnection(nfs_server_addr, htons(7009), + RMTSYS_SERVICEID, clt_secobj, 0); + +#ifdef RXK_LISTENER_ENV + afs_start_thread(rxk_Listener, "Rx Listener"); +#endif + afs_start_thread(rx_ServerProc, "Rx Server Thread"); + afs_start_thread(afs_rxevent_daemon, "Rx Event Daemon"); + afs_start_thread(afs_Daemon, "AFS PAG Daemon"); + + afs_icl_InitLogs(); + + AFS_GUNLOCK(); + + /* If it's reachable, tell the translator to nuke our creds. + * We should be more agressive about making sure this gets done, + * even if the translator is unreachable when we boot. + */ + addr = obuf = err = 0; + idata.rmtbulk_len = sizeof(addr); + idata.rmtbulk_val = (char *)&addr; + odata.rmtbulk_len = sizeof(obuf); + odata.rmtbulk_val = (char *)&obuf; + memset(&ccred, 0, sizeof(ccred)); + code = RMTSYS_Pioctl(rmtsys_conn, &ccred, NIL_PATHP, 0x4F01, 0, + &idata, &odata, &err); +} /*afs_ResourceInit */ + + +/* called with the GLOCK held */ +void afspag_Shutdown(void) +{ + if (afs_shuttingdown) + return; + afs_shuttingdown = 1; + afs_termState = AFSOP_STOP_RXCALLBACK; + rx_WakeupServerProcs(); + while (afs_termState == AFSOP_STOP_RXCALLBACK) + afs_osi_Sleep(&afs_termState); + /* rx_ServerProc sets AFS_STOP_AFS */ + + while (afs_termState == AFSOP_STOP_AFS) { + afs_osi_CancelWait(&AFS_WaitHandler); + afs_osi_Sleep(&afs_termState); + } + /* afs_Daemon sets AFS_STOP_RXEVENT */ + +#if defined(AFS_SUN5_ENV) || defined(RXK_LISTENER_ENV) + while (afs_termState == AFSOP_STOP_RXEVENT) + afs_osi_Sleep(&afs_termState); + /* afs_rxevent_daemon sets AFSOP_STOP_RXK_LISTENER */ + +#if defined(RXK_LISTENER_ENV) + afs_osi_UnmaskRxkSignals(); + osi_StopListener(); + while (afs_termState == AFSOP_STOP_RXK_LISTENER) + afs_osi_Sleep(&afs_termState); + /* rxk_Listener sets AFSOP_STOP_COMPLETE */ +#endif +#endif +} + +static void token_conversion(char *buffer, int buf_size, int in) +{ + struct ClearToken *ticket; + afs_int32 *lptr, n; + + /* secret ticket */ + if (buf_size < 4) return; + lptr = (afs_int32 *)buffer; + buffer += 4; buf_size -= 4; + if (in) { + *lptr = ntohl(*lptr); + n = *lptr; + } else { + n = *lptr; + *lptr = htonl(*lptr); + } + if (n < 0 || buf_size < n) return; + buffer += n; buf_size -= n; + + /* clear token */ + if (buf_size < 4) return; + lptr = (afs_int32 *)buffer; + buffer += 4; buf_size -= 4; + if (in) { + *lptr = ntohl(*lptr); + n = *lptr; + } else { + n = *lptr; + *lptr = htonl(*lptr); + } + if (n < 0 || buf_size < n) return; + if (n >= sizeof(struct ClearToken)) { + ticket = (struct ClearToken *)buffer; + if (in) { + ticket->AuthHandle = ntohl(ticket->AuthHandle); + ticket->ViceId = ntohl(ticket->ViceId); + ticket->BeginTimestamp = ntohl(ticket->BeginTimestamp); + ticket->EndTimestamp = ntohl(ticket->EndTimestamp); + } else { + ticket->AuthHandle = htonl(ticket->AuthHandle); + ticket->ViceId = htonl(ticket->ViceId); + ticket->BeginTimestamp = htonl(ticket->BeginTimestamp); + ticket->EndTimestamp = htonl(ticket->EndTimestamp); + } + } + buffer += n; buf_size -= n; + + /* primary flag */ + if (buf_size < 4) return; + lptr = (afs_int32 *)buffer; + if (in) { + *lptr = ntohl(*lptr); + } else { + *lptr = htonl((*lptr) & ~0x8000); + } + return; +} + +static void FetchVolumeStatus_conversion(char *buffer, int buf_size, int in) +{ + AFSFetchVolumeStatus *status = (AFSFetchVolumeStatus *)buffer; + + if (buf_size < sizeof(AFSFetchVolumeStatus)) + return; + if (in) { + status->Vid = ntohl(status->Vid); + status->ParentId = ntohl(status->ParentId); + status->Type = ntohl(status->Type); + status->MinQuota = ntohl(status->MinQuota); + status->MaxQuota = ntohl(status->MaxQuota); + status->BlocksInUse = ntohl(status->BlocksInUse); + status->PartBlocksAvail = ntohl(status->PartBlocksAvail); + status->PartMaxBlocks = ntohl(status->PartMaxBlocks); + } else { + status->Vid = htonl(status->Vid); + status->ParentId = htonl(status->ParentId); + status->Type = htonl(status->Type); + status->MinQuota = htonl(status->MinQuota); + status->MaxQuota = htonl(status->MaxQuota); + status->BlocksInUse = htonl(status->BlocksInUse); + status->PartBlocksAvail = htonl(status->PartBlocksAvail); + status->PartMaxBlocks = htonl(status->PartMaxBlocks); + } +} + +static void inparam_conversion(int cmd, char *buffer, int buf_size, int in) +{ + afs_int32 *lptr = (afs_int32 *)buffer; + + switch (cmd & 0xffff) { + case (0x5600 | 3): /* VIOCSETTOK */ + token_conversion(buffer, buf_size, in); + return; + + case (0x5600 | 5): /* VIOCSETVOLSTAT */ + FetchVolumeStatus_conversion(buffer, buf_size, in); + return; + + case (0x5600 | 8): /* VIOCGETTOK */ + case (0x5600 | 10): /* VIOCCKSERV */ + case (0x5600 | 20): /* VIOCACCESS */ + case (0x5600 | 24): /* VIOCSETCACHESIZE */ + case (0x5600 | 27): /* VIOCGETCELL */ + case (0x5600 | 32): /* VIOC_AFS_MARINER_HOST */ + case (0x5600 | 34): /* VIOC_VENUSLOG */ + case (0x5600 | 38): /* VIOC_AFS_SYSNAME */ + case (0x5600 | 39): /* VIOC_EXPORTAFS */ + /* one 32-bit integer */ + if (buf_size >= 4) { + if (in) lptr[0] = ntohl(lptr[0]); + else lptr[0] = htonl(lptr[0]); + } + return; + + case (0x5600 | 36): /* VIOCSETCELLSTATUS */ + /* two 32-bit integers */ + if (buf_size >= 4) { + if (in) lptr[0] = ntohl(lptr[0]); + else lptr[0] = htonl(lptr[0]); + } + if (buf_size >= 8) { + if (in) lptr[1] = ntohl(lptr[1]); + else lptr[1] = htonl(lptr[1]); + } + return; + } +} + +static void outparam_conversion(int cmd, char *buffer, int buf_size, int in) +{ + afs_int32 *lptr = (afs_int32 *)buffer; + int i; + + switch (cmd & 0xffff) { + case (0x5600 | 4): /* VIOCGETVOLSTAT */ + case (0x5600 | 5): /* VIOCSETVOLSTAT */ + FetchVolumeStatus_conversion(buffer, buf_size, in); + return; + + case (0x5600 | 8): /* VIOCGETTOK */ + token_conversion(buffer, buf_size, in); + return; + + case (0x5600 | 12): /* VIOCCKCONN */ + case (0x5600 | 32): /* VIOC_AFS_MARINER_HOST */ + case (0x5600 | 34): /* VIOC_VENUSLOG */ + case (0x5600 | 35): /* VIOC_GETCELLSTATUS */ + case (0x5600 | 38): /* VIOC_AFS_SYSNAME */ + case (0x5600 | 39): /* VIOC_EXPORTAFS */ + /* one 32-bit integer */ + if (buf_size >= 4) { + if (in) lptr[0] = ntohl(lptr[0]); + else lptr[0] = htonl(lptr[0]); + } + return; + + case (0x5600 | 40): /* VIOCGETCACHEPARMS */ + /* sixteen 32-bit integers */ + for (i = 0; i < 16 && buf_size >= 4; i++) { + if (in) lptr[i] = ntohl(lptr[i]); + else lptr[i] = htonl(lptr[i]); + buf_size -= 4; + } + return; + } +} + + +/* called with the GLOCK held */ +int +#ifdef AFS_SUN5_ENV +afs_syscall_pioctl(path, com, cmarg, follow, rvp, credp) + rval_t *rvp; + struct AFS_UCRED *credp; +#else +#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) +afs_syscall_pioctl(path, com, cmarg, follow, credp) + struct AFS_UCRED *credp; +#else +afs_syscall_pioctl(path, com, cmarg, follow) +#endif +#endif + char *path; + unsigned int com; + caddr_t cmarg; + int follow; +{ +#ifdef AFS_AIX41_ENV + struct ucred *credp = crref(); /* don't free until done! */ +#endif +#ifdef AFS_LINUX22_ENV + cred_t *credp = crref(); /* don't free until done! */ +#endif + struct afs_ioctl data; + struct clientcred ccred; + struct rmtbulk idata, odata; + short in_size, out_size; + afs_int32 code = 0, pag, err; + gid_t g0, g1; + char *abspath, *pathbuf = 0; + + AFS_STATCNT(afs_syscall_pioctl); + if (follow) + follow = 1; /* compat. with old venus */ + code = copyin_afs_ioctl(cmarg, &data); + if (code) goto out; + + if ((com & 0xff) == 90) { + /* PSetClientContext, in any space */ + code = EINVAL; + goto out; + } + + /* Special handling for a few pioctls */ + switch (com & 0xffff) { + case (0x5600 | 3): /* VIOCSETTOK */ + code = afspag_PSetTokens(data.in, data.in_size, &credp); + if (code) goto out; + break; + + case (0x5600 | 9): /* VIOCUNLOG */ + case (0x5600 | 21): /* VIOCUNPAG */ + code = afspag_PUnlog(data.in, data.in_size, &credp); + if (code) goto out; + break; + + case (0x5600 | 38): /* VIOC_AFS_SYSNAME */ + code = afspag_PSetSysName(data.in, data.in_size, &credp); + if (code) goto out; + break; + } + + /* Set up credentials */ + memset(&ccred, 0, sizeof(ccred)); + pag = PagInCred(credp); + ccred.uid = credp->cr_uid; + if (pag != NOPAG) { + afs_get_groups_from_pag(pag, &g0, &g1); + ccred.group0 = g0; + ccred.group1 = g1; + } + + /* + * Copy the path and convert to absolute, if one was given. + * NB: We can only use osI_AllocLargeSpace here as long as + * RMTSYS_MAXPATHLEN is less than AFS_LRALLOCSIZ. + */ + if (path) { + pathbuf = osi_AllocLargeSpace(RMTSYS_MAXPATHLEN); + if (!pathbuf) { + code = ENOMEM; + goto out; + } + code = osi_abspath(path, pathbuf, RMTSYS_MAXPATHLEN, 0, &abspath); + if (code) + goto out_path; + } else { + abspath = NIL_PATHP; + } + + /* Allocate, copy, and convert incoming data */ + idata.rmtbulk_len = in_size = data.in_size; + if (in_size < 0 || in_size > MAXBUFFERLEN) { + code = EINVAL; + goto out_path; + } + if (in_size > AFS_LRALLOCSIZ) + idata.rmtbulk_val = osi_Alloc(in_size); + else + idata.rmtbulk_val = osi_AllocLargeSpace(AFS_LRALLOCSIZ); + if (!idata.rmtbulk_val) { + code = ENOMEM; + goto out_path; + } + if (in_size) { + AFS_COPYIN(data.in, idata.rmtbulk_val, in_size, code); + if (code) + goto out_idata; + inparam_conversion(com, idata.rmtbulk_val, in_size, 0); + } + + /* Allocate space for outgoing data */ + odata.rmtbulk_len = out_size = data.out_size; + if (out_size < 0 || out_size > MAXBUFFERLEN) { + code = EINVAL; + goto out_idata; + } + if (out_size > AFS_LRALLOCSIZ) + odata.rmtbulk_val = osi_Alloc(out_size); + else + odata.rmtbulk_val = osi_AllocLargeSpace(AFS_LRALLOCSIZ); + if (!odata.rmtbulk_val) { + code = ENOMEM; + goto out_idata; + } + + AFS_GUNLOCK(); + code = RMTSYS_Pioctl(rmtsys_conn, &ccred, abspath, com, follow, + &idata, &odata, &err); + AFS_GLOCK(); + if (code) + goto out_odata; + + /* Convert and copy out the result */ + if (odata.rmtbulk_len > out_size) { + code = E2BIG; + goto out_odata; + } + if (odata.rmtbulk_len) { + outparam_conversion(com, odata.rmtbulk_val, odata.rmtbulk_len, 1); + AFS_COPYOUT(odata.rmtbulk_val, data.out, odata.rmtbulk_len, code); + } + if (!code) + code = err; + +out_odata: + if (out_size > AFS_LRALLOCSIZ) + osi_Free(odata.rmtbulk_val, out_size); + else + osi_FreeLargeSpace(odata.rmtbulk_val); + +out_idata: + if (in_size > AFS_LRALLOCSIZ) + osi_Free(idata.rmtbulk_val, in_size); + else + osi_FreeLargeSpace(idata.rmtbulk_val); + +out_path: + if (path) + osi_FreeLargeSpace(pathbuf); + +out: +#if defined(AFS_LINUX22_ENV) || defined(AFS_AIX41_ENV) + crfree(credp); +#endif +#if defined(KERNEL_HAVE_UERROR) + if (!getuerror()) + setuerror(code); + return (getuerror()); +#else + return (code); +#endif +} + + +int +afs_syscall_call(parm, parm2, parm3, parm4, parm5, parm6) + long parm, parm2, parm3, parm4, parm5, parm6; +{ + /* superusers may shut us down, as with afsd --shutdown */ +#ifdef AFS_SUN5_ENV + if (parm == AFSOP_SHUTDOWN && afs_suser(CRED())) +#else + if (parm == AFSOP_SHUTDOWN && afs_suser(NULL)) +#endif + { + AFS_GLOCK(); + afspag_Shutdown(); + AFS_GUNLOCK(); + return 0; + } + + /* otherwise, we don't support afs_syscall_call, period */ +#if defined(KERNEL_HAVE_UERROR) + setuerror(EPERM); +#endif + return EPERM; +} diff --git a/src/afs/afs_pag_cred.c b/src/afs/afs_pag_cred.c new file mode 100644 index 000000000..30dcbe459 --- /dev/null +++ b/src/afs/afs_pag_cred.c @@ -0,0 +1,404 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_pag_cred.c,v 1.1.2.2 2006/07/31 21:27:38 shadow Exp $"); + +#include "afs/sysincludes.h" /* Standard vendor system headers */ +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" +#include "afs/unified_afs.h" +#include "rx/rx_globals.h" +#include "pagcb.h" + + +struct afspag_cell { + struct afspag_cell *next; + char *cellname; + afs_int32 cellnum; +}; + +afs_rwlock_t afs_xpagcell; +afs_rwlock_t afs_xpagsys; +static int lastcell = 0; +static struct afspag_cell *cells = 0; +static struct afspag_cell *primary_cell = 0; + + +struct afspag_cell *afspag_GetCell(char *acell) +{ + struct afspag_cell *tcell; + + ObtainWriteLock(&afs_xpagcell, 820); + + for (tcell = cells; tcell; tcell = tcell->next) { + if (!strcmp(acell, tcell->cellname)) + break; + } + + if (!tcell) { + tcell = (struct afspag_cell *)afs_osi_Alloc(sizeof(struct afspag_cell)); + if (!tcell) + goto out; + tcell->cellname = (char *)afs_osi_Alloc(strlen(acell) + 1); + if (!tcell->cellname) { + afs_osi_Free(tcell, sizeof(struct afspag_cell)); + tcell = 0; + goto out; + } + strcpy(tcell->cellname, acell); + tcell->cellnum = ++lastcell; + tcell->next = cells; + cells = tcell; + if (!primary_cell) primary_cell = tcell; + } + +out: + ReleaseWriteLock(&afs_xpagcell); + return tcell; +} + + +struct afspag_cell *afspag_GetPrimaryCell() +{ + struct afspag_cell *tcell; + + ObtainWriteLock(&afs_xpagcell, 821); + tcell = primary_cell; + ReleaseWriteLock(&afs_xpagcell); + return tcell; +} + + +void afspag_SetPrimaryCell(char *acell) +{ + struct afspag_cell *tcell; + + tcell = afspag_GetCell(acell); + ObtainWriteLock(&afs_xpagcell, 822); + primary_cell = tcell; + ReleaseWriteLock(&afs_xpagcell); +} + + +int afspag_PUnlog(char *ain, afs_int32 ainSize, struct AFS_UCRED **acred) +{ + register afs_int32 i; + register struct unixuser *tu; + afs_int32 pag, uid; + + AFS_STATCNT(PUnlog); + if (!afs_resourceinit_flag) /* afs daemons haven't started yet */ + return EIO; /* Inappropriate ioctl for device */ + + pag = PagInCred(*acred); + uid = (pag == NOPAG) ? (*acred)->cr_uid : pag; + i = UHash(uid); + ObtainWriteLock(&afs_xuser, 823); + for (tu = afs_users[i]; tu; tu = tu->next) { + if (tu->uid == uid) { + tu->vid = UNDEFVID; + tu->states &= ~UHasTokens; + /* security is not having to say you're sorry */ + memset((char *)&tu->ct, 0, sizeof(struct ClearToken)); +#ifdef UKERNEL + /* set the expire times to 0, causes + * afs_GCUserData to remove this entry + */ + tu->ct.EndTimestamp = 0; + tu->tokenTime = 0; +#endif /* UKERNEL */ + } + } + ReleaseWriteLock(&afs_xuser); + return 0; +} + + +int afspag_PSetTokens(char *ain, afs_int32 ainSize, struct AFS_UCRED **acred) +{ + afs_int32 i; + register struct unixuser *tu; + struct afspag_cell *tcell; + struct ClearToken clear; + char *stp; + int stLen; + afs_int32 flag, set_parent_pag = 0; + afs_int32 pag, uid; + + AFS_STATCNT(PSetTokens); + if (!afs_resourceinit_flag) { + return EIO; + } + memcpy((char *)&i, ain, sizeof(afs_int32)); + ain += sizeof(afs_int32); + stp = ain; /* remember where the ticket is */ + if (i < 0 || i > MAXKTCTICKETLEN) + return EINVAL; /* malloc may fail */ + stLen = i; + ain += i; /* skip over ticket */ + memcpy((char *)&i, ain, sizeof(afs_int32)); + ain += sizeof(afs_int32); + if (i != sizeof(struct ClearToken)) { + return EINVAL; + } + memcpy((char *)&clear, ain, sizeof(struct ClearToken)); + if (clear.AuthHandle == -1) + clear.AuthHandle = 999; /* more rxvab compat stuff */ + ain += sizeof(struct ClearToken); + if (ainSize != 2 * sizeof(afs_int32) + stLen + sizeof(struct ClearToken)) { + /* still stuff left? we've got primary flag and cell name. Set these */ + memcpy((char *)&flag, ain, sizeof(afs_int32)); /* primary id flag */ + ain += sizeof(afs_int32); /* skip id field */ + /* rest is cell name, look it up */ + /* some versions of gcc appear to need != 0 in order to get this right */ + if ((flag & 0x8000) != 0) { /* XXX Use Constant XXX */ + flag &= ~0x8000; + set_parent_pag = 1; + } + tcell = afspag_GetCell(ain); + } else { + /* default to primary cell, primary id */ + flag = 1; /* primary id */ + tcell = afspag_GetPrimaryCell(); + } + if (!tcell) return ESRCH; + if (set_parent_pag) { +#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) +#if defined(AFS_DARWIN_ENV) + struct proc *p = current_proc(); /* XXX */ +#else + struct proc *p = curproc; /* XXX */ +#endif +#ifndef AFS_DARWIN80_ENV + uprintf("Process %d (%s) tried to change pags in PSetTokens\n", + p->p_pid, p->p_comm); +#endif + setpag(p, acred, -1, &pag, 1); +#else +#ifdef AFS_OSF_ENV + setpag(u.u_procp, acred, -1, &pag, 1); /* XXX u.u_procp is a no-op XXX */ +#else + setpag(acred, -1, &pag, 1); +#endif +#endif + } + pag = PagInCred(*acred); + uid = (pag == NOPAG) ? (*acred)->cr_uid : pag; + /* now we just set the tokens */ + tu = afs_GetUser(uid, tcell->cellnum, WRITE_LOCK); + if (!tu->cellinfo) + tu->cellinfo = (void *)tcell; + tu->vid = clear.ViceId; + if (tu->stp != NULL) { + afs_osi_Free(tu->stp, tu->stLen); + } + tu->stp = (char *)afs_osi_Alloc(stLen); + tu->stLen = stLen; + memcpy(tu->stp, stp, stLen); + tu->ct = clear; +#ifndef AFS_NOSTATS + afs_stats_cmfullperf.authent.TicketUpdates++; + afs_ComputePAGStats(); +#endif /* AFS_NOSTATS */ + tu->states |= UHasTokens; + tu->states &= ~UTokensBad; + afs_SetPrimary(tu, flag); + tu->tokenTime = osi_Time(); + afs_PutUser(tu, WRITE_LOCK); + + return 0; +} + + +int +SPAGCB_GetCreds(struct rx_call *a_call, afs_int32 a_uid, + CredInfos *a_creds) +{ + struct unixuser *tu; + CredInfo *tci; + int bucket, count, i = 0, clen; + char *cellname; + + RX_AFS_GLOCK(); + + memset(a_creds, 0, sizeof(struct CredInfos)); + if ((rx_HostOf(rx_PeerOf(rx_ConnectionOf(a_call))) != afs_nfs_server_addr + || rx_PortOf(rx_PeerOf(rx_ConnectionOf(a_call))) != htons(7001)) +#if 0 /* for debugging ONLY! */ + && rx_PortOf(rx_PeerOf(rx_ConnectionOf(a_call))) != htons(7901) +#endif + ) { + RX_AFS_GUNLOCK(); + return UAEPERM; + } + + ObtainWriteLock(&afs_xuser, 823); + + /* count them first */ + bucket = UHash(a_uid); + for (count = 0, tu = afs_users[bucket]; tu; tu = tu->next) { + if (tu->uid == a_uid) count++; + } + + if (!count) { + ReleaseWriteLock(&afs_xuser); + RX_AFS_GUNLOCK(); + return UAESRCH; + } + + a_creds->CredInfos_val = + (CredInfo *)afs_osi_Alloc(count * sizeof(CredInfo)); + if (!a_creds->CredInfos_val) + goto out; + a_creds->CredInfos_len = count; + memset(a_creds->CredInfos_val, 0, count * sizeof(CredInfo)); + + for (i = 0, tu = afs_users[bucket]; tu; tu = tu->next, i++) { + if (tu->uid == a_uid && tu->cellinfo && + (tu->states & UHasTokens) && !(tu->states & UTokensBad)) { + + tci = &a_creds->CredInfos_val[i]; + tci->vid = tu->vid; + tci->ct.AuthHandle = tu->ct.AuthHandle; + memcpy(tci->ct.HandShakeKey, tu->ct.HandShakeKey, 8); + tci->ct.ViceId = tu->ct.ViceId; + tci->ct.BeginTimestamp = tu->ct.BeginTimestamp; + tci->ct.EndTimestamp = tu->ct.EndTimestamp; + + cellname = ((struct afspag_cell *)(tu->cellinfo))->cellname; + clen = strlen(cellname) + 1; + tci->cellname = afs_osi_Alloc(clen); + if (!tci->cellname) + goto out; + memcpy(tci->cellname, cellname, clen); + + tci->st.st_len = tu->stLen; + tci->st.st_val = afs_osi_Alloc(tu->stLen); + if (!tci->st.st_val) { + afs_osi_Free(tci->cellname, clen); + goto out; + } + memcpy(tci->st.st_val, tu->stp, tu->stLen); + if (tu->states & UPrimary) + tci->states |= UPrimary; + } + } + + ReleaseWriteLock(&afs_xuser); + RX_AFS_GUNLOCK(); + return 0; + +out: + if (a_creds->CredInfos_val) { + while (i-- > 0) { + afs_osi_Free(a_creds->CredInfos_val[i].st.st_val, + a_creds->CredInfos_val[i].st.st_len); + afs_osi_Free(a_creds->CredInfos_val[i].cellname, + strlen(a_creds->CredInfos_val[i].cellname) + 1); + } + afs_osi_Free(a_creds->CredInfos_val, count * sizeof(CredInfo)); + } + + ReleaseWriteLock(&afs_xuser); + RX_AFS_GUNLOCK(); + return UAENOMEM; +} + + +int afspag_PSetSysName(char *ain, afs_int32 ainSize, struct AFS_UCRED **acred) +{ + int setsysname, count, t; + char *cp, *setp; + + setp = ain; + memcpy((char *)&setsysname, ain, sizeof(afs_int32)); + ain += sizeof(afs_int32); + if (!setsysname) + return 0; /* nothing to do locally */ + + /* Check my args */ + if (setsysname < 0 || setsysname > MAXNUMSYSNAMES) + return EINVAL; + if (!afs_osi_suser(*acred)) + return EACCES; + for (cp = ain, count = 0; count < setsysname; count++) { + /* won't go past end of ain since maxsysname*num < ain length */ + t = strlen(cp); + if (t >= MAXSYSNAME || t <= 0) + return EINVAL; + /* check for names that can shoot us in the foot */ + if (*cp == '.' && (cp[1] == 0 || (cp[1] == '.' && cp[2] == 0))) + return EINVAL; + cp += t + 1; + } + + ObtainWriteLock(&afs_xpagsys, 824); + for (cp = ain, count = 0; count < setsysname; count++) { + t = strlen(cp); + memcpy(afs_sysnamelist[count], cp, t + 1); + cp += t + 1; + } + afs_sysnamecount = setsysname; + afs_sysnamegen++; + ReleaseWriteLock(&afs_xpagsys); + + /* Change the arguments so we pass the allpags flag to the server */ + setsysname |= 0x8000; + memcpy(setp, (char *)&setsysname, sizeof(afs_int32)); + return 0; +} + + +int +SPAGCB_GetSysName(struct rx_call *a_call, afs_int32 a_uid, + SysNameList *a_sysnames) +{ + int i; + + RX_AFS_GLOCK(); + + ObtainReadLock(&afs_xpagsys); + memset(a_sysnames, 0, sizeof(struct SysNameList)); + + a_sysnames->SysNameList_len = afs_sysnamecount; + a_sysnames->SysNameList_val = + afs_osi_Alloc(afs_sysnamecount * sizeof(SysNameEnt)); + if (!a_sysnames->SysNameList_val) + goto out; + + for (i = 0; i < afs_sysnamecount; i++) { + a_sysnames->SysNameList_val[i].sysname = + afs_osi_Alloc(strlen(afs_sysnamelist[i]) + 1); + if (!a_sysnames->SysNameList_val[i].sysname) + goto out; + strcpy(a_sysnames->SysNameList_val[i].sysname, afs_sysnamelist[i]); + } + + ReleaseReadLock(&afs_xpagsys); + RX_AFS_GUNLOCK(); + return 0; + +out: + if (a_sysnames->SysNameList_val) { + while (i-- > 0) { + afs_osi_Free(a_sysnames->SysNameList_val[i].sysname, + strlen(a_sysnames->SysNameList_val[i].sysname) + 1); + } + afs_osi_Free(a_sysnames->SysNameList_val, + afs_sysnamecount * sizeof(SysNameEnt)); + } + + ReleaseWriteLock(&afs_xpagsys); + RX_AFS_GUNLOCK(); + return UAENOMEM; +} diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c index d39f9b77b..ca72fc664 100644 --- a/src/afs/afs_pioctl.c +++ b/src/afs/afs_pioctl.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_pioctl.c,v 1.81.2.33 2008/04/18 20:13:32 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_pioctl.c,v 1.110.2.18 2008/05/23 14:25:15 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #ifdef AFS_OBSD_ENV @@ -30,6 +30,11 @@ afs_int32 afs_waitForever = 0; short afs_waitForeverCount = 0; afs_int32 afs_showflags = GAGUSER | GAGCONSOLE; /* show all messages */ +#ifdef AFS_DISCON_ENV +afs_int32 afs_is_disconnected; +afs_int32 afs_is_logging; +#endif + #define DECL_PIOCTL(x) static int x(struct vcache *avc, int afun, struct vrequest *areq, \ char *ain, char *aout, afs_int32 ainSize, afs_int32 *aoutSize, \ struct AFS_UCRED **acred) @@ -90,7 +95,11 @@ DECL_PIOCTL(PRxStatPeer); DECL_PIOCTL(PPrefetchFromTape); DECL_PIOCTL(PResidencyCmd); DECL_PIOCTL(PCallBackAddr); +DECL_PIOCTL(PDiscon); +DECL_PIOCTL(PNFSNukeCreds); DECL_PIOCTL(PNewUuid); +DECL_PIOCTL(PPrecache); + /* * A macro that says whether we're going to need HandleClientContext(). * This is currently used only by the nfs translator. @@ -192,126 +201,25 @@ static int (*(CpioctlSw[])) () = { PNewAlias, /* 1 -- create new cell alias */ PListAliases, /* 2 -- list cell aliases */ PCallBackAddr, /* 3 -- request addr for callback rxcon */ + PBogus, /* 4 */ + PDiscon, /* 5 */ + PBogus, /* 6 */ + PBogus, /* 7 */ + PBogus, /* 8 */ + PNewUuid, /* 9 */ + PBogus, /* 0 */ + PBogus, /* 0 */ + PPrecache, /* 12 */ +}; + +static int (*(OpioctlSw[])) () = { PBogus, /* 0 */ - PBogus, /* 0 */ - PBogus, /* 0 */ - PBogus, /* 0 */ - PBogus, /* 0 */ - PNewUuid, /* 9 -- generate new uuid */ + PNFSNukeCreds, /* 1 -- nuke all creds for NFS client */ }; #define PSetClientContext 99 /* Special pioctl to setup caller's creds */ int afs_nobody = NFS_NOBODY; -#if (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) || defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64)) || defined(NEED_IOCTL32) -static void -afs_ioctl32_to_afs_ioctl(const struct afs_ioctl32 *src, struct afs_ioctl *dst) -{ - dst->in = (char *)(unsigned long)src->in; - dst->out = (char *)(unsigned long)src->out; - dst->in_size = src->in_size; - dst->out_size = src->out_size; -} -#endif - -/* - * If you need to change copyin_afs_ioctl(), you may also need to change - * copyin_iparam(). - */ - -static int -copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst) -{ - int code; -#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) - struct afs_ioctl32 dst32; - - if (!(IS64U)) { - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - afs_ioctl32_to_afs_ioctl(&dst32, dst); - return code; - } -#endif /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */ - - -#if defined(AFS_HPUX_64BIT_ENV) - struct afs_ioctl32 dst32; - - if (is_32bit(u.u_procp)) { /* is_32bit() in proc_iface.h */ - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - afs_ioctl32_to_afs_ioctl(&dst32, dst); - return code; - } -#endif /* defined(AFS_HPUX_64BIT_ENV) */ - -#if defined(AFS_SUN57_64BIT_ENV) - struct afs_ioctl32 dst32; - - if (get_udatamodel() == DATAMODEL_ILP32) { - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - afs_ioctl32_to_afs_ioctl(&dst32, dst); - return code; - } -#endif /* defined(AFS_SUN57_64BIT_ENV) */ - -#if defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) - struct afs_ioctl32 dst32; - - if (!ABI_IS_64BIT(get_current_abi())) { - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - afs_ioctl32_to_afs_ioctl(&dst32, dst); - return code; - } -#endif /* defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) */ - -#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV) - struct afs_ioctl32 dst32; - -#ifdef AFS_SPARC64_LINUX26_ENV - if (test_thread_flag(TIF_32BIT)) -#elif AFS_SPARC64_LINUX24_ENV - if (current->thread.flags & SPARC_FLAG_32BIT) -#elif defined(AFS_SPARC64_LINUX20_ENV) - if (current->tss.flags & SPARC_FLAG_32BIT) - -#elif defined(AFS_AMD64_LINUX26_ENV) - if (test_thread_flag(TIF_IA32)) -#elif defined(AFS_AMD64_LINUX20_ENV) - if (current->thread.flags & THREAD_IA32) - -#elif defined(AFS_PPC64_LINUX26_ENV) -#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) - if (current->thread_info->flags & _TIF_32BIT) -#else - if (task_thread_info(current)->flags & _TIF_32BIT) -#endif -#elif defined(AFS_PPC64_LINUX20_ENV) - if (current->thread.flags & PPC_FLAG_32BIT) - -#elif defined(AFS_S390X_LINUX26_ENV) - if (test_thread_flag(TIF_31BIT)) -#elif defined(AFS_S390X_LINUX20_ENV) - if (current->thread.flags & S390_FLAG_31BIT) - -#else -#error pioctl32 not done for this linux -#endif - { - AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); - if (!code) - afs_ioctl32_to_afs_ioctl(&dst32, dst); - return code; - } -#endif /* defined(AFS_LINUX_64BIT_KERNEL) */ - - AFS_COPYIN(cmarg, (caddr_t) dst, sizeof *dst, code); - return code; -} - int HandleIoctl(register struct vcache *avc, register afs_int32 acom, struct afs_ioctl *adata) @@ -867,7 +775,7 @@ afs_syscall_pioctl(path, com, cmarg, follow) { struct afs_ioctl data; #ifdef AFS_NEED_CLIENTCONTEXT - struct AFS_UCRED *tmpcred; + struct AFS_UCRED *tmpcred = NULL; #endif struct AFS_UCRED *foreigncreds = NULL; register afs_int32 code = 0; @@ -893,7 +801,7 @@ afs_syscall_pioctl(path, com, cmarg, follow) } if ((com & 0xff) == PSetClientContext) { #ifdef AFS_NEED_CLIENTCONTEXT -#if defined(AFS_SUN5_ENV) || defined(AFS_AIX41_ENV) +#if defined(AFS_SUN5_ENV) || defined(AFS_AIX41_ENV) || defined(AFS_LINUX22_ENV) code = HandleClientContext(&data, &com, &foreigncreds, credp); #else code = HandleClientContext(&data, &com, &foreigncreds, osi_curcred()); @@ -923,7 +831,7 @@ afs_syscall_pioctl(path, com, cmarg, follow) * like afs_osi_suser(cred) which, I think, is better since it * generalizes and supports multi cred environments... */ -#ifdef AFS_SUN5_ENV +#if defined(AFS_SUN5_ENV) || defined(AFS_LINUX22_ENV) tmpcred = credp; credp = foreigncreds; #elif defined(AFS_AIX41_ENV) @@ -1054,7 +962,9 @@ afs_syscall_pioctl(path, com, cmarg, follow) set_p_cred(u.u_procp, tmpcred); /* restore original credentials */ #elif defined(AFS_SGI_ENV) OSI_SET_CURRENT_CRED(tmpcred); /* restore original credentials */ -#elif !defined(AFS_SUN5_ENV) +#elif defined(AFS_SUN5_ENV) || defined(AFS_LINUX22_ENV) + credp = tmpcred; /* restore original credentials */ +#else osi_curcred() = tmpcred; /* restore original credentials */ #endif /* AFS_HPUX101_ENV */ crfree(foreigncreds); @@ -1120,6 +1030,10 @@ afs_HandlePioctl(struct vnode *avp, afs_int32 acom, pioctlSw = CpioctlSw; pioctlSwSize = sizeof(CpioctlSw); break; + case 'O': /* Coordinated/common pioctls */ + pioctlSw = OpioctlSw; + pioctlSwSize = sizeof(OpioctlSw); + break; default: afs_PutFakeStat(&fakestate); return EINVAL; @@ -1220,7 +1134,7 @@ DECL_PIOCTL(PSetAcl) AFS_STATCNT(PSetAcl); if (!avc) return EINVAL; - if ((acl.AFSOpaque_len = strlen(ain) + 1) > 1000) + if ((acl.AFSOpaque_len = strlen(ain) + 1) > 1024 /* AFSOPAQUEMAX */) return EINVAL; acl.AFSOpaque_val = ain; @@ -1510,6 +1424,9 @@ DECL_PIOCTL(PSetTokens) afs_osi_Free(tu->stp, tu->stLen); } tu->stp = (char *)afs_osi_Alloc(stLen); + if (tu->stp == NULL) { + return ENOMEM; + } tu->stLen = stLen; memcpy(tu->stp, stp, stLen); tu->ct = clear; @@ -1960,12 +1877,12 @@ DECL_PIOCTL(PCheckServers) pcheck = (struct chservinfo *)ain; if (pcheck->tinterval >= 0) { cp = aout; - memcpy(cp, (char *)&PROBE_INTERVAL, sizeof(afs_int32)); + memcpy(cp, (char *)&afs_probe_interval, sizeof(afs_int32)); *aoutSize = sizeof(afs_int32); if (pcheck->tinterval > 0) { if (!afs_osi_suser(*acred)) return EACCES; - PROBE_INTERVAL = pcheck->tinterval; + afs_probe_interval = pcheck->tinterval; } return 0; } @@ -2156,6 +2073,18 @@ DECL_PIOCTL(PViceAccess) return EACCES; } +DECL_PIOCTL(PPrecache) +{ + afs_int32 newValue; + + /*AFS_STATCNT(PPrecache);*/ + if (!afs_osi_suser(*acred)) + return EACCES; + memcpy((char *)&newValue, ain, sizeof(afs_int32)); + afs_preCache = newValue*1024; + return 0; +} + DECL_PIOCTL(PSetCacheSize) { afs_int32 newValue; @@ -2190,11 +2119,51 @@ DECL_PIOCTL(PSetCacheSize) DECL_PIOCTL(PGetCacheSize) { afs_int32 results[MAXGCSTATS]; - + afs_int32 flags; + register struct dcache * tdc; + int i, size; + AFS_STATCNT(PGetCacheSize); + + if (sizeof(afs_int32) == ainSize){ + memcpy((char *)&flags, ain, sizeof(afs_int32)); + } else if (0 == ainSize){ + flags = 0; + } else { + return EINVAL; + } + memset((char *)results, 0, sizeof(results)); results[0] = afs_cacheBlocks; results[1] = afs_blocksUsed; + results[2] = afs_cacheFiles; + + if (1 == flags){ + for (i = 0; i < afs_cacheFiles; i++) { + if (afs_indexFlags[i] & IFFree) results[3]++; + } + } else if (2 == flags){ + for (i = 0; i < afs_cacheFiles; i++) { + if (afs_indexFlags[i] & IFFree) results[3]++; + if (afs_indexFlags[i] & IFEverUsed) results[4]++; + if (afs_indexFlags[i] & IFDataMod) results[5]++; + if (afs_indexFlags[i] & IFDirtyPages) results[6]++; + if (afs_indexFlags[i] & IFAnyPages) results[7]++; + if (afs_indexFlags[i] & IFDiscarded) results[8]++; + + tdc = afs_indexTable[i]; + if (tdc){ + results[9]++; + size = tdc->validPos; + if ( 0 < size && size < (1<<12) ) results[10]++; + else if (size < (1<<14) ) results[11]++; + else if (size < (1<<16) ) results[12]++; + else if (size < (1<<18) ) results[13]++; + else if (size < (1<<20) ) results[14]++; + else if (size >= (1<<20) ) results[15]++; + } + } + } memcpy(aout, (char *)results, sizeof(results)); *aoutSize = sizeof(results); return 0; @@ -2588,19 +2557,19 @@ DECL_PIOCTL(PFlushVolumeData) uq = QPrev(tq); tvc = QTOVH(tq); if (tvc->fid.Fid.Volume == volume && tvc->fid.Cell == cell) { - if (tvc->states & CVInit) { - ReleaseReadLock(&afs_xvcache); - afs_osi_Sleep(&tvc->states); - goto loop; - } + if (tvc->states & CVInit) { + ReleaseReadLock(&afs_xvcache); + afs_osi_Sleep(&tvc->states); + goto loop; + } #ifdef AFS_DARWIN80_ENV - if (tvc->states & CDeadVnode) { - ReleaseReadLock(&afs_xvcache); - afs_osi_Sleep(&tvc->states); - goto loop; - } + if (tvc->states & CDeadVnode) { + ReleaseReadLock(&afs_xvcache); + afs_osi_Sleep(&tvc->states); + goto loop; + } #endif -#if defined(AFS_SGI_ENV) || defined(AFS_OSF_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_LINUX20_ENV) +#if defined(AFS_SGI_ENV) || defined(AFS_OSF_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_LINUX20_ENV) VN_HOLD(AFSTOV(tvc)); #else #ifdef AFS_DARWIN80_ENV @@ -2787,8 +2756,8 @@ DECL_PIOCTL(PSetSysName) register struct afs_exporter *exporter; register struct unixuser *au; register afs_int32 pag, error; - int t, count, num = 0; - char **sysnamelist[MAXNUMSYSNAMES]; + int t, count, num = 0, allpags = 0; + char **sysnamelist; AFS_STATCNT(PSetSysName); if (!afs_globalVFS) { @@ -2802,6 +2771,10 @@ DECL_PIOCTL(PSetSysName) memset(inname, 0, MAXSYSNAME); memcpy(&setsysname, ain, sizeof(afs_int32)); ain += sizeof(afs_int32); + if (setsysname & 0x8000) { + allpags = 1; + setsysname &= ~0x8000; + } if (setsysname) { /* Check my args */ @@ -2826,7 +2799,11 @@ DECL_PIOCTL(PSetSysName) ain += t + 1; num = count; } - if ((*acred)->cr_gid == RMTUSER_REQ) { /* Handles all exporters */ + if ((*acred)->cr_gid == RMTUSER_REQ || + (*acred)->cr_gid == RMTUSER_REQ_PRIV) { /* Handles all exporters */ + if (allpags && (*acred)->cr_gid != RMTUSER_REQ_PRIV) { + return EPERM; + } pag = PagInCred(*acred); if (pag == NOPAG) { return EINVAL; /* Better than panicing */ @@ -2838,8 +2815,8 @@ DECL_PIOCTL(PSetSysName) afs_PutUser(au, READ_LOCK); return EINVAL; /* Better than panicing */ } - error = EXP_SYSNAME(exporter, (setsysname ? cp2 : NULL), sysnamelist, - &num); + error = EXP_SYSNAME(exporter, (setsysname ? cp2 : NULL), &sysnamelist, + &num, allpags); if (error) { if (error == ENODEV) foundname = 0; /* sysname not set yet! */ @@ -2849,9 +2826,11 @@ DECL_PIOCTL(PSetSysName) } } else { foundname = num; - strcpy(outname, (*sysnamelist)[0]); + strcpy(outname, sysnamelist[0]); } afs_PutUser(au, READ_LOCK); + if (setsysname) + afs_sysnamegen++; } else { /* Not xlating, so local case */ if (!afs_sysname) @@ -2859,11 +2838,15 @@ DECL_PIOCTL(PSetSysName) if (!setsysname) { /* user just wants the info */ strcpy(outname, afs_sysname); foundname = afs_sysnamecount; - *sysnamelist = afs_sysnamelist; + sysnamelist = afs_sysnamelist; } else { /* Local guy; only root can change sysname */ if (!afs_osi_suser(*acred)) return EACCES; + /* allpags makes no sense for local use */ + if (allpags) + return EINVAL; + /* clear @sys entries from the dnlc, once afs_lookup can * do lookups of @sys entries and thinks it can trust them */ /* privs ok, store the entry, ... */ @@ -2880,6 +2863,7 @@ DECL_PIOCTL(PSetSysName) } } afs_sysnamecount = setsysname; + afs_sysnamegen++; } } if (!setsysname) { @@ -2890,13 +2874,13 @@ DECL_PIOCTL(PSetSysName) strcpy(cp, outname); /* ... the entry, ... */ cp += strlen(outname) + 1; for (count = 1; count < foundname; ++count) { /* ... or list. */ - if (!(*sysnamelist)[count]) + if (!sysnamelist[count]) osi_Panic ("PSetSysName: no afs_sysnamelist entry to read\n"); - t = strlen((*sysnamelist)[count]); + t = strlen(sysnamelist[count]); if (t >= MAXSYSNAME) osi_Panic("PSetSysName: sysname entry garbled\n"); - strcpy(cp, (*sysnamelist)[count]); + strcpy(cp, sysnamelist[count]); cp += t + 1; } } @@ -3165,6 +3149,7 @@ DECL_PIOCTL(PExportAfs) { afs_int32 export, newint = 0, type, changestate, handleValue, convmode, pwsync, smounts; + afs_int32 rempags = 0, pagcb = 0; register struct afs_exporter *exporter; AFS_STATCNT(PExportAfs); @@ -3177,10 +3162,12 @@ DECL_PIOCTL(PExportAfs) exporter = exporter_find(type); if (newint) { export = handleValue & 3; - changestate = handleValue & 0xff; + changestate = handleValue & 0xfff; smounts = (handleValue >> 2) & 3; pwsync = (handleValue >> 4) & 3; convmode = (handleValue >> 6) & 3; + rempags = (handleValue >> 8) & 3; + pagcb = (handleValue >> 10) & 3; } else { changestate = (handleValue >> 16) & 0x1; convmode = (handleValue >> 16) & 0x2; @@ -3227,6 +3214,18 @@ DECL_PIOCTL(PExportAfs) exporter->exp_states &= ~EXP_SUBMOUNTS; } } + if (rempags & 2) { + if (rempags & 1) + exporter->exp_states |= EXP_CLIPAGS; + else + exporter->exp_states &= ~EXP_CLIPAGS; + } + if (pagcb & 2) { + if (pagcb & 1) + exporter->exp_states |= EXP_CALLBACK; + else + exporter->exp_states &= ~EXP_CALLBACK; + } handleValue = exporter->exp_states; memcpy(aout, (char *)&handleValue, sizeof(afs_int32)); *aoutSize = sizeof(afs_int32); @@ -3366,11 +3365,12 @@ HandleClientContext(struct afs_ioctl *ablob, int *com, { char *ain, *inData; afs_uint32 hostaddr; - afs_int32 uid, g0, g1, i, code, pag, exporter_type; + afs_int32 uid, g0, g1, i, code, pag, exporter_type, isroot = 0; struct afs_exporter *exporter, *outexporter; struct AFS_UCRED *newcred; struct unixuser *au; afs_uint32 comp = *com & 0xff00; + afs_uint32 h, l; #if defined(AFS_SGIMP_ENV) osi_Assert(ISAFS_GLOCK()); @@ -3412,7 +3412,7 @@ HandleClientContext(struct afs_ioctl *ablob, int *com, u.u_error = 0; #endif /* check for acceptable opcodes for normal folks, which are, so far, - * set tokens and unlog. + * get/set tokens, sysname, and unlog. */ if (i != 9 && i != 3 && i != 38 && i != 8) { osi_FreeLargeSpace(inData); @@ -3430,26 +3430,36 @@ HandleClientContext(struct afs_ioctl *ablob, int *com, * code fails for remote client roots. */ uid = afs_nobody; /* NFS_NOBODY == -2 */ + isroot = 1; } newcred = crget(); -#if defined(AFS_LINUX26_ENV) - newcred->cr_group_info = groups_alloc(0); -#endif #ifdef AFS_AIX41_ENV setuerror(0); #endif - newcred->cr_gid = RMTUSER_REQ; + newcred->cr_gid = isroot ? RMTUSER_REQ_PRIV : RMTUSER_REQ; #ifdef AFS_AIX51_ENV newcred->cr_groupset.gs_union.un_groups[0] = g0; newcred->cr_groupset.gs_union.un_groups[1] = g1; +#elif defined(AFS_LINUX26_ENV) +#ifdef AFS_LINUX26_ONEGROUP_ENV + newcred->cr_group_info = groups_alloc(1); /* not that anything sets this */ + l = (((g0-0x3f00) & 0x3fff) << 14) | ((g1-0x3f00) & 0x3fff); + h = ((g0-0x3f00) >> 14); + h = ((g1-0x3f00) >> 14) + h + h + h; + GROUP_AT(newcred->cr_group_info, 0) = ((h << 28) | l); +#else + newcred->cr_group_info = groups_alloc(2); + GROUP_AT(newcred->cr_group_info, 0) = g0; + GROUP_AT(newcred->cr_group_info, 1) = g1; +#endif #else newcred->cr_groups[0] = g0; newcred->cr_groups[1] = g1; #endif #ifdef AFS_AIX_ENV newcred->cr_ngrps = 2; -#else -#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) +#elif !defined(AFS_LINUX26_ENV) +#if defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_LINUX22_ENV) newcred->cr_ngroups = 2; #else for (i = 2; i < NGROUPS; i++) @@ -3497,7 +3507,7 @@ HandleClientContext(struct afs_ioctl *ablob, int *com, EXP_RELE(outexporter); } if (!code) - *com = (*com) | comp; + *com = (*com) | comp; return code; } #endif /* AFS_NEED_CLIENTCONTEXT */ @@ -3962,3 +3972,101 @@ DECL_PIOCTL(PCallBackAddr) #endif /* UKERNEL */ return 0; } + +DECL_PIOCTL(PDiscon) +{ +#ifdef AFS_DISCON_ENV + static afs_int32 mode = 4; /* Start up in 'full' */ + + if (ainSize == sizeof(afs_int32)) { + + if (!afs_osi_suser(*acred)) + return EPERM; + + memcpy(&mode, ain, sizeof(afs_int32)); + + /* + * All of these numbers are hard coded in fs.c. If they + * change here, they should change there and vice versa + */ + switch (mode) { + case 0: /* Disconnect, breaking all callbacks */ + if (!AFS_IS_DISCONNECTED) { + ObtainWriteLock(&afs_discon_lock, 999); + afs_DisconGiveUpCallbacks(); + afs_RemoveAllConns(); + afs_is_disconnected = 1; + ReleaseWriteLock(&afs_discon_lock); + } + break; + case 4: /* Fully connected */ + ObtainWriteLock(&afs_discon_lock, 998); + afs_is_disconnected = 0; + ReleaseWriteLock(&afs_discon_lock); + break; + default: + return EINVAL; + } + } else { + return EINVAL; + } + + memcpy(aout, &mode, sizeof(afs_int32)); + *aoutSize = sizeof(afs_int32); + return 0; +#else + return EINVAL; +#endif +} + +DECL_PIOCTL(PNFSNukeCreds) +{ + afs_uint32 addr, code; + register afs_int32 i; + register struct unixuser *tu; + + AFS_STATCNT(PUnlog); + if (!afs_resourceinit_flag) /* afs daemons haven't started yet */ + return EIO; /* Inappropriate ioctl for device */ + + if (ainSize < sizeof(afs_int32)) + return EINVAL; + memcpy(&addr, ain, sizeof(afs_int32)); + + if ((*acred)->cr_gid == RMTUSER_REQ_PRIV && !addr) { + tu = afs_GetUser(areq->uid, -1, SHARED_LOCK); + if (!tu->exporter || !(addr = EXP_GETHOST(tu->exporter))) { + afs_PutUser(tu, SHARED_LOCK); + return EACCES; + } + afs_PutUser(tu, SHARED_LOCK); + } else if (!afs_osi_suser(acred)) { + return EACCES; + } + + ObtainWriteLock(&afs_xuser, 227); + for (i = 0; i < NUSERS; i++) { + for (tu = afs_users[i]; tu; tu = tu->next) { + if (tu->exporter && EXP_CHECKHOST(tu->exporter, addr)) { + tu->vid = UNDEFVID; + tu->states &= ~UHasTokens; + /* security is not having to say you're sorry */ + memset((char *)&tu->ct, 0, sizeof(struct ClearToken)); + tu->refCount++; + ReleaseWriteLock(&afs_xuser); + afs_ResetUserConns(tu); + tu->refCount--; + ObtainWriteLock(&afs_xuser, 228); +#ifdef UKERNEL + /* set the expire times to 0, causes + * afs_GCUserData to remove this entry + */ + tu->ct.EndTimestamp = 0; + tu->tokenTime = 0; +#endif /* UKERNEL */ + } + } + } + ReleaseWriteLock(&afs_xuser); + return 0; +} diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index ac2c2fe75..bb1800708 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -11,15 +11,9 @@ #define _AFS_PROTOTYPES_H_ /* afs_analyze.c */ -extern void init_et_to_sys_error(void); -extern void afs_FinalizeReq(struct vrequest *areq); extern int afs_Analyze(register struct conn *aconn, afs_int32 acode, struct VenusFid *afid, register struct vrequest *areq, int op, afs_int32 locktype, struct cell *cellp); -extern int afs_CheckCode(afs_int32 acode, struct vrequest *areq, int where); -extern void afs_CopyError(register struct vrequest *afrom, - register struct vrequest *ato); -extern void init_sys_error_to_et(void); /* afs_axscache.c */ extern afs_rwlock_t afs_xaxs; @@ -45,82 +39,12 @@ extern afs_int32 afs_setTime; extern char afs_rootVolumeName[64]; extern void afs_shutdown(void); extern void afs_FlushCBs(void); -extern struct afs_icl_set *afs_icl_allSets; -extern int afs_icl_CreateLog(char *name, afs_int32 logSize, - struct afs_icl_log **outLogpp); -extern int afs_icl_CreateLogWithFlags(char *name, afs_int32 logSize, - afs_uint32 flags, - struct afs_icl_log **outLogpp); -extern int afs_icl_CopyOut(register struct afs_icl_log *logp, - afs_int32 * bufferp, afs_int32 * bufSizep, - afs_uint32 * cookiep, afs_int32 * flagsp); -extern int afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, - afs_int32 * curSizep); -extern int afs_icl_LogHold(register struct afs_icl_log *logp); -extern int afs_icl_LogHoldNL(register struct afs_icl_log *logp); -extern int afs_icl_LogUse(register struct afs_icl_log *logp); -extern int afs_icl_LogFreeUse(register struct afs_icl_log *logp); -extern int afs_icl_LogSetSize(register struct afs_icl_log *logp, - afs_int32 logSize); -extern int afs_icl_ZapLog(register struct afs_icl_log *logp); -extern int afs_icl_LogRele(register struct afs_icl_log *logp); -extern int afs_icl_LogReleNL(register struct afs_icl_log *logp); -extern int afs_icl_ZeroLog(register struct afs_icl_log *logp); -extern int afs_icl_LogFree(register struct afs_icl_log *logp); -extern struct afs_icl_log *afs_icl_FindLog(char *name); -extern int - afs_icl_EnumerateLogs(int (*aproc) - - (char *name, char *arock, struct afs_icl_log * tp), - char *arock); -extern int afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, - struct afs_icl_log *fatalLogp, - struct afs_icl_set **outSetpp); -extern int afs_icl_CreateSetWithFlags(char *name, - struct afs_icl_log *baseLogp, - struct afs_icl_log *fatalLogp, - afs_uint32 flags, - struct afs_icl_set **outSetpp); -extern int afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, - int setValue); -extern int afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, - int *getValuep); -extern int afs_icl_ZeroSet(struct afs_icl_set *setp); -extern int - afs_icl_EnumerateSets(int (*aproc) - - (char *name, char *arock, struct afs_icl_log * tp), - char *arock); -extern int afs_icl_AddLogToSet(struct afs_icl_set *setp, - struct afs_icl_log *newlogp); -extern int afs_icl_SetSetStat(struct afs_icl_set *setp, int op); -extern int afs_icl_SetHold(register struct afs_icl_set *setp); -extern int afs_icl_ZapSet(register struct afs_icl_set *setp); -extern int afs_icl_SetRele(register struct afs_icl_set *setp); -extern int afs_icl_SetFree(register struct afs_icl_set *setp); -extern struct afs_icl_set *afs_icl_FindSet(char *name); - -extern int afs_icl_Event4(register struct afs_icl_set *setp, - afs_int32 eventID, afs_int32 lAndT, long p1, - long p2, long p3, long p4); -extern int afs_icl_Event3(register struct afs_icl_set *setp, - afs_int32 eventID, afs_int32 lAndT, long p1, - long p2, long p3); -extern int afs_icl_Event2(register struct afs_icl_set *setp, - afs_int32 eventID, afs_int32 lAndT, long p1, - long p2); -extern int afs_icl_Event1(register struct afs_icl_set *setp, - afs_int32 eventID, afs_int32 lAndT, long p1); -extern int afs_icl_Event0(register struct afs_icl_set *setp, - afs_int32 eventID, afs_int32 lAndT); -extern void afs_icl_AppendRecord(register struct afs_icl_log *logp, - afs_int32 op, afs_int32 types, long p1, - long p2, long p3, long p4); - extern int afs_CheckInit(void); extern void afs_shutdown(void); extern void shutdown_afstest(void); extern void afs_shutdown_BKG(void); +extern int afs_syscall_call(long parm, long parm2, long parm3, + long parm4, long parm5, long parm6); /* afs_callback.c */ @@ -213,6 +137,7 @@ extern afs_int32 afs_NewCell(char *acellName, afs_int32 * acellHosts, extern afs_int32 afs_SetPrimaryCell(char *acellName); extern struct cell *afs_GetCell(afs_int32 acell, afs_int32 locktype); extern struct cell *afs_GetCellStale(afs_int32 acell, afs_int32 locktype); +extern struct cell *afs_GetCellByHandle(void *handle, afs_int32 locktype); extern struct cell *afs_GetCellByIndex(afs_int32 cellidx, afs_int32 locktype); extern struct cell *afs_GetCellByName(char *acellName, afs_int32 locktype); extern struct cell *afs_GetPrimaryCell(afs_int32 locktype); @@ -273,7 +198,8 @@ extern struct afs_osi_WaitHandle AFS_WaitHandler, AFS_CSWaitHandler; extern afs_int32 afs_gcpags; extern afs_int32 afs_gcpags_procsize; extern afs_int32 afs_CheckServerDaemonStarted; -extern afs_int32 PROBE_INTERVAL; +extern afs_int32 afs_probe_interval; +extern afs_int32 afs_preCache; extern void afs_Daemon(void); extern struct brequest *afs_BQueue(register short aopcode, @@ -302,6 +228,7 @@ extern afs_int32 afs_blocksUsed; extern afs_int32 afs_blocksDiscarded; extern int afs_WaitForCacheDrain; extern int cacheDiskType; +extern afs_uint32 afs_tpct1, afs_tpct2, splitdcache; extern unsigned char *afs_indexFlags; extern struct afs_cacheOps *afs_cacheType; extern ino_t cacheInode; @@ -341,18 +268,28 @@ extern struct dcache *afs_UFSGetDSlot(register afs_int32 aslot, extern int afs_WriteDCache(register struct dcache *adc, int atime); extern int afs_wakeup(register struct vcache *avc); extern int afs_InitCacheFile(char *afile, ino_t ainode); +extern int afs_DCacheHasAllChunks(struct vcache *avc); +/* afs_disconnected.c */ /* afs_dynroot.c */ extern int afs_IsDynrootFid(struct VenusFid *fid); +extern int afs_IsDynrootMountFid(struct VenusFid *fid); +extern int afs_IsDynrootAnyFid(struct VenusFid *fid); extern void afs_GetDynrootFid(struct VenusFid *fid); +extern void afs_GetDynrootMountFid(struct VenusFid *fid); extern int afs_IsDynroot(struct vcache *avc); +extern int afs_IsDynrootMount(struct vcache *avc); +extern int afs_IsDynrootAny(struct vcache *avc); extern void afs_DynrootInvalidate(void); extern void afs_GetDynroot(char **dynrootDir, int *dynrootLen, struct AFSFetchStatus *status); +extern void afs_GetDynrootMount(char **dynrootDir, int *dynrootLen, + struct AFSFetchStatus *status); extern void afs_PutDynroot(void); extern int afs_DynrootNewVnode(struct vcache *avc, struct AFSFetchStatus *status); +extern int afs_InitDynroot(void); extern int afs_SetDynrootEnable(int enable); extern int afs_GetDynrootEnable(void); extern int afs_DynrootVOPRemove(struct vcache *avc, struct AFS_UCRED *acred, @@ -360,9 +297,96 @@ extern int afs_DynrootVOPRemove(struct vcache *avc, struct AFS_UCRED *acred, extern int afs_DynrootVOPSymlink(struct vcache *avc, struct AFS_UCRED *acred, char *aname, char *atargetName); +/* afs_error.c */ +extern void init_et_to_sys_error(void); +extern afs_int32 et_to_sys_error(afs_int32 in); +extern void afs_FinalizeReq(struct vrequest *areq); +extern int afs_CheckCode(afs_int32 acode, struct vrequest *areq, int where); +extern void afs_CopyError(register struct vrequest *afrom, + register struct vrequest *ato); +extern void init_sys_error_to_et(void); + /* afs_exporter.c */ extern struct afs_exporter *root_exported; extern struct afs_exporter *exporter_find(int type); +extern void shutdown_exporter(void); + +/* afs_icl.c */ +extern struct afs_icl_set *afs_icl_allSets; +extern int afs_icl_InitLogs(void); +extern int afs_icl_CreateLog(char *name, afs_int32 logSize, + struct afs_icl_log **outLogpp); +extern int afs_icl_CreateLogWithFlags(char *name, afs_int32 logSize, + afs_uint32 flags, + struct afs_icl_log **outLogpp); +extern int afs_icl_CopyOut(register struct afs_icl_log *logp, + afs_int32 * bufferp, afs_int32 * bufSizep, + afs_uint32 * cookiep, afs_int32 * flagsp); +extern int afs_icl_GetLogParms(struct afs_icl_log *logp, afs_int32 * maxSizep, + afs_int32 * curSizep); +extern int afs_icl_LogHold(register struct afs_icl_log *logp); +extern int afs_icl_LogHoldNL(register struct afs_icl_log *logp); +extern int afs_icl_LogUse(register struct afs_icl_log *logp); +extern int afs_icl_LogFreeUse(register struct afs_icl_log *logp); +extern int afs_icl_LogSetSize(register struct afs_icl_log *logp, + afs_int32 logSize); +extern int afs_icl_ZapLog(register struct afs_icl_log *logp); +extern int afs_icl_LogRele(register struct afs_icl_log *logp); +extern int afs_icl_LogReleNL(register struct afs_icl_log *logp); +extern int afs_icl_ZeroLog(register struct afs_icl_log *logp); +extern int afs_icl_LogFree(register struct afs_icl_log *logp); +extern struct afs_icl_log *afs_icl_FindLog(char *name); +extern int + afs_icl_EnumerateLogs(int (*aproc) + + (char *name, char *arock, struct afs_icl_log * tp), + char *arock); +extern int afs_icl_CreateSet(char *name, struct afs_icl_log *baseLogp, + struct afs_icl_log *fatalLogp, + struct afs_icl_set **outSetpp); +extern int afs_icl_CreateSetWithFlags(char *name, + struct afs_icl_log *baseLogp, + struct afs_icl_log *fatalLogp, + afs_uint32 flags, + struct afs_icl_set **outSetpp); +extern int afs_icl_SetEnable(struct afs_icl_set *setp, afs_int32 eventID, + int setValue); +extern int afs_icl_GetEnable(struct afs_icl_set *setp, afs_int32 eventID, + int *getValuep); +extern int afs_icl_ZeroSet(struct afs_icl_set *setp); +extern int + afs_icl_EnumerateSets(int (*aproc) + + (char *name, char *arock, struct afs_icl_log * tp), + char *arock); +extern int afs_icl_AddLogToSet(struct afs_icl_set *setp, + struct afs_icl_log *newlogp); +extern int afs_icl_SetSetStat(struct afs_icl_set *setp, int op); +extern int afs_icl_SetHold(register struct afs_icl_set *setp); +extern int afs_icl_ZapSet(register struct afs_icl_set *setp); +extern int afs_icl_SetRele(register struct afs_icl_set *setp); +extern int afs_icl_SetFree(register struct afs_icl_set *setp); +extern struct afs_icl_set *afs_icl_FindSet(char *name); + +extern int afs_icl_Event4(register struct afs_icl_set *setp, + afs_int32 eventID, afs_int32 lAndT, long p1, + long p2, long p3, long p4); +extern int afs_icl_Event3(register struct afs_icl_set *setp, + afs_int32 eventID, afs_int32 lAndT, long p1, + long p2, long p3); +extern int afs_icl_Event2(register struct afs_icl_set *setp, + afs_int32 eventID, afs_int32 lAndT, long p1, + long p2); +extern int afs_icl_Event1(register struct afs_icl_set *setp, + afs_int32 eventID, afs_int32 lAndT, long p1); +extern int afs_icl_Event0(register struct afs_icl_set *setp, + afs_int32 eventID, afs_int32 lAndT); +extern void afs_icl_AppendRecord(register struct afs_icl_log *logp, + afs_int32 op, afs_int32 types, long p1, + long p2, long p3, long p4); +extern int Afscall_icl(long opcode, long p1, long p2, long p3, long p4, + long *retval); + /* afs_init.c */ extern struct cm_initparams cm_initParams; @@ -371,6 +395,7 @@ extern afs_rwlock_t afs_puttofileLock; extern char *afs_sysname; extern char *afs_sysnamelist[MAXNUMSYSNAMES]; extern int afs_sysnamecount; +extern int afs_sysnamegen; extern afs_int32 cacheInfoModTime; extern int afs_CacheInit(afs_int32 astatSize, afs_int32 afiles, afs_int32 ablocks, afs_int32 aDentries, @@ -467,6 +492,12 @@ extern void shutdown_memcache(void); /* afs_nfsclnt.c */ extern struct afs_exporter *afs_nfsexported; extern struct afs_exporter *afs_nfsexporter; +extern void afs_nfsclient_init(void); +extern int afs_nfsclient_reqhandler(struct afs_exporter *exporter, + struct AFS_UCRED **cred, + afs_int32 host, afs_int32 *pagparam, + struct afs_exporter **outexporter); +extern void shutdown_nfsclnt(void); /* afs_osi.c */ extern afs_lock_t afs_ftf; @@ -476,34 +507,38 @@ extern void afs_osi_RxkRegister(void); extern void afs_osi_MaskSignals(void); extern void afs_osi_UnmaskRxkSignals(void); extern void afs_osi_MaskUserLoop(void); -extern void *afs_osi_Alloc_debug(size_t x, char *func, int line); -#ifndef afs_osi_Alloc_NoSleep -extern void *afs_osi_Alloc_NoSleep(size_t x); -#endif -#ifndef afs_osi_Free -extern void afs_osi_Free(void *x, size_t asize); -#endif -extern void afs_osi_FreeStr(char *x); extern void osi_Init(void); -extern int osi_Active(register struct vcache *avc); -extern void osi_FlushPages(register struct vcache *avc, - struct AFS_UCRED *credp); -extern void osi_FlushText_really(register struct vcache *vp); extern void afs_osi_MaskSignals(void); extern void afs_osi_UnmaskRxkSignals(void); extern void afs_osi_RxkRegister(void); extern void afs_osi_Invisible(void); -extern int osi_VMDirty_p(struct vcache *avc); -#ifndef UKERNEL -extern void osi_ReleaseVM(struct vcache *avc, struct AFS_UCRED *acred); -#endif extern void shutdown_osi(void); +extern void shutdown_osinet(void); extern int afs_osi_suser(void *credp); extern void afs_osi_TraverseProcTable(void); #if defined(KERNEL) && !defined(UKERNEL) && defined(AFS_PROC) extern const struct AFS_UCRED *afs_osi_proc2cred(AFS_PROC * pr); #endif +/* afs_osi_alloc.c */ +#ifndef AFS_FBSD_ENV +extern afs_lock_t osi_fsplock; +extern afs_lock_t osi_flplock; +#endif +extern void *afs_osi_Alloc_debug(size_t x, char *func, int line); +#ifndef afs_osi_Alloc_NoSleep +extern void *afs_osi_Alloc_NoSleep(size_t x); +#endif +#ifndef afs_osi_Free +extern void afs_osi_Free(void *x, size_t asize); +#endif +extern void afs_osi_FreeStr(char *x); +extern void osi_FreeLargeSpace(void *adata); +extern void osi_FreeSmallSpace(void *adata); +extern void *osi_AllocLargeSpace(size_t size); +extern void *osi_AllocSmallSpace(size_t size); +extern void shutdown_osinet(void); + /* afs_osi_pag.c */ extern int afs_setpag(); extern afs_uint32 genpag(void); @@ -524,23 +559,22 @@ extern afs_uint32 afs_get_pag_from_groups(struct group_info *gi); extern void afs_get_groups_from_pag(afs_uint32 pag, gid_t * g0p, gid_t * g1p); extern afs_int32 PagInCred(const struct AFS_UCRED *cred); -/* afs_osi_alloc.c */ -#ifndef AFS_FBSD_ENV -extern afs_lock_t osi_fsplock; -extern afs_lock_t osi_flplock; -#endif -extern void osi_FreeLargeSpace(void *adata); -extern void osi_FreeSmallSpace(void *adata); -extern void *osi_AllocLargeSpace(size_t size); -extern void *osi_AllocSmallSpace(size_t size); -extern void shutdown_osinet(void); - /* afs_osi_uio.c */ extern int afsio_copy(struct uio *ainuio, struct uio *aoutuio, struct iovec *aoutvec); extern int afsio_trim(struct uio *auio, afs_int32 asize); extern int afsio_skip(struct uio *auio, afs_int32 asize); +/* afs_osi_vm.c */ +extern int osi_Active(register struct vcache *avc); +extern void osi_FlushPages(register struct vcache *avc, + struct AFS_UCRED *credp); +extern void osi_FlushText_really(register struct vcache *vp); +extern int osi_VMDirty_p(struct vcache *avc); +#ifndef UKERNEL +extern void osi_ReleaseVM(struct vcache *avc, struct AFS_UCRED *acred); +#endif + /* ARCH/osi_misc.c */ @@ -667,6 +701,21 @@ extern void vcache2inode(struct vcache *avc); extern void vcache2fakeinode(struct vcache *rootvp, struct vcache *mpvp); #endif +/* afs_pag_call.c */ +extern afs_int32 afs_nfs_server_addr; +extern void afspag_Init(afs_int32 nfs_server_addr); +extern void afspag_Shutdown(void); + +/* afs_pag_cred.c */ +extern afs_rwlock_t afs_xpagcell; +extern afs_rwlock_t afs_xpagsys; +extern int afspag_PUnlog(char *ain, afs_int32 ainSize, + struct AFS_UCRED **acred); +extern int afspag_PSetTokens(char *ain, afs_int32 ainSize, + struct AFS_UCRED **acred); +extern int afspag_PSetSysName(char *ain, afs_int32 ainSize, + struct AFS_UCRED **acred); + /* afs_pioctl.c */ extern struct VenusFid afs_rootFid; extern afs_int32 afs_waitForever; @@ -700,7 +749,7 @@ extern struct server *afs_GetServer(afs_uint32 * aserver, afs_int32 nservers, afs_int32 addr_uniquifier); extern void ForceAllNewConnections(void); extern void afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown); -extern void afs_ServerDown(struct srvAddr *sa); +extern afs_int32 afs_ServerDown(struct srvAddr *sa); extern void afs_CountServers(void); extern void afs_CheckServers(int adown, struct cell *acellp); extern unsigned int afs_random(void); @@ -721,7 +770,7 @@ void afsi_SetServerIPRank(struct srvAddr *sa, struct in_ifaddr *ifa); #endif extern int afs_HaveCallBacksFrom(struct server *aserver); extern void shutdown_server(void); - +extern void afs_RemoveAllConns(void); /* afs_osidnlc.c */ @@ -752,6 +801,9 @@ extern void afs_GetCMStat(char **ptr, unsigned *size); extern void afs_AddToMean(struct afs_MeanStats *oldMean, afs_int32 newValue); #endif +/* afs_syscall.c */ +extern int copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst); + /* UKERNEL/afs_usrops.c */ #ifdef UKERNEL @@ -785,6 +837,7 @@ extern void afs_SetPrimary(register struct unixuser *au, register int aflag); /* afs_util.c */ +extern afs_int32 afs_calc_inum (afs_int32 volume, afs_int32 vnode); #ifndef afs_cv2string extern char *afs_cv2string(char *ttp, afs_uint32 aval); #endif @@ -800,6 +853,9 @@ extern char *afs_strcpy(char *s1, char *s2); #ifndef afs_strchr extern char *afs_strchr(char *s, int c); #endif +#ifndef afs_strrchr +extern char *afs_strrchr(char *s, int c); +#endif extern char *afs_strdup(char *s); extern void print_internet_address(char *preamble, struct srvAddr *sa, char *postamble, int flag); @@ -884,6 +940,7 @@ extern afs_int32 afs_NFSFindVCache(struct vcache **avcp, struct VenusFid *afid); extern void afs_vcacheInit(int astatSize); extern void shutdown_vcache(void); +extern void afs_DisconGiveUpCallbacks(void); /* VNOPS/afs_vnop_access.c */ @@ -1095,6 +1152,7 @@ extern u_short afs_uuid_hash(afsUUID * uuid); /* MOVE THEM TO APPROPRIATE LOCATIONS */ extern afs_int32 RXAFSCB_ExecuteRequest(struct rx_call *acall); extern afs_int32 RXSTATS_ExecuteRequest(struct rx_call *acall); +extern afs_int32 PAGCB_ExecuteRequest(struct rx_call *acall); diff --git a/src/afs/afs_segments.c b/src/afs/afs_segments.c index 951bed009..3bd461d77 100644 --- a/src/afs/afs_segments.c +++ b/src/afs/afs_segments.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_segments.c,v 1.16.2.6 2007/12/04 21:12:16 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_segments.c,v 1.22.8.2 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ @@ -215,7 +215,13 @@ afs_StoreAllSegments(register struct vcache *avc, struct vrequest *areq, #endif osi_VM_StoreAllSegments(avc); } - + if (AFS_IS_DISCONNECTED) { + if (!AFS_IS_LOGGING) { + /* This will probably make someone sad ... */ + /*printf("Net down in afs_StoreSegments\n");*/ + return ENETDOWN; + } + } ConvertWToSLock(&avc->lock); /* diff --git a/src/afs/afs_server.c b/src/afs/afs_server.c index f9dc5511c..9962821e5 100644 --- a/src/afs/afs_server.c +++ b/src/afs/afs_server.c @@ -33,7 +33,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_server.c,v 1.33.2.12 2007/12/11 21:31:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_server.c,v 1.43.4.7 2008/05/23 14:25:16 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -239,14 +239,14 @@ afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown) } /*MarkServerUpOrDown */ -void +afs_int32 afs_ServerDown(struct srvAddr *sa) { register struct server *aserver = sa->server; AFS_STATCNT(ServerDown); - if (aserver->flags & SRVR_ISDOWN || sa->sa_flags & SRVADDR_ISDOWN) - return; + if (aserver->flags & SRVR_ISDOWN || sa->sa_flags & SRVADDR_ISDOWN) + return 0; afs_MarkServerUpOrDown(sa, SRVR_ISDOWN); if (sa->sa_portal == aserver->cell->vlport) print_internet_address @@ -254,7 +254,7 @@ afs_ServerDown(struct srvAddr *sa) else print_internet_address("afs: Lost contact with file server ", sa, "", 1); - + return 1; } /*ServerDown */ @@ -547,6 +547,13 @@ afs_CheckServers(int adown, struct cell *acellp) AFS_STATCNT(afs_CheckServers); + /* + * No sense in doing the server checks if we are running in disconnected + * mode + */ + if (AFS_IS_DISCONNECTED) + return; + conns = (struct conn **)0; rxconns = (struct rx_connection **) 0; conntimer = 0; @@ -1750,11 +1757,7 @@ struct server *afs_GetServer(afs_uint32 * aserverp, afs_int32 nservers, /* Compute preference values and resort */ if (!newsa->sa_iprank) { - if (aport == fsport) { - afs_SetServerPrefs(newsa); /* new fileserver rank */ - } else { - newsa->sa_iprank = 10000 + afs_randomMod127(); /* new vlserver rank */ - } + afs_SetServerPrefs(newsa); /* new server rank */ } } afs_SortOneServer(newts); /* Sort by rank */ @@ -1849,6 +1852,46 @@ void afs_ActivateServer(struct srvAddr *sap) { } } +#ifdef AFS_DISCON_ENV + +void afs_RemoveAllConns() +{ + int i; + struct server *ts, *nts; + struct srvAddr *sa; + struct conn *tc, *ntc; + + ObtainReadLock(&afs_xserver); + ObtainWriteLock(&afs_xconn, 1001); + + /*printf("Destroying connections ... ");*/ + for (i = 0; i < NSERVERS; i++) { + for (ts = afs_servers[i]; ts; ts = nts) { + nts = ts->next; + for (sa = ts->addr; sa; sa = sa->next_sa) { + if (sa->conns) { + tc = sa->conns; + while (tc) { + ntc = tc->next; + AFS_GUNLOCK(); + rx_DestroyConnection(tc->id); + AFS_GLOCK(); + afs_osi_Free(tc, sizeof(struct conn)); + tc = ntc; + } + sa->conns = NULL; + } + } + } + } + /*printf("done\n");*/ + + ReleaseWriteLock(&afs_xconn); + ReleaseReadLock(&afs_xserver); + +} + +#endif /* AFS_DISCON_ENV */ void shutdown_server() { diff --git a/src/afs/afs_stats.h b/src/afs/afs_stats.h index fa04973c0..4e4b2b44d 100644 --- a/src/afs/afs_stats.h +++ b/src/afs/afs_stats.h @@ -803,10 +803,14 @@ struct afs_stats_CMPerf { afs_uint32 cbloops; afs_uint32 osiread_efaults; afs_int32 cacheBlocksDiscarded; /*# cache blocks free but not truncated */ + afs_int32 cacheBucket0_Discarded; + afs_int32 cacheBucket1_Discarded; + afs_int32 cacheBucket2_Discarded; + /* * Spares for future expansion. */ - afs_int32 spare[13]; /*Spares */ + afs_int32 spare[10]; /*Spares */ }; diff --git a/src/afs/afs_syscall.c b/src/afs/afs_syscall.c new file mode 100644 index 000000000..3f4a52bce --- /dev/null +++ b/src/afs/afs_syscall.c @@ -0,0 +1,726 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_syscall.c,v 1.1.2.6 2008/04/21 18:59:34 shadow Exp $"); + +#include "afs/sysincludes.h" /* Standard vendor system headers */ +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" +#include "rx/rx_globals.h" +#if !defined(UKERNEL) && !defined(AFS_LINUX20_ENV) +#include "net/if.h" +#ifdef AFS_SGI62_ENV +#include "h/hashing.h" +#endif +#if !defined(AFS_HPUX110_ENV) && !defined(AFS_DARWIN60_ENV) +#include "netinet/in_var.h" +#endif +#endif /* !defined(UKERNEL) */ +#ifdef AFS_LINUX22_ENV +#include "h/smp_lock.h" +#endif + +#if (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) || defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64)) || defined(NEED_IOCTL32) +static void +afs_ioctl32_to_afs_ioctl(const struct afs_ioctl32 *src, struct afs_ioctl *dst) +{ + dst->in = (char *)(unsigned long)src->in; + dst->out = (char *)(unsigned long)src->out; + dst->in_size = src->in_size; + dst->out_size = src->out_size; +} +#endif + +/* + * If you need to change copyin_afs_ioctl(), you may also need to change + * copyin_iparam(). + */ + +int +copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst) +{ + int code; +#if defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) + struct afs_ioctl32 dst32; + + if (!(IS64U)) { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + afs_ioctl32_to_afs_ioctl(&dst32, dst); + return code; + } +#endif /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */ + + +#if defined(AFS_HPUX_64BIT_ENV) + struct afs_ioctl32 dst32; + + if (is_32bit(u.u_procp)) { /* is_32bit() in proc_iface.h */ + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + afs_ioctl32_to_afs_ioctl(&dst32, dst); + return code; + } +#endif /* defined(AFS_HPUX_64BIT_ENV) */ + +#if defined(AFS_SUN57_64BIT_ENV) + struct afs_ioctl32 dst32; + + if (get_udatamodel() == DATAMODEL_ILP32) { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + afs_ioctl32_to_afs_ioctl(&dst32, dst); + return code; + } +#endif /* defined(AFS_SUN57_64BIT_ENV) */ + +#if defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) + struct afs_ioctl32 dst32; + + if (!ABI_IS_64BIT(get_current_abi())) { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + afs_ioctl32_to_afs_ioctl(&dst32, dst); + return code; + } +#endif /* defined(AFS_SGI_ENV) && (_MIPS_SZLONG==64) */ + +#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV) + struct afs_ioctl32 dst32; + +#ifdef AFS_SPARC64_LINUX26_ENV + if (test_thread_flag(TIF_32BIT)) +#elif defined(AFS_SPARC64_LINUX24_ENV) + if (current->thread.flags & SPARC_FLAG_32BIT) +#elif defined(AFS_SPARC64_LINUX20_ENV) + if (current->tss.flags & SPARC_FLAG_32BIT) + +#elif defined(AFS_AMD64_LINUX26_ENV) + if (test_thread_flag(TIF_IA32)) +#elif defined(AFS_AMD64_LINUX20_ENV) + if (current->thread.flags & THREAD_IA32) + +#elif defined(AFS_PPC64_LINUX26_ENV) +#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) + if (current->thread_info->flags & _TIF_32BIT) +#else + if (task_thread_info(current)->flags & _TIF_32BIT) +#endif +#elif defined(AFS_PPC64_LINUX20_ENV) + if (current->thread.flags & PPC_FLAG_32BIT) + +#elif defined(AFS_S390X_LINUX26_ENV) + if (test_thread_flag(TIF_31BIT)) +#elif defined(AFS_S390X_LINUX20_ENV) + if (current->thread.flags & S390_FLAG_31BIT) + +#else +#error pioctl32 not done for this linux +#endif + { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + afs_ioctl32_to_afs_ioctl(&dst32, dst); + return code; + } +#endif /* defined(AFS_LINUX_64BIT_KERNEL) */ + + AFS_COPYIN(cmarg, (caddr_t) dst, sizeof *dst, code); + return code; +} + + +#ifdef AFS_AIX32_ENV + +#include "sys/lockl.h" + +/* + * syscall - this is the VRMIX system call entry point. + * + * NOTE: + * THIS SHOULD BE CHANGED TO afs_syscall(), but requires + * all the user-level calls to `syscall' to change. + */ +syscall(syscall, p1, p2, p3, p4, p5, p6) +{ + register rval1 = 0, code; + register monster; + int retval = 0; +#ifndef AFS_AIX41_ENV + extern lock_t kernel_lock; + monster = lockl(&kernel_lock, LOCK_SHORT); +#endif /* !AFS_AIX41_ENV */ + + AFS_STATCNT(syscall); + setuerror(0); + switch (syscall) { + case AFSCALL_CALL: + rval1 = afs_syscall_call(p1, p2, p3, p4, p5, p6); + break; + + case AFSCALL_SETPAG: + AFS_GLOCK(); + rval1 = afs_setpag(); + AFS_GUNLOCK(); + break; + + case AFSCALL_PIOCTL: + AFS_GLOCK(); + rval1 = afs_syscall_pioctl(p1, p2, p3, p4); + AFS_GUNLOCK(); + break; + + case AFSCALL_ICREATE: + rval1 = afs_syscall_icreate(p1, p2, p3, p4, p5, p6); + break; + + case AFSCALL_IOPEN: + rval1 = afs_syscall_iopen(p1, p2, p3); + break; + + case AFSCALL_IDEC: + rval1 = afs_syscall_iincdec(p1, p2, p3, -1); + break; + + case AFSCALL_IINC: + rval1 = afs_syscall_iincdec(p1, p2, p3, 1); + break; + + case AFSCALL_ICL: + AFS_GLOCK(); + code = Afscall_icl(p1, p2, p3, p4, p5, &retval); + AFS_GUNLOCK(); + if (!code) + rval1 = retval; + if (!rval1) + rval1 = code; + break; + + default: + rval1 = EINVAL; + setuerror(EINVAL); + break; + } + + out: +#ifndef AFS_AIX41_ENV + if (monster != LOCK_NEST) + unlockl(&kernel_lock); +#endif /* !AFS_AIX41_ENV */ + return getuerror()? -1 : rval1; +} + +/* + * lsetpag - interface to afs_setpag(). + */ +lsetpag() +{ + + AFS_STATCNT(lsetpag); + return syscall(AFSCALL_SETPAG, 0, 0, 0, 0, 0); +} + +/* + * lpioctl - interface to pioctl() + */ +lpioctl(path, cmd, cmarg, follow) + char *path, *cmarg; +{ + + AFS_STATCNT(lpioctl); + return syscall(AFSCALL_PIOCTL, path, cmd, cmarg, follow); +} + +#else /* !AFS_AIX32_ENV */ + +#if defined(AFS_SGI_ENV) +struct afsargs { + sysarg_t syscall; + sysarg_t parm1; + sysarg_t parm2; + sysarg_t parm3; + sysarg_t parm4; + sysarg_t parm5; +}; + + +int +Afs_syscall(struct afsargs *uap, rval_t * rvp) +{ + int error; + long retval; + + AFS_STATCNT(afs_syscall); + switch (uap->syscall) { + case AFSCALL_ICL: + retval = 0; + AFS_GLOCK(); + error = + Afscall_icl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + uap->parm5, &retval); + AFS_GUNLOCK(); + rvp->r_val1 = retval; + break; +#ifdef AFS_SGI_XFS_IOPS_ENV + case AFSCALL_IDEC64: + error = + afs_syscall_idec64(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + uap->parm5); + break; + case AFSCALL_IINC64: + error = + afs_syscall_iinc64(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + uap->parm5); + break; + case AFSCALL_ILISTINODE64: + error = + afs_syscall_ilistinode64(uap->parm1, uap->parm2, uap->parm3, + uap->parm4, uap->parm5); + break; + case AFSCALL_ICREATENAME64: + error = + afs_syscall_icreatename64(uap->parm1, uap->parm2, uap->parm3, + uap->parm4, uap->parm5); + break; +#endif +#ifdef AFS_SGI_VNODE_GLUE + case AFSCALL_INIT_KERNEL_CONFIG: + error = afs_init_kernel_config(uap->parm1); + break; +#endif + default: + error = + afs_syscall_call(uap->syscall, uap->parm1, uap->parm2, uap->parm3, + uap->parm4, uap->parm5); + } + return error; +} + +#else /* AFS_SGI_ENV */ + +struct iparam { + long param1; + long param2; + long param3; + long param4; +}; + +struct iparam32 { + int param1; + int param2; + int param3; + int param4; +}; + + +#if defined(AFS_HPUX_64BIT_ENV) || defined(AFS_SUN57_64BIT_ENV) || (defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV)) +static void +iparam32_to_iparam(const struct iparam32 *src, struct iparam *dst) +{ + dst->param1 = src->param1; + dst->param2 = src->param2; + dst->param3 = src->param3; + dst->param4 = src->param4; +} +#endif + +/* + * If you need to change copyin_iparam(), you may also need to change + * copyin_afs_ioctl(). + */ + +static int +copyin_iparam(caddr_t cmarg, struct iparam *dst) +{ + int code; + +#if defined(AFS_HPUX_64BIT_ENV) + struct iparam32 dst32; + + if (is_32bit(u.u_procp)) { /* is_32bit() in proc_iface.h */ + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + iparam32_to_iparam(&dst32, dst); + return code; + } +#endif /* AFS_HPUX_64BIT_ENV */ + +#if defined(AFS_SUN57_64BIT_ENV) + struct iparam32 dst32; + + if (get_udatamodel() == DATAMODEL_ILP32) { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + iparam32_to_iparam(&dst32, dst); + return code; + } +#endif /* AFS_SUN57_64BIT_ENV */ + +#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_ALPHA_LINUX20_ENV) && !defined(AFS_IA64_LINUX20_ENV) + struct iparam32 dst32; + +#ifdef AFS_SPARC64_LINUX26_ENV + if (test_thread_flag(TIF_32BIT)) +#elif defined(AFS_SPARC64_LINUX24_ENV) + if (current->thread.flags & SPARC_FLAG_32BIT) +#elif defined(AFS_SPARC64_LINUX20_ENV) + if (current->tss.flags & SPARC_FLAG_32BIT) + +#elif defined(AFS_AMD64_LINUX26_ENV) + if (test_thread_flag(TIF_IA32)) +#elif defined(AFS_AMD64_LINUX20_ENV) + if (current->thread.flags & THREAD_IA32) + +#elif defined(AFS_PPC64_LINUX26_ENV) +#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) + if (current->thread_info->flags & _TIF_32BIT) +#else + if (task_thread_info(current)->flags & _TIF_32BIT) +#endif +#elif defined(AFS_PPC64_LINUX20_ENV) + if (current->thread.flags & PPC_FLAG_32BIT) + +#elif defined(AFS_S390X_LINUX26_ENV) + if (test_thread_flag(TIF_31BIT)) +#elif defined(AFS_S390X_LINUX20_ENV) + if (current->thread.flags & S390_FLAG_31BIT) + +#else +#error iparam32 not done for this linux platform +#endif + { + AFS_COPYIN(cmarg, (caddr_t) & dst32, sizeof dst32, code); + if (!code) + iparam32_to_iparam(&dst32, dst); + return code; + } +#endif /* AFS_LINUX_64BIT_KERNEL */ + + AFS_COPYIN(cmarg, (caddr_t) dst, sizeof *dst, code); + return code; +} + +/* Main entry of all afs system calls */ +#ifdef AFS_SUN5_ENV +extern int afs_sinited; + +/** The 32 bit OS expects the members of this structure to be 32 bit + * quantities and the 64 bit OS expects them as 64 bit quanties. Hence + * to accomodate both, *long* is used instead of afs_int32 + */ + +#ifdef AFS_SUN57_ENV +struct afssysa { + long syscall; + long parm1; + long parm2; + long parm3; + long parm4; + long parm5; + long parm6; +}; +#else +struct afssysa { + afs_int32 syscall; + afs_int32 parm1; + afs_int32 parm2; + afs_int32 parm3; + afs_int32 parm4; + afs_int32 parm5; + afs_int32 parm6; +}; +#endif + +Afs_syscall(register struct afssysa *uap, rval_t * rvp) +{ + int *retval = &rvp->r_val1; +#else /* AFS_SUN5_ENV */ +#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) +int +afs3_syscall(p, args, retval) +#ifdef AFS_FBSD50_ENV + struct thread *p; +#else + struct proc *p; +#endif + void *args; + long *retval; +{ + register struct a { + long syscall; + long parm1; + long parm2; + long parm3; + long parm4; + long parm5; + long parm6; + } *uap = (struct a *)args; +#else /* AFS_OSF_ENV */ +#ifdef AFS_LINUX20_ENV +struct afssysargs { + long syscall; + long parm1; + long parm2; + long parm3; + long parm4; + long parm5; + long parm6; /* not actually used - should be removed */ +}; +/* Linux system calls only set up for 5 arguments. */ +asmlinkage long +afs_syscall(long syscall, long parm1, long parm2, long parm3, long parm4) +{ + struct afssysargs args, *uap = &args; + long linux_ret = 0; + long *retval = &linux_ret; + long eparm[4]; /* matches AFSCALL_ICL in fstrace.c */ +#ifdef AFS_SPARC64_LINUX24_ENV + afs_int32 eparm32[4]; +#endif + /* eparm is also used by AFSCALL_CALL in afsd.c */ +#else +#if defined(UKERNEL) +Afs_syscall() +{ + register struct a { + long syscall; + long parm1; + long parm2; + long parm3; + long parm4; + long parm5; + long parm6; + } *uap = (struct a *)u.u_ap; +#else /* UKERNEL */ +int +Afs_syscall() +{ + register struct a { + long syscall; + long parm1; + long parm2; + long parm3; + long parm4; + long parm5; + long parm6; + } *uap = (struct a *)u.u_ap; +#endif /* UKERNEL */ +#if defined(AFS_HPUX_ENV) + long *retval = &u.u_rval1; +#else + int *retval = &u.u_rval1; +#endif +#endif /* AFS_LINUX20_ENV */ +#endif /* AFS_OSF_ENV */ +#endif /* AFS_SUN5_ENV */ + register int code = 0; + + AFS_STATCNT(afs_syscall); +#ifdef AFS_SUN5_ENV + rvp->r_vals = 0; + if (!afs_sinited) { + return (ENODEV); + } +#endif +#ifdef AFS_LINUX20_ENV + lock_kernel(); + /* setup uap for use below - pull out the magic decoder ring to know + * which syscalls have folded argument lists. + */ + uap->syscall = syscall; + uap->parm1 = parm1; + uap->parm2 = parm2; + uap->parm3 = parm3; + if (syscall == AFSCALL_ICL || syscall == AFSCALL_CALL) { +#ifdef AFS_SPARC64_LINUX24_ENV +/* from arch/sparc64/kernel/sys_sparc32.c */ +#define AA(__x) \ +({ unsigned long __ret; \ + __asm__ ("srl %0, 0, %0" \ + : "=r" (__ret) \ + : "0" (__x)); \ + __ret; \ +}) + + +#ifdef AFS_SPARC64_LINUX26_ENV + if (test_thread_flag(TIF_32BIT)) +#else + if (current->thread.flags & SPARC_FLAG_32BIT) +#endif + { + AFS_COPYIN((char *)parm4, (char *)eparm32, sizeof(eparm32), code); + eparm[0] = AA(eparm32[0]); + eparm[1] = AA(eparm32[1]); + eparm[2] = AA(eparm32[2]); +#undef AA + } else +#endif + AFS_COPYIN((char *)parm4, (char *)eparm, sizeof(eparm), code); + uap->parm4 = eparm[0]; + uap->parm5 = eparm[1]; + uap->parm6 = eparm[2]; + } else { + uap->parm4 = parm4; + uap->parm5 = 0; + uap->parm6 = 0; + } +#endif +#if defined(AFS_DARWIN80_ENV) + get_vfs_context(); + osi_Assert(*retval == 0); +#endif +#if defined(AFS_HPUX_ENV) + /* + * There used to be code here (duplicated from osi_Init()) for + * initializing the semaphore used by AFS_GLOCK(). Was the + * duplication to handle the case of a dynamically loaded kernel + * module? + */ + osi_InitGlock(); +#endif + if (uap->syscall == AFSCALL_CALL) { + code = + afs_syscall_call(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + uap->parm5, uap->parm6); + } else if (uap->syscall == AFSCALL_SETPAG) { +#ifdef AFS_SUN5_ENV + register proc_t *procp; + + procp = ttoproc(curthread); + AFS_GLOCK(); + code = afs_setpag(&procp->p_cred); + AFS_GUNLOCK(); +#else + AFS_GLOCK(); +#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + code = afs_setpag(p, args, retval); +#else /* AFS_OSF_ENV */ + code = afs_setpag(); +#endif + AFS_GUNLOCK(); +#endif + } else if (uap->syscall == AFSCALL_PIOCTL) { + AFS_GLOCK(); +#if defined(AFS_SUN5_ENV) + code = + afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + rvp, CRED()); +#elif defined(AFS_FBSD50_ENV) + code = + afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + p->td_ucred); +#elif defined(AFS_DARWIN80_ENV) + code = + afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + kauth_cred_get()); +#elif defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + code = + afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + p->p_cred->pc_ucred); +#else + code = + afs_syscall_pioctl(uap->parm1, uap->parm2, uap->parm3, + uap->parm4); +#endif + AFS_GUNLOCK(); + } else if (uap->syscall == AFSCALL_ICREATE) { + struct iparam iparams; + + code = copyin_iparam((char *)uap->parm3, &iparams); + if (code) { +#if defined(KERNEL_HAVE_UERROR) + setuerror(code); +#endif + } else +#ifdef AFS_SUN5_ENV + code = + afs_syscall_icreate(uap->parm1, uap->parm2, iparams.param1, + iparams.param2, iparams.param3, + iparams.param4, rvp, CRED()); +#else + code = + afs_syscall_icreate(uap->parm1, uap->parm2, iparams.param1, + iparams.param2, +#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + iparams.param3, iparams.param4, retval); +#else + iparams.param3, iparams.param4); +#endif +#endif /* AFS_SUN5_ENV */ + } else if (uap->syscall == AFSCALL_IOPEN) { +#ifdef AFS_SUN5_ENV + code = + afs_syscall_iopen(uap->parm1, uap->parm2, uap->parm3, rvp, + CRED()); +#else +#if defined(AFS_OSF_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) + code = afs_syscall_iopen(uap->parm1, uap->parm2, uap->parm3, retval); +#else + code = afs_syscall_iopen(uap->parm1, uap->parm2, uap->parm3); +#endif +#endif /* AFS_SUN5_ENV */ + } else if (uap->syscall == AFSCALL_IDEC) { +#ifdef AFS_SUN5_ENV + code = + afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, -1, rvp, + CRED()); +#else + code = afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, -1); +#endif /* AFS_SUN5_ENV */ + } else if (uap->syscall == AFSCALL_IINC) { +#ifdef AFS_SUN5_ENV + code = + afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, 1, rvp, + CRED()); +#else + code = afs_syscall_iincdec(uap->parm1, uap->parm2, uap->parm3, 1); +#endif /* AFS_SUN5_ENV */ + } else if (uap->syscall == AFSCALL_ICL) { + AFS_GLOCK(); + code = + Afscall_icl(uap->parm1, uap->parm2, uap->parm3, uap->parm4, + uap->parm5, retval); + AFS_GUNLOCK(); +#ifdef AFS_LINUX20_ENV + if (!code) { + /* ICL commands can return values. */ + code = -linux_ret; /* Gets negated again at exit below */ + } +#else + if (code) { +#if defined(KERNEL_HAVE_UERROR) + setuerror(code); +#endif + } +#endif /* !AFS_LINUX20_ENV */ + } else { +#if defined(KERNEL_HAVE_UERROR) + setuerror(EINVAL); +#else + code = EINVAL; +#endif + } + +#if defined(AFS_DARWIN80_ENV) + if (uap->syscall != AFSCALL_CALL) + put_vfs_context(); +#endif +#ifdef AFS_LINUX20_ENV + code = -code; + unlock_kernel(); +#endif + return code; +} +#endif /* AFS_SGI_ENV */ +#endif /* !AFS_AIX32_ENV */ diff --git a/src/afs/afs_user.c b/src/afs/afs_user.c index 2b5d56b7f..40f27a41a 100644 --- a/src/afs/afs_user.c +++ b/src/afs/afs_user.c @@ -14,7 +14,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_user.c,v 1.15.2.1 2006/12/20 20:09:06 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_user.c,v 1.15.14.4 2006/12/20 20:08:33 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -51,6 +51,7 @@ afs_rwlock_t afs_xuser; struct unixuser *afs_users[NUSERS]; +#ifndef AFS_PAG_MANAGER /* Forward declarations */ void afs_ResetAccessCache(afs_int32 uid, int alock); @@ -86,6 +87,7 @@ RemoveUserConns(register struct unixuser *au) } /*For each chain */ } /*RemoveUserConns */ +#endif /* !AFS_PAG_MANAGER */ /* Called from afs_Daemon to garbage collect unixusers no longer using system, @@ -105,8 +107,10 @@ afs_GCUserData(int aforce) AFS_STATCNT(afs_GCUserData); /* Obtain locks in valid order */ ObtainWriteLock(&afs_xuser, 95); +#ifndef AFS_PAG_MANAGER ObtainReadLock(&afs_xserver); ObtainWriteLock(&afs_xconn, 96); +#endif now = osi_Time(); for (i = 0; i < NUSERS; i++) { for (lu = &afs_users[i], tu = *lu; tu; tu = nu) { @@ -128,7 +132,9 @@ afs_GCUserData(int aforce) nu = tu->next; if (delFlag) { *lu = tu->next; +#ifndef AFS_PAG_MANAGER RemoveUserConns(tu); +#endif if (tu->stp) afs_osi_Free(tu->stp, tu->stLen); if (tu->exporter) @@ -139,13 +145,18 @@ afs_GCUserData(int aforce) } } } +#ifndef AFS_PAG_MANAGER ReleaseWriteLock(&afs_xconn); - ReleaseWriteLock(&afs_xuser); +#endif +#ifndef AFS_PAG_MANAGER ReleaseReadLock(&afs_xserver); +#endif + ReleaseWriteLock(&afs_xuser); } /*afs_GCUserData */ +#ifndef AFS_PAG_MANAGER /* * Check for unixusers who encountered bad tokens, and reset the access * cache for these guys. Can't do this when token expiration detected, @@ -253,6 +264,7 @@ afs_ResetUserConns(register struct unixuser *auser) afs_ResetAccessCache(auser->uid, 1); auser->states &= ~UNeedsReset; } /*afs_ResetUserConns */ +#endif /* !AFS_PAG_MANAGER */ struct unixuser * diff --git a/src/afs/afs_util.c b/src/afs/afs_util.c index 4ce3e530c..f85cefc3e 100644 --- a/src/afs/afs_util.c +++ b/src/afs/afs_util.c @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_util.c,v 1.17.2.3 2006/03/09 06:41:33 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_util.c,v 1.28.2.8 2008/07/01 03:35:23 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -51,6 +51,8 @@ RCSID #include #endif +afs_int32 afs_new_inum = 0; + #ifndef afs_cv2string char * afs_cv2string(char *ttp, afs_uint32 aval) @@ -134,6 +136,19 @@ afs_strchr(char *s, int c) return NULL; } #endif +#ifndef afs_strrchr +char * +afs_strrchr(char *s, int c) +{ + char *p = NULL; + + do { + if (*s == c) + p = (char*) s; + } while (*s++); + return p; +} +#endif char * afs_strdup(char *s) @@ -182,79 +197,6 @@ print_internet_address(char *preamble, struct srvAddr *sa, char *postamble, -/* * * * * * * - * this code badly needs to be cleaned up... too many ugly ifdefs. - * XXX - */ -#if 0 -void -afs_warn(char *a, long b, long c, long d, long e, long f, long g, long h, - long i, long j) -#else -void -afs_warn(a, b, c, d, e, f, g, h, i, j) - char *a; -#if defined( AFS_USE_VOID_PTR) - void *b, *c, *d, *e, *f, *g, *h, *i, *j; -#else - long b, c, d, e, f, g, h, i, j; -#endif -#endif -{ - AFS_STATCNT(afs_warn); - - if (afs_showflags & GAGCONSOLE) { -#if defined(AFS_AIX_ENV) - struct file *fd; - - /* cf. console_printf() in oncplus/kernext/nfs/serv/shared.c */ - if (fp_open - ("/dev/console", O_WRONLY | O_NOCTTY | O_NDELAY, 0666, 0, FP_SYS, - &fd) == 0) { - char buf[1024]; - ssize_t len; - ssize_t count; - - sprintf(buf, a, b, c, d, e, f, g, h, i, j); - len = strlen(buf); - fp_write(fd, buf, len, 0, UIO_SYSSPACE, &count); - fp_close(fd); - } -#else - printf(a, b, c, d, e, f, g, h, i, j); -#endif - } -} - -#if 0 -void -afs_warnuser(char *a, long b, long c, long d, long e, long f, long g, long h, - long i, long j) -#else -void -afs_warnuser(a, b, c, d, e, f, g, h, i, j) - char *a; - long b, c, d, e, f, g, h, i, j; -#endif -{ - AFS_STATCNT(afs_warnuser); - if (afs_showflags & GAGUSER) { -#ifdef AFS_GLOBAL_SUNLOCK - int haveGlock = ISAFS_GLOCK(); - if (haveGlock) - AFS_GUNLOCK(); -#endif /* AFS_GLOBAL_SUNLOCK */ - - uprintf(a, b, c, d, e, f, g, h, i, j); - -#ifdef AFS_GLOBAL_SUNLOCK - if (haveGlock) - AFS_GLOCK(); -#endif /* AFS_GLOBAL_SUNLOCK */ - } -} - - /* run everywhere, checking locks */ void afs_CheckLocks(void) @@ -402,3 +344,274 @@ afs_data_pointer_to_int32(const void *p) ip.p = p; return ip.i32[i32_sub]; } + +#ifdef AFS_LINUX20_ENV + +struct afs_md5 { + unsigned int sz[2]; + afs_int32 counter[4]; + unsigned char save[64]; +}; + +static void AFS_MD5_Init (struct afs_md5 *m); +static void AFS_MD5_Update (struct afs_md5 *m, const void *p, size_t len); +static void AFS_MD5_Final (void *res, struct afs_md5 *m); /* u_int32 res[4] */ + +#define A m->counter[0] +#define B m->counter[1] +#define C m->counter[2] +#define D m->counter[3] +#define X data + +static void +AFS_MD5_Init (struct afs_md5 *m) +{ + m->sz[0] = 0; + m->sz[1] = 0; + D = 0x10325476; + C = 0x98badcfe; + B = 0xefcdab89; + A = 0x67452301; +} + +#define F(x,y,z) ((x & y) | (~x & z)) +#define G(x,y,z) ((x & z) | (y & ~z)) +#define H(x,y,z) (x ^ y ^ z) +#define I(x,y,z) (y ^ (x | ~z)) + +static inline afs_uint32 +cshift (afs_uint32 x, unsigned int n) +{ + return ((x << n) | (x >> (32 - n))); +} + +#define DOIT(a,b,c,d,k,s,i,OP) \ +a = b + cshift(a + OP(b,c,d) + X[k] + (i), s) + +#define DO1(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,F) +#define DO2(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,G) +#define DO3(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,H) +#define DO4(a,b,c,d,k,s,i) DOIT(a,b,c,d,k,s,i,I) + +static inline void +calc (struct afs_md5 *m, afs_uint32 *data) +{ + afs_uint32 AA, BB, CC, DD; + + AA = A; + BB = B; + CC = C; + DD = D; + + /* Round 1 */ + + DO1(A,B,C,D,0,7,0xd76aa478); + DO1(D,A,B,C,1,12,0xe8c7b756); + DO1(C,D,A,B,2,17,0x242070db); + DO1(B,C,D,A,3,22,0xc1bdceee); + + DO1(A,B,C,D,4,7,0xf57c0faf); + DO1(D,A,B,C,5,12,0x4787c62a); + DO1(C,D,A,B,6,17,0xa8304613); + DO1(B,C,D,A,7,22,0xfd469501); + + DO1(A,B,C,D,8,7,0x698098d8); + DO1(D,A,B,C,9,12,0x8b44f7af); + DO1(C,D,A,B,10,17,0xffff5bb1); + DO1(B,C,D,A,11,22,0x895cd7be); + + DO1(A,B,C,D,12,7,0x6b901122); + DO1(D,A,B,C,13,12,0xfd987193); + DO1(C,D,A,B,14,17,0xa679438e); + DO1(B,C,D,A,15,22,0x49b40821); + + /* Round 2 */ + + DO2(A,B,C,D,1,5,0xf61e2562); + DO2(D,A,B,C,6,9,0xc040b340); + DO2(C,D,A,B,11,14,0x265e5a51); + DO2(B,C,D,A,0,20,0xe9b6c7aa); + + DO2(A,B,C,D,5,5,0xd62f105d); + DO2(D,A,B,C,10,9,0x2441453); + DO2(C,D,A,B,15,14,0xd8a1e681); + DO2(B,C,D,A,4,20,0xe7d3fbc8); + + DO2(A,B,C,D,9,5,0x21e1cde6); + DO2(D,A,B,C,14,9,0xc33707d6); + DO2(C,D,A,B,3,14,0xf4d50d87); + DO2(B,C,D,A,8,20,0x455a14ed); + + DO2(A,B,C,D,13,5,0xa9e3e905); + DO2(D,A,B,C,2,9,0xfcefa3f8); + DO2(C,D,A,B,7,14,0x676f02d9); + DO2(B,C,D,A,12,20,0x8d2a4c8a); + + /* Round 3 */ + + DO3(A,B,C,D,5,4,0xfffa3942); + DO3(D,A,B,C,8,11,0x8771f681); + DO3(C,D,A,B,11,16,0x6d9d6122); + DO3(B,C,D,A,14,23,0xfde5380c); + + DO3(A,B,C,D,1,4,0xa4beea44); + DO3(D,A,B,C,4,11,0x4bdecfa9); + DO3(C,D,A,B,7,16,0xf6bb4b60); + DO3(B,C,D,A,10,23,0xbebfbc70); + + DO3(A,B,C,D,13,4,0x289b7ec6); + DO3(D,A,B,C,0,11,0xeaa127fa); + DO3(C,D,A,B,3,16,0xd4ef3085); + DO3(B,C,D,A,6,23,0x4881d05); + + DO3(A,B,C,D,9,4,0xd9d4d039); + DO3(D,A,B,C,12,11,0xe6db99e5); + DO3(C,D,A,B,15,16,0x1fa27cf8); + DO3(B,C,D,A,2,23,0xc4ac5665); + + /* Round 4 */ + + DO4(A,B,C,D,0,6,0xf4292244); + DO4(D,A,B,C,7,10,0x432aff97); + DO4(C,D,A,B,14,15,0xab9423a7); + DO4(B,C,D,A,5,21,0xfc93a039); + + DO4(A,B,C,D,12,6,0x655b59c3); + DO4(D,A,B,C,3,10,0x8f0ccc92); + DO4(C,D,A,B,10,15,0xffeff47d); + DO4(B,C,D,A,1,21,0x85845dd1); + + DO4(A,B,C,D,8,6,0x6fa87e4f); + DO4(D,A,B,C,15,10,0xfe2ce6e0); + DO4(C,D,A,B,6,15,0xa3014314); + DO4(B,C,D,A,13,21,0x4e0811a1); + + DO4(A,B,C,D,4,6,0xf7537e82); + DO4(D,A,B,C,11,10,0xbd3af235); + DO4(C,D,A,B,2,15,0x2ad7d2bb); + DO4(B,C,D,A,9,21,0xeb86d391); + + A += AA; + B += BB; + C += CC; + D += DD; +} + +/* + * From `Performance analysis of MD5' by Joseph D. Touch + */ + +#if defined(WORDS_BIGENDIAN) +static inline afs_uint32 +swap_u_int32_t (afs_uint32 t) +{ + afs_uint32 temp1, temp2; + + temp1 = cshift(t, 16); + temp2 = temp1 >> 8; + temp1 &= 0x00ff00ff; + temp2 &= 0x00ff00ff; + temp1 <<= 8; + return temp1 | temp2; +} +#endif + +struct x32{ + unsigned int a:32; + unsigned int b:32; +}; + +static void +AFS_MD5_Update (struct afs_md5 *m, const void *v, size_t len) +{ + const unsigned char *p = v; + size_t old_sz = m->sz[0]; + size_t offset; + + m->sz[0] += len * 8; + if (m->sz[0] < old_sz) + ++m->sz[1]; + offset = (old_sz / 8) % 64; + while(len > 0){ + size_t l = MIN(len, 64 - offset); + memcpy(m->save + offset, p, l); + offset += l; + p += l; + len -= l; + if(offset == 64){ +#if defined(WORDS_BIGENDIAN) + int i; + afs_uint32 temp[16]; + struct x32 *us = (struct x32*)m->save; + for(i = 0; i < 8; i++){ + temp[2*i+0] = swap_u_int32_t(us[i].a); + temp[2*i+1] = swap_u_int32_t(us[i].b); + } + calc(m, temp); +#else + calc(m, (afs_uint32*)m->save); +#endif + offset = 0; + } + } +} + +static void +AFS_MD5_Final (void *res, struct afs_md5 *m) +{ + unsigned char zeros[72]; + unsigned offset = (m->sz[0] / 8) % 64; + unsigned int dstart = (120 - offset - 1) % 64 + 1; + + *zeros = 0x80; + memset (zeros + 1, 0, sizeof(zeros) - 1); + zeros[dstart+0] = (m->sz[0] >> 0) & 0xff; + zeros[dstart+1] = (m->sz[0] >> 8) & 0xff; + zeros[dstart+2] = (m->sz[0] >> 16) & 0xff; + zeros[dstart+3] = (m->sz[0] >> 24) & 0xff; + zeros[dstart+4] = (m->sz[1] >> 0) & 0xff; + zeros[dstart+5] = (m->sz[1] >> 8) & 0xff; + zeros[dstart+6] = (m->sz[1] >> 16) & 0xff; + zeros[dstart+7] = (m->sz[1] >> 24) & 0xff; + AFS_MD5_Update (m, zeros, dstart + 8); + { + int i; + unsigned char *r = (unsigned char *)res; + + for (i = 0; i < 4; ++i) { + r[4*i] = m->counter[i] & 0xFF; + r[4*i+1] = (m->counter[i] >> 8) & 0xFF; + r[4*i+2] = (m->counter[i] >> 16) & 0xFF; + r[4*i+3] = (m->counter[i] >> 24) & 0xFF; + } + } +} + +afs_int32 afs_calc_inum (afs_int32 volume, afs_int32 vnode) +{ + afs_int32 ino, vno = vnode; + char digest[16]; + struct afs_md5 ct; + + if (afs_new_inum) { + AFS_MD5_Init(&ct); + AFS_MD5_Update(&ct, &volume, 4); + AFS_MD5_Update(&ct, &vnode, 4); + AFS_MD5_Final(digest, &ct); + memcpy(&ino, digest, sizeof(ino_t)); + ino ^= (ino ^ vno) & 1; + } else { + ino = (volume << 16) + vnode; + } + ino &= 0x7fffffff; /* Assumes 32 bit ino_t ..... */ + return ino; +} + +#else + +afs_int32 afs_calc_inum (afs_int32 volume, afs_int32 vnode) +{ + return (volume << 16) + vnode; +} + +#endif diff --git a/src/afs/afs_vcache.c b/src/afs/afs_vcache.c index aac8ca75b..941105ac3 100644 --- a/src/afs/afs_vcache.c +++ b/src/afs/afs_vcache.c @@ -39,7 +39,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_vcache.c,v 1.65.2.48 2007/12/13 19:49:30 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_vcache.c,v 1.114.2.9 2008/05/23 14:25:16 shadow Exp $"); #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ @@ -599,7 +599,7 @@ afs_FlushReclaimedVcaches(void) We probably need a way to be smarter about this. */ tvc->nextfree = tmpReclaimedVCList; tmpReclaimedVCList = tvc; - printf("Reclaim list flush %x failed: %d\n", tvc, code); + printf("Reclaim list flush %lx failed: %d\n", (unsigned long) tvc, code); } if (tvc->states & (CVInit #ifdef AFS_DARWIN80_ENV @@ -1658,7 +1658,7 @@ afs_RemoteLookup(register struct VenusFid *afid, struct vrequest *areq, struct AFSFetchStatus OutDirStatus; XSTATS_DECLS; if (!name) - name = ""; /* XXX */ + name = ""; /* XXX */ do { tc = afs_Conn(afid, areq, SHARED_LOCK); if (tc) { @@ -1752,7 +1752,8 @@ afs_GetVCache(register struct VenusFid *afid, struct vrequest *areq, if (cached) *cached = 1; osi_Assert((tvc->states & CVInit) == 0); - if (tvc->states & CStatd) { + /* If we are in readdir, return the vnode even if not statd */ + if ((tvc->states & CStatd) || afs_InReadDir(tvc)) { ReleaseSharedLock(&afs_xvcache); return tvc; } @@ -1894,9 +1895,32 @@ afs_GetVCache(register struct VenusFid *afid, struct vrequest *areq, if (afs_DynrootNewVnode(tvc, &OutStatus)) { afs_ProcessFS(tvc, &OutStatus, areq); tvc->states |= CStatd | CUnique; + tvc->parentVnode = OutStatus.ParentVnode; + tvc->parentUnique = OutStatus.ParentUnique; code = 0; } else { - code = afs_FetchStatus(tvc, afid, areq, &OutStatus); + /* If we've got here and we're disconnected, then we can go + * no further + */ + if (AFS_IS_DISCONNECTED) { + code = ENETDOWN; + /*printf("Network is down in afs_GetCache");*/ + } else + code = afs_FetchStatus(tvc, afid, areq, &OutStatus); + + /* For the NFS translator's benefit, make sure + * non-directory vnodes always have their parent FID set + * correctly, even when created as a result of decoding an + * NFS filehandle. It would be nice to also do this for + * directories, but we can't because the fileserver fills + * in the FID of the directory itself instead of that of + * its parent. + */ + if (!code && OutStatus.FileType != Directory && + !tvc->parentVnode) { + tvc->parentVnode = OutStatus.ParentVnode; + tvc->parentUnique = OutStatus.ParentUnique; + } } } @@ -1970,9 +1994,14 @@ afs_LookupVCache(struct VenusFid *afid, struct vrequest *areq, nfid = *afid; now = osi_Time(); origCBs = afs_allCBs; /* if anything changes, we don't have a cb */ - code = - afs_RemoteLookup(&adp->fid, areq, aname, &nfid, &OutStatus, &CallBack, - &serverp, &tsync); + + if (AFS_IS_DISCONNECTED) { + /*printf("Network is down in afs_LookupVcache\n");*/ + code = ENETDOWN; + } else + code = + afs_RemoteLookup(&adp->fid, areq, aname, &nfid, &OutStatus, + &CallBack, &serverp, &tsync); #if defined(AFS_SGI_ENV) && !defined(AFS_SGI53_ENV) loop2: @@ -2798,7 +2827,6 @@ afs_NFSFindVCache(struct vcache **avcp, struct VenusFid *afid) && ((tvc->fid.Fid.Unique & 0xffffff) == afid->Fid.Unique) && (tvc->fid.Cell == afid->Cell)) { if (tvc->states & CVInit) { - int lock; ReleaseSharedLock(&afs_xvcache); afs_osi_Sleep(&tvc->states); goto loop; @@ -3072,12 +3100,12 @@ shutdown_vcache(void) } afs_cbrSpace = 0; -#ifdef KERNEL_HAVE_PIN - unpin(Initial_freeVCList, afs_cacheStats * sizeof(struct vcache)); -#endif #if !defined(AFS_OSF_ENV) && !defined(AFS_LINUX22_ENV) afs_osi_Free(Initial_freeVCList, afs_cacheStats * sizeof(struct vcache)); #endif +#ifdef KERNEL_HAVE_PIN + unpin(Initial_freeVCList, afs_cacheStats * sizeof(struct vcache)); +#endif #if !defined(AFS_OSF_ENV) && !defined(AFS_LINUX22_ENV) freeVCList = Initial_freeVCList = 0; @@ -3088,3 +3116,32 @@ shutdown_vcache(void) for(i = 0; i < VCSIZE; ++i) QInit(&afs_vhashTV[i]); } + +#ifdef AFS_DISCON_ENV +void afs_DisconGiveUpCallbacks() { + int i; + struct vcache *tvc; + int nq=0; + + ObtainWriteLock(&afs_xvcache, 1002); /* XXX - should be a unique number */ + + /* Somehow, walk the set of vcaches, with each one coming out as tvc */ + for (i = 0; i < VCSIZE; i++) { + for (tvc = afs_vhashT[i]; tvc; tvc = tvc->hnext) { + if ((tvc->states & CRO) == 0 && tvc->callback) { + /* XXX - should we check if the callback has expired here? */ + afs_QueueVCB(tvc); + tvc->callback = NULL; + tvc->states &- ~(CStatd | CUnique); + nq++; + } + } + } + /*printf("%d callbacks to be discarded. queued ... ", nq);*/ + afs_FlushVCBs(0); + + ReleaseWriteLock(&afs_xvcache); + /*printf("gone\n");*/ +} + +#endif diff --git a/src/afs/afs_volume.c b/src/afs/afs_volume.c index f890a353f..4fc54f4ba 100644 --- a/src/afs/afs_volume.c +++ b/src/afs/afs_volume.c @@ -19,7 +19,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_volume.c,v 1.26.2.7 2007/01/25 11:24:30 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_volume.c,v 1.31.2.6 2008/05/23 14:25:16 shadow Exp $"); #include "afs/stds.h" #include "afs/sysincludes.h" /* Standard vendor system headers */ @@ -40,6 +40,7 @@ RCSID #include "afsincludes.h" /* Afs-based standard headers */ #include "afs/afs_stats.h" /* afs statistics */ +#include "afs/afs_dynroot.h" #if defined(AFS_SUN56_ENV) #include @@ -432,7 +433,7 @@ afs_GetVolume(struct VenusFid *afid, struct vrequest *areq, tv = afs_FindVolume(afid, locktype); if (!tv) { - if (afs_IsDynrootFid(afid)) { + if (afs_IsDynrootAnyFid(afid)) { tv = afs_NewDynrootVolume(afid); } else { bp = afs_cv2string(&tbuf[CVBS], afid->Fid.Volume); @@ -523,6 +524,11 @@ afs_SetupVolume(afs_int32 volid, char *aname, void *ve, struct cell *tcell, } else { tv->vtix = -1; tv->rootVnode = tv->rootUnique = 0; + afs_GetDynrootMountFid(&tv->dotdot); + afs_GetDynrootMountFid(&tv->mtpoint); + tv->mtpoint.Fid.Vnode = + VNUM_FROM_TYPEID(VN_TYPE_MOUNT, tcell->cellIndex << 2); + tv->mtpoint.Fid.Unique = volid; } } tv->refCount++; @@ -572,6 +578,9 @@ afs_GetVolumeByName(register char *aname, afs_int32 acell, int agood, ReleaseWriteLock(&afs_xvolume); + if (AFS_IS_DISCONNECTED) + return NULL; + tv = afs_NewVolumeByName(aname, acell, agood, areq, locktype); return (tv); } diff --git a/src/afs/afs_warn.c b/src/afs/afs_warn.c new file mode 100644 index 000000000..3dd56fc89 --- /dev/null +++ b/src/afs/afs_warn.c @@ -0,0 +1,126 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * afs_warn.c - afs_warn + * + * Implements: afs_warn, afs_warnuser + */ +#include +#include "afs/param.h" + +RCSID + ("$Header: /cvs/openafs/src/afs/afs_warn.c,v 1.1.2.2 2008/07/01 03:35:23 shadow Exp $"); + +#include "afs/stds.h" +#include "afs/sysincludes.h" /* Standard vendor system headers */ + +#if !defined(UKERNEL) +#if !defined(AFS_LINUX20_ENV) +#include +#endif +#include + +#ifdef AFS_SGI62_ENV +#include "h/hashing.h" +#endif +#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN60_ENV) +#include +#endif /* ! AFS_HPUX110_ENV */ +#endif /* !defined(UKERNEL) */ + +#include "afsincludes.h" /* Afs-based standard headers */ +#include "afs/afs_stats.h" /* afs statistics */ + +#if defined(AFS_SUN56_ENV) +#include +#include +#if defined(AFS_SUN58_ENV) +#include +#endif +#include +#endif + +#if defined(AFS_AIX_ENV) +#include +#endif + + + +/* * * * * * * + * this code badly needs to be cleaned up... too many ugly ifdefs. + * XXX + */ +#if 0 +void +afs_warn(char *a, long b, long c, long d, long e, long f, long g, long h, + long i, long j) +#else +void +afs_warn(a, b, c, d, e, f, g, h, i, j) + char *a; +#if defined( AFS_USE_VOID_PTR) + void *b, *c, *d, *e, *f, *g, *h, *i, *j; +#else + long b, c, d, e, f, g, h, i, j; +#endif +#endif +{ + AFS_STATCNT(afs_warn); + + if (afs_showflags & GAGCONSOLE) { +#if defined(AFS_AIX_ENV) + struct file *fd; + + /* cf. console_printf() in oncplus/kernext/nfs/serv/shared.c */ + if (fp_open + ("/dev/console", O_WRONLY | O_NOCTTY | O_NDELAY, 0666, 0, FP_SYS, + &fd) == 0) { + char buf[1024]; + ssize_t len; + ssize_t count; + + sprintf(buf, a, b, c, d, e, f, g, h, i, j); + len = strlen(buf); + fp_write(fd, buf, len, 0, UIO_SYSSPACE, &count); + fp_close(fd); + } +#else + printf(a, b, c, d, e, f, g, h, i, j); +#endif + } +} + +#if 0 +void +afs_warnuser(char *a, long b, long c, long d, long e, long f, long g, long h, + long i, long j) +#else +void +afs_warnuser(a, b, c, d, e, f, g, h, i, j) + char *a; + long b, c, d, e, f, g, h, i, j; +#endif +{ + AFS_STATCNT(afs_warnuser); + if (afs_showflags & GAGUSER) { +#ifdef AFS_GLOBAL_SUNLOCK + int haveGlock = ISAFS_GLOCK(); + if (haveGlock) + AFS_GUNLOCK(); +#endif /* AFS_GLOBAL_SUNLOCK */ + + uprintf(a, b, c, d, e, f, g, h, i, j); + +#ifdef AFS_GLOBAL_SUNLOCK + if (haveGlock) + AFS_GLOCK(); +#endif /* AFS_GLOBAL_SUNLOCK */ + } +} diff --git a/src/afs/afsincludes.h b/src/afs/afsincludes.h index 72c68db3b..898b1d03d 100644 --- a/src/afs/afsincludes.h +++ b/src/afs/afsincludes.h @@ -51,6 +51,7 @@ #include "afs/icl.h" #include "afs/afs_stats.h" #include "afs/afs_prototypes.h" +#include "afs/discon.h" #if defined(AFS_LINUX20_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) #include "osi_machdep.h" #endif diff --git a/src/afs/discon.h b/src/afs/discon.h new file mode 100644 index 000000000..6107f410c --- /dev/null +++ b/src/afs/discon.h @@ -0,0 +1,22 @@ +#ifndef _DISCON_H +#define _DISCON_H + +#ifndef AFS_DISCON_ENV +#define AFS_IS_DISCONNECTED 0 +#define AFS_IS_LOGGING 0 +#define AFS_DISCON_LOCK() +#define AFS_DISCON_UNLOCK() + +#else + +extern afs_int32 afs_is_disconnected; +extern afs_int32 afs_is_logging; +extern afs_rwlock_t afs_discon_lock; + +#define AFS_IS_DISCONNECTED (afs_is_disconnected) +#define AFS_IS_LOGGING (afs_is_logging) +#define AFS_DISCON_LOCK() ObtainReadLock(&afs_discon_lock) +#define AFS_DISCON_UNLOCK() ReleaseReadLock(&afs_discon_lock) + +#endif /* AFS_DISCON_ENV */ +#endif /* _DISCON_H */ diff --git a/src/afs/exporter.h b/src/afs/exporter.h index 61371b46a..14f5b86de 100644 --- a/src/afs/exporter.h +++ b/src/afs/exporter.h @@ -17,6 +17,7 @@ #define NFS_NOBODY -2 /* maps Nfs's "nobody" but since not declared by some systems (i.e. Ultrix) we use a constant */ #endif #define RMTUSER_REQ 0xabc +#define RMTUSER_REQ_PRIV 0xabe /** * There is a limitation on the number of bytes that can be passed into @@ -51,11 +52,13 @@ struct exporterops { int (*export_reqhandler) (); - int (*export_hold) (); - int (*export_rele) (); + void (*export_hold) (); + void (*export_rele) (); int (*export_sysname) (); - int (*export_garbagecollect) (); + void (*export_garbagecollect) (); int (*export_statistics) (); + int (*export_checkhost) (); + afs_int32 (*export_gethost) (); }; struct exporterstats { @@ -83,6 +86,8 @@ struct afs_exporter { #define EXP_UNIXMODE 2 #define EXP_PWSYNC 4 #define EXP_SUBMOUNTS 8 +#define EXP_CLIPAGS 16 +#define EXP_CALLBACK 32 #define AFS_NFSFULLFID 1 @@ -93,12 +98,16 @@ struct afs_exporter { (*(EXP)->exp_op->export_hold)(EXP) #define EXP_RELE(EXP) \ (*(EXP)->exp_op->export_rele)(EXP) -#define EXP_SYSNAME(EXP, INNAME, OUTNAME, NUM) \ - (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME, NUM) +#define EXP_SYSNAME(EXP, INNAME, OUTNAME, NUM, ALLPAGS) \ + (*(EXP)->exp_op->export_sysname)(EXP, INNAME, OUTNAME, NUM, ALLPAGS) #define EXP_GC(EXP, param) \ (*(EXP)->exp_op->export_garbagecollect)(EXP, param) #define EXP_STATISTICS(EXP) \ (*(EXP)->exp_op->export_statistics)(EXP) +#define EXP_CHECKHOST(EXP, HOST) \ + (*(EXP)->exp_op->export_checkhost)(EXP, HOST) +#define EXP_GETHOST(EXP) \ + (*(EXP)->exp_op->export_checkhost)(EXP) struct afs3_fid { u_short len; diff --git a/src/afs/nfsclient.h b/src/afs/nfsclient.h index 0db9d3cda..fa96f0b5b 100644 --- a/src/afs/nfsclient.h +++ b/src/afs/nfsclient.h @@ -28,6 +28,7 @@ struct nfsclientpag { afs_int32 uid; /* search based on uid and ... */ afs_int32 host; /* ... nfs client's host ip address */ afs_int32 pag; /* active pag for all (uid, host) "unpaged" conns */ + afs_int32 client_uid; /* actual UID on client */ char *sysname[MAXNUMSYSNAMES];/* user's "@sys" value; also kept in unixuser */ int sysnamecount; /* number of sysnames */ afs_int32 lastcall; /* Used for timing out nfsclientpag structs */ diff --git a/src/afsd/afs.conf.linux b/src/afsd/afs.conf.linux index 6cdc675aa..456d0732e 100644 --- a/src/afsd/afs.conf.linux +++ b/src/afsd/afs.conf.linux @@ -61,8 +61,8 @@ ENABLE_DYNROOT=on # -files_per_subdir [n] number of files per cache subdir. (def=2048) # -shutdown Shutdown afs daemons # --------------------------------------------------------------------------- -XXLARGE="-fakestat -stat 4000 -dcache 4000 -daemons 6 -volumes 256 -files 50000" -XLARGE="-fakestat -stat 3600 -dcache 3600 -daemons 5 -volumes 196 -files 50000" +XXLARGE="-fakestat -stat 4000 -dcache 4000 -daemons 6 -volumes 256" +XLARGE="-fakestat -stat 3600 -dcache 3600 -daemons 5 -volumes 196" LARGE="-fakestat -stat 2800 -dcache 2400 -daemons 5 -volumes 128" MEDIUM="-fakestat -stat 2000 -dcache 800 -daemons 3 -volumes 70" SMALL="-fakestat -stat 300 -dcache 100 -daemons 2 -volumes 50" diff --git a/src/afsd/afs.rc.darwin b/src/afsd/afs.rc.darwin index 4e3fce37f..008f5e259 100644 --- a/src/afsd/afs.rc.darwin +++ b/src/afsd/afs.rc.darwin @@ -11,6 +11,8 @@ # Updated to match standard service scripts # Phil Holland 6/11/04 +PRECACHE="$AFS_PRECACHE" + . /etc/rc.common # @@ -140,6 +142,10 @@ StartService() fs sysname $AFS_SYSNAME fi + if [ ! -z "$PRECACHE" ] ; then + fs precache $AFS_PRECACHE + fi + # # Run package to update the disk # diff --git a/src/afsd/afs.rc.obsd b/src/afsd/afs.rc.obsd index 9f844dde1..dad346306 100644 --- a/src/afsd/afs.rc.obsd +++ b/src/afsd/afs.rc.obsd @@ -5,5 +5,5 @@ rm -f /usr/vice/etc/openbsd_afs /sbin/modload -o /usr/vice/etc/openbsd_afs /usr/vice/etc/libafs.o -/usr/vice/etc/afsd -nosettime +/usr/vice/etc/afsd -afsdb -stat 600 /usr/vice/bin/fs setcrypt on diff --git a/src/afsd/afsd.c b/src/afsd/afsd.c index 4e824472d..dfe6450b2 100644 --- a/src/afsd/afsd.c +++ b/src/afsd/afsd.c @@ -58,7 +58,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afsd/afsd.c,v 1.43.2.25 2007/10/31 22:32:17 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsd/afsd.c,v 1.60.2.10 2007/10/31 22:31:59 shadow Exp $"); #define VFS 1 @@ -133,7 +133,6 @@ RCSID #include #include #include -#include #include #include #include @@ -263,7 +262,9 @@ struct in_addr_42 { afs_int32 enable_rxbind = 0; afs_int32 afs_shutdown = 0; afs_int32 cacheBlocks; /*Num blocks in the cache */ -afs_int32 cacheFiles; /*Optimal # of files in workstation cache */ +afs_int32 cacheFiles; /*Optimal # of files in workstation cache */ +afs_int32 rwpct = 0; +afs_int32 ropct = 0; afs_int32 cacheStatEntries; /*Number of stat cache entries */ char cacheBaseDir[1024]; /*Where the workstation AFS cache lives */ char confDir[1024]; /*Where the workstation AFS configuration lives */ @@ -309,6 +310,7 @@ static int enable_dynroot = 0; /* enable dynroot support */ static int enable_fakestat = 0; /* enable fakestat support */ static int enable_backuptree = 0; /* enable backup tree support */ static int enable_nomount = 0; /* do not mount */ +static int enable_splitcache = 0; #ifdef notdef static int inodes = 60; /* VERY conservative, but has to be */ #endif @@ -525,7 +527,8 @@ afsd_install_events(void) * Sets globals. *---------------------------------------------------------------------------*/ -int ParseCacheInfoFile(void) +int +ParseCacheInfoFile(void) { static char rn[] = "ParseCacheInfoFile"; /*This routine's name */ FILE *cachefd; /*Descriptor for cache info file */ @@ -588,7 +591,7 @@ int ParseCacheInfoFile(void) tmd, tbd, tCacheBlocks); } if (!(cacheFlags & AFSCALL_INIT_MEMCACHE)) { - return(PartSizeOverflow(tbd, cacheBlocks)); + return (PartSizeOverflow(tbd, cacheBlocks)); } return (0); @@ -604,7 +607,8 @@ int ParseCacheInfoFile(void) * 0 if everything went well, * 1 otherwise. */ -int PartSizeOverflow(char *path, int cs) +int +PartSizeOverflow(char *path, int cs) { int bsize = -1, totalblks, mint; #if AFS_HAVE_STATVFS @@ -620,10 +624,10 @@ int PartSizeOverflow(char *path, int cs) totalblks = statbuf.f_blocks; bsize = statbuf.f_frsize; #if AFS_AIX51_ENV - if(strcmp(statbuf.f_basetype, "jfs")) { - fprintf(stderr, "Cache filesystem '%s' must be jfs (now %s)\n", - path, statbuf.f_basetype); - return 1; + if (strcmp(statbuf.f_basetype, "jfs")) { + fprintf(stderr, "Cache filesystem '%s' must be jfs (now %s)\n", + path, statbuf.f_basetype); + return 1; } #endif /* AFS_AIX51_ENV */ @@ -655,7 +659,7 @@ int PartSizeOverflow(char *path, int cs) printf ("Cache size (%d) must be less than 95%% of partition size (which is %d). Lower cache size\n", cs, mint); - return 1; + return 1; } return 0; @@ -1261,7 +1265,7 @@ CheckCacheBaseDir(char *dir) } if (statfsbuf.f_type == 0x52654973) { /* REISERFS_SUPER_MAGIC */ return "cannot use reiserfs as cache partition"; - } else if (statfsbuf.f_type == 0x58465342) { /* XFS_SUPER_MAGIC */ + } else if (statfsbuf.f_type == 0x58465342) { /* XFS_SUPER_MAGIC */ return "cannot use xfs as cache partition"; } else if (statfsbuf.f_type == 0x01021994) { /* TMPFS_SUPER_MAGIC */ return "cannot use tmpfs as cache partition"; @@ -1603,7 +1607,8 @@ mainproc(struct cmd_syndesc *as, void *arock) /* -chunksize */ chunkSize = atoi(as->parms[12].items->data); if (chunkSize < 0 || chunkSize > 30) { - printf("afsd:invalid chunk size (not in range 0-30), using default\n"); + printf + ("afsd:invalid chunk size (not in range 0-30), using default\n"); chunkSize = 0; } } @@ -1720,22 +1725,37 @@ mainproc(struct cmd_syndesc *as, void *arock) enable_rxbind = 1; } if (as->parms[32].items) { - /* -settime */ - cacheSetTime = TRUE; + /* -settime */ + cacheSetTime = TRUE; } /* set rx_extraPackets */ if (as->parms[33].items) { /* -rxpck */ int rxpck = atoi(as->parms[33].items->data); - printf("afsd: set rxpck = %d\n",rxpck); + printf("afsd: set rxpck = %d\n", rxpck); code = call_syscall(AFSOP_SET_RXPCK, rxpck); if (code) { - printf("afsd: failed to set rxpck\n"); - exit(1); + printf("afsd: failed to set rxpck\n"); + exit(1); + } + } + if (as->parms[34].items) { + char *c; + if (!as->parms[34].items->data || + ((c = strchr(as->parms[34].items->data, '/')) == NULL)) + printf + ("ignoring splitcache (specify as RW/RO percentages: 60/40)\n"); + else { + ropct = atoi((char *)c + 1); + *c = '\0'; + rwpct = atoi((char *)as->parms[30].items->data); + if ((rwpct != 0) && (ropct != 0) && (ropct + rwpct == 100)) { + /* -splitcache */ + enable_splitcache = 1; + } } } - /* * Pull out all the configuration info for the workstation's AFS cache and * the cellular community we're willing to let our users see. @@ -1937,9 +1957,10 @@ mainproc(struct cmd_syndesc *as, void *arock) sprintf(fullpn_VFile, "%s/", cacheBaseDir); vFilePtr = fullpn_VFile + strlen(fullpn_VFile); - if (!(cacheFlags & AFSCALL_INIT_MEMCACHE) && (fsTypeMsg = CheckCacheBaseDir(cacheBaseDir))) { + if (!(cacheFlags & AFSCALL_INIT_MEMCACHE) + && (fsTypeMsg = CheckCacheBaseDir(cacheBaseDir))) { #ifdef AFS_SUN5_ENV - printf("%s: WARNING: Cache dir check failed (%s)\n", rn, fsTypeMsg); + printf("%s: WARNING: Cache dir check failed (%s)\n", rn, fsTypeMsg); #else printf("%s: ERROR: Cache dir check failed (%s)\n", rn, fsTypeMsg); exit(1); @@ -2041,7 +2062,7 @@ mainproc(struct cmd_syndesc *as, void *arock) */ if (daemon(0, 0) == -1) { printf("Error starting AFSDB lookup handler: %s\n", - strerror(errno)); + strerror(errno)); exit(1); } AfsdbLookupHandler(); @@ -2077,6 +2098,13 @@ mainproc(struct cmd_syndesc *as, void *arock) cparams.inodes = inodes; #endif call_syscall(AFSOP_CACHEINIT, &cparams); + + /* do it before we init the cache inodes */ + if (enable_splitcache) { + call_syscall(AFSOP_BUCKETPCT, 1, rwpct); + call_syscall(AFSOP_BUCKETPCT, 2, ropct); + } + if (afsd_CloseSynch) call_syscall(AFSOP_CLOSEWAIT); @@ -2255,7 +2283,7 @@ mainproc(struct cmd_syndesc *as, void *arock) printf("%s: Calling AFSOP_VOLUMEINFO: volume info file is '%s'\n", rn, fullpn_VolInfoFile); /* once again, meaningless for a memory-based cache. */ - if (!(cacheFlags & AFSCALL_INIT_MEMCACHE)) + if (!(cacheFlags & AFSCALL_INIT_MEMCACHE)) call_syscall(AFSOP_VOLUMEINFO, fullpn_VolInfoFile); #ifndef AFS_CACHE_VNODE_PATH @@ -2335,7 +2363,8 @@ mainproc(struct cmd_syndesc *as, void *arock) if ((mount("AFS", cacheMountDir, mountFlags, "afs", NULL, 0)) < 0) { #elif defined(AFS_SGI_ENV) mountFlags = MS_FSS; - if ((mount(MOUNT_AFS, cacheMountDir, mountFlags, (caddr_t) MOUNT_AFS)) < 0) { + if ((mount(MOUNT_AFS, cacheMountDir, mountFlags, (caddr_t) MOUNT_AFS)) + < 0) { #elif defined(AFS_LINUX20_ENV) if ((mount("AFS", cacheMountDir, MOUNT_AFS, 0, NULL)) < 0) { #else @@ -2441,10 +2470,14 @@ main(int argc, char **argv) cmd_AddParm(ts, "-nomount", CMD_FLAG, CMD_OPTIONAL, "Do not mount AFS"); cmd_AddParm(ts, "-backuptree", CMD_FLAG, CMD_OPTIONAL, "Prefer backup volumes for mointpoints in backup volumes"); - cmd_AddParm(ts, "-rxbind", CMD_FLAG, CMD_OPTIONAL, "Bind the Rx socket (one interface only)"); - cmd_AddParm(ts, "-settime", CMD_FLAG, CMD_OPTIONAL, - "set the time"); - cmd_AddParm(ts, "-rxpck", CMD_SINGLE, CMD_OPTIONAL, "set rx_extraPackets to this value"); + cmd_AddParm(ts, "-rxbind", CMD_FLAG, CMD_OPTIONAL, + "Bind the Rx socket (one interface only)"); + cmd_AddParm(ts, "-settime", CMD_FLAG, CMD_OPTIONAL, "set the time"); + cmd_AddParm(ts, "-rxpck", CMD_SINGLE, CMD_OPTIONAL, + "set rx_extraPackets to this value"); + cmd_AddParm(ts, "-splitcache", CMD_SINGLE, CMD_OPTIONAL, + "Percentage RW versus RO in cache (specify as 60/40)"); + return (cmd_Dispatch(argc, argv)); } @@ -2547,9 +2580,9 @@ call_syscall(param1, param2, param3, param4, param5, param6, param7) #ifdef AFS_LINUX20_ENV long eparm[4]; struct afsprocdata syscall_data; - int fd = open(PROC_SYSCALL_FNAME,O_RDWR); + int fd = open(PROC_SYSCALL_FNAME, O_RDWR); if (fd < 0) - fd = open(PROC_SYSCALL_ARLA_FNAME,O_RDWR); + fd = open(PROC_SYSCALL_ARLA_FNAME, O_RDWR); eparm[0] = param4; eparm[1] = param5; eparm[2] = param6; @@ -2562,11 +2595,10 @@ call_syscall(param1, param2, param3, param4, param5, param6, param7) syscall_data.param2 = param2; syscall_data.param3 = param3; syscall_data.param4 = param4; - if(fd > 0) { - error = ioctl(fd, VIOC_SYSCALL, &syscall_data); - close(fd); - } - else + if (fd > 0) { + error = ioctl(fd, VIOC_SYSCALL, &syscall_data); + close(fd); + } else #endif #ifdef AFS_DARWIN80_ENV struct afssysargs syscall_data; @@ -2592,7 +2624,7 @@ call_syscall(param1, param2, param3, param4, param5, param6, param7) param5, param6, param7); #endif - if (afsd_verbose) + if (afsd_debug) printf("SScall(%d, %d, %d)=%d ", AFS_SYSCALL, AFSCALL_CALL, param1, error); return (error); diff --git a/src/afsd/vsys.c b/src/afsd/vsys.c index c28b605f9..d7213be4b 100644 --- a/src/afsd/vsys.c +++ b/src/afsd/vsys.c @@ -18,7 +18,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/afsd/vsys.c,v 1.6.2.1 2007/10/30 15:23:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsd/vsys.c,v 1.6.14.1 2007/10/30 15:16:33 shadow Exp $"); #include diff --git a/src/afsmonitor/afsmon-output.c b/src/afsmonitor/afsmon-output.c index 5f8824dda..e00eb2325 100644 --- a/src/afsmonitor/afsmon-output.c +++ b/src/afsmonitor/afsmon-output.c @@ -22,7 +22,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afsmonitor/afsmon-output.c,v 1.9.2.1 2007/10/30 15:23:49 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsmonitor/afsmon-output.c,v 1.10.2.1 2007/10/30 15:16:36 shadow Exp $"); #include #include @@ -382,7 +382,7 @@ Print_fs_FullPerfInfo(a_fs_Results) afs_int32 numLongs; /*# longwords received */ struct fs_stats_FullPerfStats *fullPerfP; /*Ptr to full perf stats */ char *printableTime; /*Ptr to printable time string */ - + time_t probeTime; numLongs = a_fs_Results->data.AFS_CollData_len; if (numLongs != fullPerfLongs) { @@ -393,7 +393,8 @@ Print_fs_FullPerfInfo(a_fs_Results) return; } - printableTime = ctime((time_t *) & (a_fs_Results->probeTime)); + probeTime = a_fs_Results->probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullPerfP = (struct fs_stats_FullPerfStats *) (a_fs_Results->data.AFS_CollData_val); @@ -442,6 +443,7 @@ afsmon_fsOutput(a_outfile, a_detOutput) afs_int32 numLongs; /* longwords in result */ afs_int32 *currLong; /* ptr to longwords in result */ int i; + time_t probeTime; if (afsmon_debug) { fprintf(debugFD, "[ %s ] Called, a_outfile= %s, a_detOutput= %d\n", @@ -457,7 +459,8 @@ afsmon_fsOutput(a_outfile, a_detOutput) } /* get the probe time and strip the \n at the end */ - printTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + probeTime = xstat_fs_Results.probeTime; + printTime = ctime(&probeTime); printTime[strlen(printTime) - 1] = '\0'; hostname = xstat_fs_Results.connP->hostName; @@ -702,6 +705,7 @@ Print_cm_PerfInfo() afs_int32 numLongs; /*# longwords received */ struct afs_stats_CMPerf *perfP; /*Ptr to performance stats */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime; numLongs = xstat_cm_Results.data.AFSCB_CollData_len; if (numLongs != perfLongs) { @@ -711,7 +715,8 @@ Print_cm_PerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + probeTime = xstat_cm_Results.probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; perfP = (struct afs_stats_CMPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); @@ -928,7 +933,7 @@ Print_cm_FullPerfInfo() static afs_int32 fullPerfLongs = (sizeof(struct afs_stats_CMFullPerf) >> 2); /*Correct #longs */ afs_int32 numLongs; /*# longs actually received */ struct afs_stats_CMFullPerf *fullP; /*Ptr to full perf info */ - + time_t probeTime; char *printableTime; /*Ptr to printable time string */ numLongs = xstat_cm_Results.data.AFSCB_CollData_len; @@ -940,7 +945,8 @@ Print_cm_FullPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + probeTime = xstat_cm_Results.probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullP = (struct afs_stats_CMFullPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); @@ -1022,6 +1028,7 @@ afsmon_cmOutput(a_outfile, a_detOutput) afs_int32 numLongs; /* longwords in result */ afs_int32 *currLong; /* ptr to longwords in result */ int i; + time_t probeTime; if (afsmon_debug) { fprintf(debugFD, "[ %s ] Called, a_outfile= %s, a_detOutput= %d\n", @@ -1038,7 +1045,8 @@ afsmon_cmOutput(a_outfile, a_detOutput) } /* get the probe time and strip the \n at the end */ - printTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + probeTime = xstat_cm_Results.probeTime; + printTime = ctime(&probeTime); printTime[strlen(printTime) - 1] = '\0'; hostname = xstat_cm_Results.connP->hostName; diff --git a/src/afsmonitor/afsmon-parselog.c b/src/afsmonitor/afsmon-parselog.c index c0a219b16..121f6c107 100644 --- a/src/afsmonitor/afsmon-parselog.c +++ b/src/afsmonitor/afsmon-parselog.c @@ -22,7 +22,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afsmonitor/afsmon-parselog.c,v 1.5 2003/07/15 23:14:32 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsmonitor/afsmon-parselog.c,v 1.6 2006/04/04 20:51:13 shadow Exp $"); #include #include @@ -320,7 +320,7 @@ Print_fs_FullPerfInfo(a_fs_Results) long numLongs; /*# longwords received */ struct fs_stats_FullPerfStats *fullPerfP; /*Ptr to full perf stats */ char *printableTime; /*Ptr to printable time string */ - + time_t probeTime; numLongs = a_fs_Results->data.AFS_CollData_len; if (numLongs != fullPerfLongs) { @@ -329,7 +329,8 @@ Print_fs_FullPerfInfo(a_fs_Results) return; } - printableTime = ctime(&(a_fs_Results->probeTime)); + probeTime = a_fs_Results->probeTime; + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullPerfP = (struct fs_stats_FullPerfStats *) (a_fs_Results->data.AFS_CollData_val); diff --git a/src/afsmonitor/afsmon-win.c b/src/afsmonitor/afsmon-win.c index 69d58894c..c0528cef3 100644 --- a/src/afsmonitor/afsmon-win.c +++ b/src/afsmonitor/afsmon-win.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afsmonitor/afsmon-win.c,v 1.10.2.2 2007/11/26 21:21:48 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsmonitor/afsmon-win.c,v 1.10.14.2 2007/11/26 21:08:40 shadow Exp $"); #include #include @@ -1580,7 +1580,7 @@ display_Server_label(a_srcBuf, a_firstObj_o, a_secondObj_o, a_thirdObj_o) } } } - return 0; + } /* display_Server_label */ diff --git a/src/afsmonitor/afsmonitor.c b/src/afsmonitor/afsmonitor.c index 0e5e46d01..1745cb6f5 100644 --- a/src/afsmonitor/afsmonitor.c +++ b/src/afsmonitor/afsmonitor.c @@ -19,7 +19,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afsmonitor/afsmonitor.c,v 1.18.2.4 2007/10/31 04:13:32 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsmonitor/afsmonitor.c,v 1.21.2.1 2007/10/31 04:09:22 shadow Exp $"); #include #include diff --git a/src/afsweb/apache_afs_weblog.c b/src/afsweb/apache_afs_weblog.c index 8468e05f3..491ea7fe4 100644 --- a/src/afsweb/apache_afs_weblog.c +++ b/src/afsweb/apache_afs_weblog.c @@ -91,7 +91,7 @@ get_time() char *time_string; t = time(NULL); - time_string = (char *)ctime((time_t *) & t); + time_string = (char *)ctime(&t); time_string[strlen(time_string) - 1] = '\0'; return (time_string); } diff --git a/src/afsweb/weblog.c b/src/afsweb/weblog.c index 9c78c233c..2fb194b34 100644 --- a/src/afsweb/weblog.c +++ b/src/afsweb/weblog.c @@ -25,7 +25,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/afsweb/weblog.c,v 1.8.2.2 2007/10/31 04:13:33 shadow Exp $"); + ("$Header: /cvs/openafs/src/afsweb/weblog.c,v 1.8.14.2 2007/10/31 04:09:22 shadow Exp $"); #include #include diff --git a/src/aklog/.cvsignore b/src/aklog/.cvsignore index 51469b193..a62597e09 100644 --- a/src/aklog/.cvsignore +++ b/src/aklog/.cvsignore @@ -1,4 +1,3 @@ Makefile aklog asetkey -klog diff --git a/src/aklog/Makefile.in b/src/aklog/Makefile.in index e799373f8..4a778db98 100644 --- a/src/aklog/Makefile.in +++ b/src/aklog/Makefile.in @@ -32,20 +32,28 @@ klog: klog.o skipwrap.o ${AFSLIBS} # Installation targets # install: \ - ${DESTDIR}${bindir}/aklog ${DESTDIR}${afssrvbindir}/asetkey + ${DESTDIR}${bindir}/aklog ${DESTDIR}${bindir}/klog.krb5 \ + ${DESTDIR}${afssrvbindir}/asetkey ${DESTDIR}${bindir}/aklog: aklog ${INSTALL} $? $@ +${DESTDIR}${bindir}/klog.krb5: klog + ${INSTALL} -f $? $@ + ${DESTDIR}${afssrvbindir}/asetkey: asetkey ${INSTALL} $? $@ dest: \ - ${DEST}/bin/aklog ${DEST}/root.server/usr/afs/bin/asetkey + ${DEST}/bin/aklog ${DEST}/bin/klog.krb5 \ + ${DEST}/root.server/usr/afs/bin/asetkey ${DEST}/bin/aklog: aklog ${INSTALL} $? $@ +${DEST}/bin/klog.krb5: klog + ${INSTALL} -f $? $@ + ${DEST}/root.server/usr/afs/bin/asetkey: asetkey ${INSTALL} $? $@ diff --git a/src/aklog/aklog.c b/src/aklog/aklog.c index 3e58f6a6e..70273bd97 100644 --- a/src/aklog/aklog.c +++ b/src/aklog/aklog.c @@ -1,12 +1,12 @@ /* - * $Id: aklog.c,v 1.1.2.6 2008/04/01 17:44:52 shadow Exp $ + * $Id: aklog.c,v 1.5.4.1 2008/04/01 17:44:40 shadow Exp $ * * Copyright 1990,1991 by the Massachusetts Institute of Technology * For distribution and copying rights, see the file "mit-copyright.h" */ #if !defined(lint) && !defined(SABER) -static char *rcsid = "$Id: aklog.c,v 1.1.2.6 2008/04/01 17:44:52 shadow Exp $"; +static char *rcsid = "$Id: aklog.c,v 1.5.4.1 2008/04/01 17:44:40 shadow Exp $"; #endif /* lint || SABER */ #include diff --git a/src/aklog/aklog.h b/src/aklog/aklog.h index e46c9b8b0..09c8f9948 100644 --- a/src/aklog/aklog.h +++ b/src/aklog/aklog.h @@ -1,5 +1,5 @@ /* - * $Id: aklog.h,v 1.1.2.7 2008/04/01 17:44:52 shadow Exp $ + * $Id: aklog.h,v 1.5.2.2 2008/04/01 17:44:40 shadow Exp $ * * Copyright 1990,1991 by the Massachusetts Institute of Technology * For distribution and copying rights, see the file "mit-copyright.h" diff --git a/src/aklog/aklog_main.c b/src/aklog/aklog_main.c index ed8503f3f..fcbe3ac7b 100644 --- a/src/aklog/aklog_main.c +++ b/src/aklog/aklog_main.c @@ -1,5 +1,5 @@ /* - * $Id: aklog_main.c,v 1.1.2.26 2008/04/01 18:15:53 shadow Exp $ + * $Id: aklog_main.c,v 1.12.2.15 2008/04/01 18:15:40 shadow Exp $ * * Copyright 1990,1991 by the Massachusetts Institute of Technology * For distribution and copying rights, see the file "mit-copyright.h" @@ -36,7 +36,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/aklog/aklog_main.c,v 1.1.2.26 2008/04/01 18:15:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/aklog/aklog_main.c,v 1.12.2.15 2008/04/01 18:15:40 shadow Exp $"); #include #include #include diff --git a/src/aklog/asetkey.c b/src/aklog/asetkey.c index 47e96f7d6..e50fe66c2 100644 --- a/src/aklog/asetkey.c +++ b/src/aklog/asetkey.c @@ -1,5 +1,5 @@ /* - * $Id: asetkey.c,v 1.4.2.10 2008/04/01 17:44:52 shadow Exp $ + * $Id: asetkey.c,v 1.4.4.5 2008/04/01 17:44:40 shadow Exp $ * * asetkey - Manipulates an AFS KeyFile * @@ -7,10 +7,10 @@ */ #include +#include #include #include #include -#include #ifdef HAVE_UNISTD_H #include #endif @@ -23,9 +23,7 @@ #include #include -#ifndef HAVE_KERBEROSV_HEIM_ERR_H #include -#endif #include #include #include diff --git a/src/aklog/krb_util.c b/src/aklog/krb_util.c index 559d51a36..1ce419dc2 100644 --- a/src/aklog/krb_util.c +++ b/src/aklog/krb_util.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/aklog/krb_util.c,v 1.1.2.6 2008/04/01 17:44:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/aklog/krb_util.c,v 1.4.4.2 2008/04/01 17:44:41 shadow Exp $"); #if 0 #include diff --git a/src/aklog/linked_list.c b/src/aklog/linked_list.c index d5f4ecf0f..73c13c295 100644 --- a/src/aklog/linked_list.c +++ b/src/aklog/linked_list.c @@ -1,5 +1,5 @@ /* - * $Id: linked_list.c,v 1.1.2.3 2008/04/01 17:44:52 shadow Exp $ + * $Id: linked_list.c,v 1.2.4.1 2008/04/01 17:44:41 shadow Exp $ * * This file contains general linked list routines. * @@ -9,7 +9,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/aklog/linked_list.c,v 1.1.2.3 2008/04/01 17:44:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/aklog/linked_list.c,v 1.2.4.1 2008/04/01 17:44:41 shadow Exp $"); #include #include diff --git a/src/aklog/linked_list.h b/src/aklog/linked_list.h index 9030ba4a5..babccc505 100644 --- a/src/aklog/linked_list.h +++ b/src/aklog/linked_list.h @@ -1,5 +1,5 @@ /* - * $Id: linked_list.h,v 1.1.2.2 2008/04/01 17:44:52 shadow Exp $ + * $Id: linked_list.h,v 1.1.10.1 2008/04/01 17:44:41 shadow Exp $ * * This is the header file for a general list linked package. * diff --git a/src/audit/audit.c b/src/audit/audit.c index f0f76dfbf..c84275232 100644 --- a/src/audit/audit.c +++ b/src/audit/audit.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/audit/audit.c,v 1.8.2.12 2006/10/13 19:42:19 shadow Exp $"); + ("$Header: /cvs/openafs/src/audit/audit.c,v 1.20.2.5 2007/01/05 23:06:55 shadow Exp $"); #include #include @@ -447,12 +447,43 @@ osi_auditU(struct rx_call *call, char *audEvent, int errCode, ...) } if ((clen = strlen(tcell))) { #if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) - static char local_realm[AFS_REALM_SZ] = ""; - if (!local_realm[0]) { - if (afs_krb_get_lrealm(local_realm, 0) != 0 /*KSUCCESS*/) - strncpy(local_realm, "UNKNOWN.LOCAL.REALM", AFS_REALM_SZ); + static char local_realms[AFS_NUM_LREALMS][AFS_REALM_SZ]; + static int num_lrealms = -1; + int i, lrealm_match; + + if (num_lrealms == -1) { + for (i=0; i= sizeof(vname)) goto done; strcat(vname, "@"); diff --git a/src/auth/Makefile.in b/src/auth/Makefile.in index d9414db43..b5091f850 100644 --- a/src/auth/Makefile.in +++ b/src/auth/Makefile.in @@ -94,9 +94,8 @@ test: cd test; $(MAKE) clean: - $(RM) -f *.o *.a \ - copyauth setkey auth.h cellconfig.h acfg_errors.c \ - ktc_errors.c core AFS_component_version_number.c + $(RM) -f *.o *.a copyauth setkey auth.h cellconfig.h acfg_errors.c ktc_errors.c core \ + AFS_component_version_number.c include ../config/Makefile.version @@ -161,9 +160,6 @@ ${DESTDIR}${sbindir}/copyauth: copyauth ${DEST}/etc/copyauth: copyauth ${INSTALL} $? $@ - - - dest: \ ${DEST}/lib/afs/libauth.a \ ${DEST}/lib/afs/libauth.krb.a \ @@ -172,4 +168,3 @@ dest: \ ${DEST}/include/afs/auth.h \ ${DEST}/include/afs/ktc.h \ ${DEST}/etc/copyauth - diff --git a/src/auth/NTMakefile b/src/auth/NTMakefile index ffe76d99c..532e92350 100644 --- a/src/auth/NTMakefile +++ b/src/auth/NTMakefile @@ -8,6 +8,7 @@ RELDIR=auth !INCLUDE ..\config\NTMakefile.$(SYS_NAME) !INCLUDE ..\config\NTMakefile.version +AFSDEV_AUXCDEFINES = -DAFS_AFSDB_ENV INCFILEDIR = $(DESTDIR)\include\afs # header file install directory @@ -80,12 +81,15 @@ EXELIBS =\ $(EXELIBDIR)\afs\afsutil.lib \ $(EXELIBDIR)\afs\afseventlog.lib \ $(EXELIBDIR)\afs\afsreg.lib \ - $(EXELIBDIR)\cm_dns.obj + $(EXELIBDIR)\cm_dns.obj \ + $(EXELIBDIR)\cm_nls.obj $(SETKEY_EXEFILE): $(SETKEY_EXEOBJS) $(EXELIBS) - $(EXECONLINK) dnsapi.lib + $(EXECONLINK) dnsapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) # build copyauth COPYAUTH_EXEFILE = $(DESTDIR)\etc\copyauth.exe @@ -95,7 +99,9 @@ COPYAUTH_EXEOBJS =\ $(COPYAUTH_EXEFILE): $(COPYAUTH_EXEOBJS) $(EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) $(INCFILES):$$(@F) $(COPY) $** $(INCFILEDIR)\. diff --git a/src/auth/auth.p.h b/src/auth/auth.p.h index 0a9d93257..3d990ad76 100644 --- a/src/auth/auth.p.h +++ b/src/auth/auth.p.h @@ -24,19 +24,15 @@ struct ktc_token { char ticket[MAXKTCTICKETLEN]; }; -#ifdef AFS_NT40_ENV -extern int ktc_SetToken(struct ktc_principal *server, struct ktc_token *token, - struct ktc_principal *client, afs_int32 flags); - -extern int ktc_GetToken(struct ktc_principal *server, struct ktc_token *token, - int tokenLen, struct ktc_principal *client); - -extern int ktc_ListTokens(int cellNum, int *cellNumP, - struct ktc_principal *serverName); +int ktc_SetToken(struct ktc_principal *, struct ktc_token *, + struct ktc_principal *, afs_int32); +int ktc_GetToken(struct ktc_principal *, struct ktc_token *, + int, struct ktc_principal *); +int ktc_ListTokens(int, int *, struct ktc_principal *); +int ktc_ForgetToken(struct ktc_principal *); +int ktc_ForgetAllTokens(void); -extern int ktc_ForgetToken(struct ktc_principal *server); - -extern int ktc_ForgetAllTokens(void); +#ifdef AFS_NT40_ENV /* Flags for the flag word sent along with a token */ #define PIOCTL_LOGON 0x1 /* invoked from integrated logon */ diff --git a/src/auth/authcon.c b/src/auth/authcon.c index 364508b0a..9f9667b42 100644 --- a/src/auth/authcon.c +++ b/src/auth/authcon.c @@ -15,7 +15,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/auth/authcon.c,v 1.13.2.3 2007/11/01 16:09:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/authcon.c,v 1.14.8.2 2007/11/01 16:09:32 shadow Exp $"); #if defined(UKERNEL) #include "afs/sysincludes.h" diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index 0207acfff..75ff415cf 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/auth/cellconfig.c,v 1.40.2.19 2007/11/02 18:26:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/cellconfig.c,v 1.47.2.15 2008/06/26 16:48:30 jaltman Exp $"); #include #include @@ -62,6 +62,7 @@ RCSID #ifdef AFS_NT40_ENV #ifdef AFS_AFSDB_ENV /* cm_dns.h depends on cellconfig.h */ +#include #include #endif /* AFS_AFSDB_ENV */ #endif @@ -326,7 +327,7 @@ afsconf_Check(register struct afsconf_dir *adir) } else { int len; strncpy(tbuffer, adir->name, sizeof(tbuffer)); - len = strlen(tbuffer); + len = (int)strlen(tbuffer); if (tbuffer[len - 1] != '\\' && tbuffer[len - 1] != '/') { strncat(tbuffer, "\\", sizeof(tbuffer)); } @@ -376,7 +377,7 @@ afsconf_Touch(register struct afsconf_dir *adir) AFSDIR_CELLSERVDB_FILE_NTCLIENT, NULL); free(p); } else { - int len = strlen(tbuffer); + int len = (int)strlen(tbuffer); if (tbuffer[len - 1] != '\\' && tbuffer[len - 1] != '/') { strncat(tbuffer, "\\", sizeof(tbuffer)); } @@ -537,7 +538,7 @@ afsconf_OpenInternal(register struct afsconf_dir *adir, char *cell, char tbuffer[256], tbuf1[256]; struct stat tstat; - /* figure out the cell name */ + /* figure out the local cell name */ #ifdef AFS_NT40_ENV i = GetCellNT(adir); #else @@ -567,7 +568,7 @@ afsconf_OpenInternal(register struct afsconf_dir *adir, char *cell, } else { int len; strncpy(tbuffer, adir->name, sizeof(tbuffer)); - len = strlen(tbuffer); + len = (int)strlen(tbuffer); if (tbuffer[len - 1] != '\\' && tbuffer[len - 1] != '/') { strncat(tbuffer, "\\", sizeof(tbuffer)); } @@ -1043,7 +1044,7 @@ afsconf_GetCellInfo(struct afsconf_dir *adir, char *acellName, char *aservice, register afs_int32 i; int tservice; char *tcell; - size_t cnLen; + int cnLen; int ambig; char tbuffer[64]; @@ -1052,7 +1053,7 @@ afsconf_GetCellInfo(struct afsconf_dir *adir, char *acellName, char *aservice, afsconf_Check(adir); if (acellName) { tcell = acellName; - cnLen = strlen(tcell) + 1; + cnLen = (int)(strlen(tcell) + 1); lcstring(tcell, tcell, cnLen); afsconf_SawCell = 1; /* will ignore the AFSCELL switch on future */ /* call to afsconf_GetLocalCell: like klog */ diff --git a/src/auth/copyauth.c b/src/auth/copyauth.c index 2f8abdc15..5c773199e 100644 --- a/src/auth/copyauth.c +++ b/src/auth/copyauth.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/auth/copyauth.c,v 1.6.2.2 2007/11/01 16:09:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/copyauth.c,v 1.6.14.2 2007/11/01 16:09:32 shadow Exp $"); #include #include diff --git a/src/auth/ktc.c b/src/auth/ktc.c index 145f6c04e..0a57cd43f 100644 --- a/src/auth/ktc.c +++ b/src/auth/ktc.c @@ -17,7 +17,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/auth/ktc.c,v 1.15.2.10 2007/12/13 18:54:09 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/ktc.c,v 1.16.8.9 2007/12/13 18:53:52 shadow Exp $"); #if defined(UKERNEL) #include "afs/sysincludes.h" diff --git a/src/auth/ktc_nt.c b/src/auth/ktc_nt.c index f610b9c34..4d2c4cf1e 100644 --- a/src/auth/ktc_nt.c +++ b/src/auth/ktc_nt.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/auth/ktc_nt.c,v 1.17.2.1 2004/08/25 07:09:36 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/ktc_nt.c,v 1.20 2005/11/14 05:46:23 jaltman Exp $"); #include #include @@ -271,7 +271,7 @@ ktc_SetToken(struct ktc_principal *server, struct ktc_token *token, /* ticket length */ memcpy(tp, &token->ticketLen, sizeof(token->ticketLen)); - tp += sizeof(&token->ticketLen); + tp += sizeof(token->ticketLen); /* ticket */ memcpy(tp, token->ticket, token->ticketLen); @@ -317,14 +317,14 @@ ktc_SetToken(struct ktc_principal *server, struct ktc_token *token, tp += sizeof(temp); /* cell name */ - temp = strlen(server->cell); + temp = (int)strlen(server->cell); if (temp >= MAXKTCREALMLEN) return KTC_INVAL; strcpy(tp, server->cell); tp += temp + 1; /* user name */ - temp = strlen(client->name); + temp = (int)strlen(client->name); if (temp >= MAXKTCNAMELEN) return KTC_INVAL; strcpy(tp, client->name); @@ -336,7 +336,7 @@ ktc_SetToken(struct ktc_principal *server, struct ktc_token *token, if (client->smbname == NULL) temp = 0; else - temp = strlen(client->smbname); + temp = (int)strlen(client->smbname); if (temp == 0 || temp >= MAXKTCNAMELEN) return KTC_INVAL; strcpy(tp, client->smbname); @@ -382,7 +382,7 @@ ktc_SetToken(struct ktc_principal *server, struct ktc_token *token, /* set up for pioctl */ iob.in = tbuffer; - iob.in_size = tp - tbuffer; + iob.in_size = (long)(tp - tbuffer); iob.out = tbuffer; iob.out_size = sizeof(tbuffer); @@ -447,7 +447,7 @@ ktc_GetToken(struct ktc_principal *server, struct ktc_token *token, tp += sizeof(uuid); iob.in = tbuffer; - iob.in_size = tp - tbuffer; + iob.in_size = (long)(tp - tbuffer); iob.out = tbuffer; iob.out_size = sizeof(tbuffer); @@ -529,7 +529,7 @@ ktc_GetToken(struct ktc_principal *server, struct ktc_token *token, /* remember cell name and skip over it */ cellName = cp; - cellNameSize = strlen(cp); + cellNameSize = (int)strlen(cp); cp += cellNameSize + 1; /* user name is here */ @@ -596,7 +596,7 @@ ktc_ListTokens(int cellNum, int *cellNumP, struct ktc_principal *server) /* do pioctl */ iob.in = tbuffer; - iob.in_size = tp - tbuffer; + iob.in_size = (long)(tp - tbuffer); iob.out = tbuffer; iob.out_size = sizeof(tbuffer); @@ -691,7 +691,7 @@ ktc_ForgetToken(struct ktc_principal *server) /* do pioctl */ iob.in = tbuffer; - iob.in_size = tp - tbuffer; + iob.in_size = (long)(tp - tbuffer); iob.out = tbuffer; iob.out_size = sizeof(tbuffer); diff --git a/src/auth/setkey.c b/src/auth/setkey.c index c75360a5d..84db67d2c 100644 --- a/src/auth/setkey.c +++ b/src/auth/setkey.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/auth/setkey.c,v 1.8.2.2 2007/11/01 16:09:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/setkey.c,v 1.8.14.2 2007/11/01 16:09:32 shadow Exp $"); #include #include diff --git a/src/auth/test/NTMakefile b/src/auth/test/NTMakefile index da9938b82..59ba59b4c 100644 --- a/src/auth/test/NTMakefile +++ b/src/auth/test/NTMakefile @@ -24,7 +24,9 @@ CELL_EXELIBS =\ $(CELL_EXEFILE): $(CELL_EXEOBJS) $(CELL_EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) ############################################################################ KTC_EXEFILE = $(OUT)\ktctest.exe @@ -40,7 +42,9 @@ KTC_EXELIBS =\ $(KTC_EXEFILE): $(KTC_EXEOBJS) $(KTC_EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) test tests: $(CELL_EXEFILE) $(KTC_EXEFILE) diff --git a/src/auth/test/testcellconf.c b/src/auth/test/testcellconf.c index ee00119c1..b602f1ce0 100644 --- a/src/auth/test/testcellconf.c +++ b/src/auth/test/testcellconf.c @@ -26,7 +26,7 @@ Creation date: #include RCSID - ("$Header: /cvs/openafs/src/auth/test/testcellconf.c,v 1.7.2.1 2007/10/31 22:32:18 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/test/testcellconf.c,v 1.7.14.1 2007/10/31 22:31:59 shadow Exp $"); #include #include diff --git a/src/auth/userok.c b/src/auth/userok.c index 7ecb9bad2..a19c4a40b 100644 --- a/src/auth/userok.c +++ b/src/auth/userok.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/auth/userok.c,v 1.12.2.3 2008/02/29 04:46:20 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/userok.c,v 1.14.4.3 2008/02/29 15:13:06 shadow Exp $"); #include #include @@ -382,7 +382,9 @@ afsconf_SuperUser(struct afsconf_dir *adir, struct rx_call *acall, char *namep) afs_uint32 exp; static char lcell[MAXCELLCHARS] = ""; - static char lrealm[AFS_REALM_SZ] = ""; + static char lrealms[AFS_NUM_LREALMS][AFS_REALM_SZ]; + static int num_lrealms = -1; + int lrealm_match = 0, i; /* get auth details from server connection */ code = @@ -419,11 +421,40 @@ afsconf_SuperUser(struct afsconf_dir *adir, struct rx_call *acall, char *namep) /* if running a krb environment, also get the local realm */ /* note - this assumes AFS_REALM_SZ <= MAXCELLCHARS */ /* just set it to lcell if it fails */ - if (!lrealm[0]) { - if (afs_krb_get_lrealm(lrealm, 0) != 0) /* KSUCCESS */ - strncpy(lrealm, lcell, AFS_REALM_SZ); + if (num_lrealms == -1) { + for (i=0; i"); flag = 1; - /* cell of connection matches local cell or krb4 realm */ - } else if (!strcasecmp(tcell, lcell) || !strcasecmp(tcell, lrealm)) { + /* cell of connection matches local cell or one of the realms */ + } else if (!strcasecmp(tcell, lcell) || lrealm_match) { if ((tmp = CompFindUser(adir, tname, ".", tinst, NULL))) { strcpy(uname, tmp); flag = 1; @@ -446,7 +477,6 @@ afsconf_SuperUser(struct afsconf_dir *adir, struct rx_call *acall, char *namep) flag = 1; #endif } - /* cell of conn doesn't match local cell or realm */ } else { if ((tmp = CompFindUser(adir, tname, ".", tinst, tcell))) { diff --git a/src/auth/writeconfig.c b/src/auth/writeconfig.c index 6f7276c47..8679c5dee 100644 --- a/src/auth/writeconfig.c +++ b/src/auth/writeconfig.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/auth/writeconfig.c,v 1.10.2.3 2007/11/01 16:09:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/auth/writeconfig.c,v 1.12.4.2 2007/11/01 16:09:32 shadow Exp $"); #include #include @@ -114,7 +114,7 @@ afsconf_SetExtendedCellInfo(struct afsconf_dir *adir, UNLOCK_GLOBAL_MUTEX; return errno; } - i = strlen(acellInfo->name); + i = (int)strlen(acellInfo->name); code = write(fd, acellInfo->name, i); if (code != i) { UNLOCK_GLOBAL_MUTEX; diff --git a/src/bozo/NTMakefile b/src/bozo/NTMakefile index 298050437..03c5167a1 100644 --- a/src/bozo/NTMakefile +++ b/src/bozo/NTMakefile @@ -67,12 +67,14 @@ BOSSERVER_EXELIBS =\ $(DESTDIR)\lib\afs\afsreg.lib \ $(DESTDIR)\lib\afs\afseventlog.lib \ $(DESTDIR)\lib\afs\afsprocmgmt.lib \ - $(DESTDIR)\lib\cm_dns.obj + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj $(BOSSERVER_EXEFILE): $(BOSSERVER_EXEOBJS) $(BOSSERVER_EXELIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) - + $(CODESIGN_USERLAND) ############################################################################ # Build bos.exe @@ -102,12 +104,15 @@ BOS_EXELIBS =\ $(DESTDIR)\lib\afs\afsreg.lib \ $(DESTDIR)\lib\afs\afsprocmgmt.lib \ $(DESTDIR)\lib\afs\afspioctl.lib \ - $(DESTDIR)\lib\cm_dns.obj + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj $(RS_BOS_EXEFILE): $(BOS_EXEOBJS) $(BOS_EXELIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) $(CL_BOS_EXEFILE): $(RS_BOS_EXEFILE) $(COPY) $** $@ diff --git a/src/bozo/bnode.c b/src/bozo/bnode.c index 20ae5641d..20c44ea8b 100644 --- a/src/bozo/bnode.c +++ b/src/bozo/bnode.c @@ -11,11 +11,12 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/bnode.c,v 1.17.2.8 2008/03/10 22:35:33 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/bnode.c,v 1.19.2.7 2008/06/30 20:29:29 rra Exp $"); #include #include #include +#include #include #include #ifdef AFS_NT40_ENV @@ -99,13 +100,45 @@ SaveCore(register struct bnode *abnode, register struct bnode_proc char tbuffer[256]; struct stat tstat; register afs_int32 code; + char *corefile = NULL; #ifdef BOZO_SAVE_CORES struct timeval Start; struct tm *TimeFields; char FileName[256]; #endif + /* Linux always appends the PID to core dumps from threaded processes, so + * we have to scan the directory to find core files under another name. */ code = stat(AFSDIR_SERVER_CORELOG_FILEPATH, &tstat); + if (code) { + DIR *logdir; + struct dirent *file; + char *p; + size_t length; + unsigned long pid; + + logdir = opendir(AFSDIR_LOGS_DIR); + if (logdir == NULL) + return; + while ((file = readdir(logdir)) != NULL) { + if (strncmp(file->d_name, "core.", 5) != 0) + continue; + pid = atol(file->d_name + 5); + if (pid == aproc->pid) { + length = strlen(AFSDIR_LOGS_DIR) + strlen(file->d_name) + 2; + corefile = malloc(length); + if (corefile == NULL) { + closedir(logdir); + return; + } + snprintf(corefile, length, "%s/%s", AFSDIR_LOGS_DIR, + file->d_name); + code = 0; + break; + } + } + closedir(logdir); + } if (code) return; @@ -118,7 +151,12 @@ SaveCore(register struct bnode *abnode, register struct bnode_proc TimeFields->tm_hour, TimeFields->tm_min, TimeFields->tm_sec); strcpy(tbuffer, FileName); #endif - code = renamefile(AFSDIR_SERVER_CORELOG_FILEPATH, tbuffer); + if (corefile == NULL) + code = renamefile(AFSDIR_SERVER_CORELOG_FILEPATH, tbuffer); + else { + code = renamefile(corefile, tbuffer); + free(corefile); + } } int diff --git a/src/bozo/bos.c b/src/bozo/bos.c index f0ec4c54d..54e3a4e72 100644 --- a/src/bozo/bos.c +++ b/src/bozo/bos.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/bos.c,v 1.20.2.4 2007/10/31 04:13:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/bos.c,v 1.23.2.3 2007/10/31 04:09:23 shadow Exp $"); #include #include @@ -39,7 +39,6 @@ RCSID #include #include #include -#include #include #include #include @@ -52,10 +51,12 @@ static DoStat(); #include "bosint.h" -#define MRAFS_OFFSET 9 -#define ADDPARMOFFSET 26 +/* command offsets for bos salvage command */ +#define MRAFS_OFFSET 10 +#define ADDPARMOFFSET 27 -static struct SalvageParms { +/* MR-AFS salvage parameters */ +struct MRAFSSalvageParms { afs_int32 Optdebug; afs_int32 Optnowrite; afs_int32 Optforce; @@ -74,7 +75,7 @@ static struct SalvageParms { afs_int32 OptLogLevel; afs_int32 OptRxDebug; afs_uint32 OptResidencies; -} mrafsParm; +}; /* dummy routine for the audit work. It should do nothing since audits */ /* occur at the server level and bos is not a server. */ @@ -1192,17 +1193,11 @@ StopServer(register struct cmd_syndesc *as, void *arock) #define PARMBUFFERSSIZE 32 -static -DoSalvage(aconn, aparm1, aparm2, aoutName, showlog, parallel, atmpDir, - orphans) - struct rx_connection *aconn; - char *aoutName; - char *aparm1; - char *aparm2; - afs_int32 showlog; - char *parallel; - char *atmpDir; - char *orphans; +static afs_int32 +DoSalvage(struct rx_connection * aconn, char * aparm1, char * aparm2, + char * aoutName, afs_int32 showlog, char * parallel, + char * atmpDir, char * orphans, int dafs, + struct MRAFSSalvageParms * mrafsParm) { register afs_int32 code; char *parms[6]; @@ -1253,19 +1248,43 @@ DoSalvage(aconn, aparm1, aparm2, aoutName, showlog, parallel, atmpDir, parms[code] = ""; if (!aparm2) aparm2 = ""; + /* MUST pass canonical (wire-format) salvager path to bosserver */ - strncpy(tbuffer, AFSDIR_CANONICAL_SERVER_SALVAGER_FILEPATH, BOZO_BSSIZE); if (*aparm2 != 0) { - if ((strlen(tbuffer) + 1 + strlen(partName) + 1 + strlen(aparm2) + - 1) > BOZO_BSSIZE) { - printf("bos: command line too big\n"); - return (E2BIG); + /* single volume salvage */ + if (dafs) { + /* for DAFS, we call the salvagserver binary with special options. + * in this mode, it simply uses SALVSYNC to tell the currently + * running salvageserver to offline and salvage the volume in question */ + strncpy(tbuffer, AFSDIR_CANONICAL_SERVER_SALSRV_FILEPATH, BOZO_BSSIZE); + + if ((strlen(tbuffer) + 9 + strlen(partName) + 1 + strlen(aparm2) + + 1) > BOZO_BSSIZE) { + printf("bos: command line too big\n"); + return (E2BIG); + } + + strcat(tbuffer, " -client "); + strcat(tbuffer, partName); + strcat(tbuffer, " "); + strcat(tbuffer, aparm2); + } else { + strncpy(tbuffer, AFSDIR_CANONICAL_SERVER_SALVAGER_FILEPATH, BOZO_BSSIZE); + + if ((strlen(tbuffer) + 1 + strlen(partName) + 1 + strlen(aparm2) + + 1) > BOZO_BSSIZE) { + printf("bos: command line too big\n"); + return (E2BIG); + } + + strcat(tbuffer, " "); + strcat(tbuffer, partName); + strcat(tbuffer, " "); + strcat(tbuffer, aparm2); } - strcat(tbuffer, " "); - strcat(tbuffer, partName); - strcat(tbuffer, " "); - strcat(tbuffer, aparm2); } else { + /* partition salvage */ + strncpy(tbuffer, AFSDIR_CANONICAL_SERVER_SALVAGER_FILEPATH, BOZO_BSSIZE); if ((strlen(tbuffer) + 4 + strlen(partName) + 1) > BOZO_BSSIZE) { printf("bos: command line too big\n"); return (E2BIG); @@ -1274,75 +1293,82 @@ DoSalvage(aconn, aparm1, aparm2, aoutName, showlog, parallel, atmpDir, strcat(tbuffer, partName); } - /* add the parallel option if given */ - if (parallel != NULL) { - if ((strlen(tbuffer) + 11 + strlen(parallel) + 1) > BOZO_BSSIZE) { - printf("bos: command line too big\n"); - return (E2BIG); + /* For DAFS, specifying a single volume does not result in a standard + * salvager call. Instead, it simply results in a SALVSYNC call to the + * online salvager daemon. This interface does not give us the same rich + * set of call flags. Thus, we skip these steps for DAFS single-volume + * calls */ + if (!dafs || (*aparm2 == 0)) { + /* add the parallel option if given */ + if (parallel != NULL) { + if ((strlen(tbuffer) + 11 + strlen(parallel) + 1) > BOZO_BSSIZE) { + printf("bos: command line too big\n"); + return (E2BIG); + } + strcat(tbuffer, " -parallel "); + strcat(tbuffer, parallel); } - strcat(tbuffer, " -parallel "); - strcat(tbuffer, parallel); - } - /* add the tmpdir option if given */ - if (atmpDir != NULL) { - if ((strlen(tbuffer) + 9 + strlen(atmpDir) + 1) > BOZO_BSSIZE) { - printf("bos: command line too big\n"); - return (E2BIG); + /* add the tmpdir option if given */ + if (atmpDir != NULL) { + if ((strlen(tbuffer) + 9 + strlen(atmpDir) + 1) > BOZO_BSSIZE) { + printf("bos: command line too big\n"); + return (E2BIG); + } + strcat(tbuffer, " -tmpdir "); + strcat(tbuffer, atmpDir); } - strcat(tbuffer, " -tmpdir "); - strcat(tbuffer, atmpDir); - } - /* add the orphans option if given */ - if (orphans != NULL) { - if ((strlen(tbuffer) + 10 + strlen(orphans) + 1) > BOZO_BSSIZE) { - printf("bos: command line too big\n"); - return (E2BIG); + /* add the orphans option if given */ + if (orphans != NULL) { + if ((strlen(tbuffer) + 10 + strlen(orphans) + 1) > BOZO_BSSIZE) { + printf("bos: command line too big\n"); + return (E2BIG); + } + strcat(tbuffer, " -orphans "); + strcat(tbuffer, orphans); + } + + if (mrafsParm->Optdebug) + strcat(tbuffer, " -debug"); + if (mrafsParm->Optnowrite) + strcat(tbuffer, " -nowrite"); + if (mrafsParm->Optforce) + strcat(tbuffer, " -force"); + if (mrafsParm->Optoktozap) + strcat(tbuffer, " -oktozap"); + if (mrafsParm->Optrootfiles) + strcat(tbuffer, " -rootfiles"); + if (mrafsParm->Optsalvagedirs) + strcat(tbuffer, " -salvagedirs"); + if (mrafsParm->Optblockreads) + strcat(tbuffer, " -blockreads"); + if (mrafsParm->OptListResidencies) + strcat(tbuffer, " -ListResidencies"); + if (mrafsParm->OptSalvageRemote) + strcat(tbuffer, " -SalvageRemote"); + if (mrafsParm->OptSalvageArchival) + strcat(tbuffer, " -SalvageArchival"); + if (mrafsParm->OptIgnoreCheck) + strcat(tbuffer, " -IgnoreCheck"); + if (mrafsParm->OptForceOnLine) + strcat(tbuffer, " -ForceOnLine"); + if (mrafsParm->OptUseRootDirACL) + strcat(tbuffer, " -UseRootDirACL"); + if (mrafsParm->OptTraceBadLinkCounts) + strcat(tbuffer, " -TraceBadLinkCounts"); + if (mrafsParm->OptDontAskFS) + strcat(tbuffer, " -DontAskFS"); + if (mrafsParm->OptLogLevel) { + sprintf(pbuffer, " -LogLevel %ld", mrafsParm->OptLogLevel); + strcat(tbuffer, pbuffer); + } + if (mrafsParm->OptRxDebug) + strcat(tbuffer, " -rxdebug"); + if (mrafsParm->OptResidencies) { + sprintf(pbuffer, " -Residencies %lu", mrafsParm->OptResidencies); + strcat(tbuffer, pbuffer); } - strcat(tbuffer, " -orphans "); - strcat(tbuffer, orphans); - } - - if (mrafsParm.Optdebug) - strcat(tbuffer, " -debug"); - if (mrafsParm.Optnowrite) - strcat(tbuffer, " -nowrite"); - if (mrafsParm.Optforce) - strcat(tbuffer, " -force"); - if (mrafsParm.Optoktozap) - strcat(tbuffer, " -oktozap"); - if (mrafsParm.Optrootfiles) - strcat(tbuffer, " -rootfiles"); - if (mrafsParm.Optsalvagedirs) - strcat(tbuffer, " -salvagedirs"); - if (mrafsParm.Optblockreads) - strcat(tbuffer, " -blockreads"); - if (mrafsParm.OptListResidencies) - strcat(tbuffer, " -ListResidencies"); - if (mrafsParm.OptSalvageRemote) - strcat(tbuffer, " -SalvageRemote"); - if (mrafsParm.OptSalvageArchival) - strcat(tbuffer, " -SalvageArchival"); - if (mrafsParm.OptIgnoreCheck) - strcat(tbuffer, " -IgnoreCheck"); - if (mrafsParm.OptForceOnLine) - strcat(tbuffer, " -ForceOnLine"); - if (mrafsParm.OptUseRootDirACL) - strcat(tbuffer, " -UseRootDirACL"); - if (mrafsParm.OptTraceBadLinkCounts) - strcat(tbuffer, " -TraceBadLinkCounts"); - if (mrafsParm.OptDontAskFS) - strcat(tbuffer, " -DontAskFS"); - if (mrafsParm.OptLogLevel) { - sprintf(pbuffer, " -LogLevel %ld", mrafsParm.OptLogLevel); - strcat(tbuffer, pbuffer); - } - if (mrafsParm.OptRxDebug) - strcat(tbuffer, " -rxdebug"); - if (mrafsParm.OptResidencies) { - sprintf(pbuffer, " -Residencies %lu", mrafsParm.OptResidencies); - strcat(tbuffer, pbuffer); } parms[0] = tbuffer; @@ -1447,22 +1473,36 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) char tname[BOZO_BSSIZE]; afs_int32 newID; extern struct ubik_client *cstruct; - afs_int32 curGoal, showlog = 0, mrafs = 0; + afs_int32 curGoal, showlog = 0, dafs = 0, mrafs = 0; char *parallel; char *tmpDir; char *orphans; char *tp; + char * serviceName; + struct MRAFSSalvageParms mrafsParm; memset(&mrafsParm, 0, sizeof(mrafsParm)); /* parm 0 is machine name, 1 is partition, 2 is volume, 3 is -all flag */ tconn = GetConn(as, 0); - /* Find out whether fileserver is running MR-AFS (has a scanner instance) */ - /* XXX this should really be done some other way, potentially by RPC */ tp = &tname[0]; - if (code = BOZO_GetInstanceParm(tconn, "fs", 3, &tp) == 0) - mrafs = 1; + + /* find out whether fileserver is running demand attach fs */ + if (code = BOZO_GetInstanceParm(tconn, "dafs", 0, &tp) == 0) { + dafs = 1; + serviceName = "dafs"; + /* Find out whether fileserver is running MR-AFS (has a scanner instance) */ + /* XXX this should really be done some other way, potentially by RPC */ + if (code = BOZO_GetInstanceParm(tconn, serviceName, 4, &tp) == 0) + mrafs = 1; + } else { + serviceName = "fs"; + /* Find out whether fileserver is running MR-AFS (has a scanner instance) */ + /* XXX this should really be done some other way, potentially by RPC */ + if (code = BOZO_GetInstanceParm(tconn, serviceName, 3, &tp) == 0) + mrafs = 1; + } /* we can do a volume, a partition or the whole thing, but not mixtures * thereof */ @@ -1508,6 +1548,14 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) orphans = as->parms[8].items->data; } + if (dafs) { + if (!as->parms[9].items) { /* -forceDAFS flag */ + printf("This is a demand attach fileserver. Are you sure you want to proceed with a manual salvage?\n"); + printf("must specify -forceDAFS flag in order to proceed.\n"); + return EINVAL; + } + } + if (mrafs) { if (as->parms[MRAFS_OFFSET].items) mrafsParm.Optdebug = 1; @@ -1563,7 +1611,7 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) } else { int stop = 0; - for (i = 9; i < ADDPARMOFFSET; i++) { + for (i = MRAFS_OFFSET; i < ADDPARMOFFSET; i++) { if (as->parms[i].items) { printf(" %s only possible for MR-AFS fileserver.\n", as->parms[i].name); @@ -1576,12 +1624,12 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) if (as->parms[4].items) { /* salvage whole enchilada */ - curGoal = GetServerGoal(tconn, "fs"); + curGoal = GetServerGoal(tconn, serviceName); if (curGoal == BSTAT_NORMAL) { - printf("bos: shutting down fs.\n"); - code = BOZO_SetTStatus(tconn, "fs", BSTAT_SHUTDOWN); + printf("bos: shutting down '%s'.\n", serviceName); + code = BOZO_SetTStatus(tconn, serviceName, BSTAT_SHUTDOWN); if (code) { - printf("bos: failed to stop 'fs' (%s)\n", em(code)); + printf("bos: failed to stop '%s' (%s)\n", serviceName, em(code)); return code; } code = BOZO_WaitAll(tconn); /* wait for shutdown to complete */ @@ -1592,12 +1640,12 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) /* now do the salvage operation */ printf("Starting salvage.\n"); rc = DoSalvage(tconn, NULL, NULL, outName, showlog, parallel, tmpDir, - orphans); + orphans, dafs, &mrafsParm); if (curGoal == BSTAT_NORMAL) { - printf("bos: restarting fs.\n"); - code = BOZO_SetTStatus(tconn, "fs", BSTAT_NORMAL); + printf("bos: restarting %s.\n", serviceName); + code = BOZO_SetTStatus(tconn, serviceName, BSTAT_NORMAL); if (code) { - printf("bos: failed to restart 'fs' (%s)\n", em(code)); + printf("bos: failed to restart '%s' (%s)\n", serviceName, em(code)); return code; } } @@ -1617,13 +1665,13 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) as->parms[1].items->data); return -1; } - curGoal = GetServerGoal(tconn, "fs"); + curGoal = GetServerGoal(tconn, serviceName); /* salvage a whole partition (specified by parms[1]) */ if (curGoal == BSTAT_NORMAL) { - printf("bos: shutting down fs.\n"); - code = BOZO_SetTStatus(tconn, "fs", BSTAT_SHUTDOWN); + printf("bos: shutting down '%s'.\n", serviceName); + code = BOZO_SetTStatus(tconn, serviceName, BSTAT_SHUTDOWN); if (code) { - printf("bos: can't stop 'fs' (%s)\n", em(code)); + printf("bos: can't stop '%s' (%s)\n", serviceName, em(code)); return code; } code = BOZO_WaitAll(tconn); /* wait for shutdown to complete */ @@ -1634,12 +1682,12 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) /* now do the salvage operation */ printf("Starting salvage.\n"); rc = DoSalvage(tconn, as->parms[1].items->data, NULL, outName, - showlog, parallel, tmpDir, orphans); + showlog, parallel, tmpDir, orphans, dafs, &mrafsParm); if (curGoal == BSTAT_NORMAL) { - printf("bos: restarting fs.\n"); - code = BOZO_SetTStatus(tconn, "fs", BSTAT_NORMAL); + printf("bos: restarting '%s'.\n", serviceName); + code = BOZO_SetTStatus(tconn, serviceName, BSTAT_NORMAL); if (code) { - printf("bos: failed to restart 'fs' (%s)\n", em(code)); + printf("bos: failed to restart '%s' (%s)\n", serviceName, em(code)); return code; } } @@ -1689,7 +1737,7 @@ SalvageCmd(struct cmd_syndesc *as, void *arock) } printf("Starting salvage.\n"); rc = DoSalvage(tconn, as->parms[1].items->data, tname, outName, - showlog, parallel, tmpDir, orphans); + showlog, parallel, tmpDir, orphans, dafs, &mrafsParm); if (rc) return rc; } @@ -2117,6 +2165,8 @@ main(argc, argv) "directory to place tmp files"); cmd_AddParm(ts, "-orphans", CMD_SINGLE, CMD_OPTIONAL, "ignore | remove | attach"); + cmd_AddParm(ts, "-forceDAFS", CMD_FLAG, CMD_OPTIONAL, + "(DAFS) force salvage of demand attach fileserver"); cmd_AddParm(ts, "-debug", CMD_FLAG, CMD_OPTIONAL, "(MR-AFS) Run in Debugging mode"); cmd_AddParm(ts, "-nowrite", CMD_FLAG, CMD_OPTIONAL, diff --git a/src/bozo/bos_util.c b/src/bozo/bos_util.c index c8cbbd995..dede1b3e2 100644 --- a/src/bozo/bos_util.c +++ b/src/bozo/bos_util.c @@ -23,7 +23,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/bos_util.c,v 1.4.2.1 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/bos_util.c,v 1.4.14.1 2007/10/30 15:16:37 shadow Exp $"); #include #include diff --git a/src/bozo/bosoprocs.c b/src/bozo/bosoprocs.c index ec9e1e476..f3a7ac1aa 100644 --- a/src/bozo/bosoprocs.c +++ b/src/bozo/bosoprocs.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/bosoprocs.c,v 1.19.2.4 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/bosoprocs.c,v 1.19.14.4 2008/03/10 22:32:32 shadow Exp $"); #include #include diff --git a/src/bozo/bosserver.c b/src/bozo/bosserver.c index b15cc5052..98fe1fc7c 100644 --- a/src/bozo/bosserver.c +++ b/src/bozo/bosserver.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/bosserver.c,v 1.23.2.16 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/bosserver.c,v 1.32.2.10 2008/03/10 22:32:32 shadow Exp $"); #include #include @@ -39,7 +39,7 @@ RCSID #include "bosint.h" #include "bnode.h" #include "bosprototypes.h" -#include +#include #include #include #include @@ -52,10 +52,10 @@ RCSID #define BOZO_LWP_STACKSIZE 16000 extern int BOZO_ExecuteRequest(); extern int RXSTATS_ExecuteRequest(); -extern struct bnode_ops fsbnode_ops, ezbnode_ops, cronbnode_ops; +extern struct bnode_ops fsbnode_ops, dafsbnode_ops, ezbnode_ops, cronbnode_ops; struct afsconf_dir *bozo_confdir = 0; /* bozo configuration dir */ -static char *bozo_pid; +static PROCESS bozo_pid; struct rx_securityClass *bozo_rxsc[3]; const char *bozo_fileName; FILE *bozo_logFile; @@ -164,7 +164,7 @@ bozo_ReBozo() /* make sure a dir exists */ static int -MakeDir(register char *adir) +MakeDir(const char *adir) { struct stat tstat; register afs_int32 code; @@ -721,7 +721,6 @@ main(int argc, char **argv, char **envp) register afs_int32 code; struct afsconf_dir *tdir; int noAuth = 0; - struct ktc_encryptionKey tkey; int i; char namebuf[AFSDIR_PATH_MAX]; int rxMaxMTU = -1; @@ -908,6 +907,7 @@ main(int argc, char **argv, char **envp) } bnode_Register("fs", &fsbnode_ops, 3); + bnode_Register("dafs", &dafsbnode_ops, 4); bnode_Register("simple", &ezbnode_ops, 1); bnode_Register("cron", &cronbnode_ops, 2); @@ -1019,7 +1019,6 @@ main(int argc, char **argv, char **envp) /* opened the cell databse */ bozo_confdir = tdir; - code = afsconf_GetKey(tdir, 999, &tkey); /* allow super users to manage RX statistics */ rx_SetRxStatUserOk(bozo_rxstat_userok); @@ -1085,7 +1084,7 @@ main(int argc, char **argv, char **envp) void bozo_Log(char *format, ...) { - char tdate[26]; + char tdate[27]; time_t myTime; va_list ap; @@ -1093,7 +1092,7 @@ bozo_Log(char *format, ...) if (DoSyslog) { #ifndef AFS_NT40_ENV - vsyslog(LOG_INFO, format, ap); + vsyslog(LOG_INFO, format, ap); #endif } else { myTime = time(0); @@ -1104,20 +1103,17 @@ bozo_Log(char *format, ...) bozo_logFile = fopen(AFSDIR_SERVER_BOZLOG_FILEPATH, "a"); if (bozo_logFile == NULL) { - printf("bosserver: WARNING: problem with %s", + printf("bosserver: WARNING: problem with %s\n", AFSDIR_SERVER_BOZLOG_FILEPATH); + printf("%s ", tdate); + vprintf(format, ap); fflush(stdout); - } - - if (bozo_logFile) { + } else { fprintf(bozo_logFile, "%s ", tdate); vfprintf(bozo_logFile, format, ap); - fflush(bozo_logFile); + /* close so rm BosLog works */ fclose(bozo_logFile); - } else { - printf("%s ", tdate); - vprintf(format, ap); } } } diff --git a/src/bozo/cronbnodeops.c b/src/bozo/cronbnodeops.c index ba017d20a..ccef4d157 100644 --- a/src/bozo/cronbnodeops.c +++ b/src/bozo/cronbnodeops.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/cronbnodeops.c,v 1.10.2.2 2007/10/31 04:21:31 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/cronbnodeops.c,v 1.10.14.2 2007/10/31 04:21:14 shadow Exp $"); #include #include diff --git a/src/bozo/ezbnodeops.c b/src/bozo/ezbnodeops.c index 48ea33f45..24fbee9cf 100644 --- a/src/bozo/ezbnodeops.c +++ b/src/bozo/ezbnodeops.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/ezbnodeops.c,v 1.8.2.2 2007/10/31 04:21:31 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/ezbnodeops.c,v 1.8.14.2 2007/10/31 04:21:14 shadow Exp $"); #include #include diff --git a/src/bozo/fsbnodeops.c b/src/bozo/fsbnodeops.c index 010fad4e0..e156db7b5 100644 --- a/src/bozo/fsbnodeops.c +++ b/src/bozo/fsbnodeops.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bozo/fsbnodeops.c,v 1.13.2.3 2007/11/26 21:21:49 shadow Exp $"); + ("$Header: /cvs/openafs/src/bozo/fsbnodeops.c,v 1.15.2.2 2007/10/31 04:21:14 shadow Exp $"); #include #include @@ -36,14 +36,6 @@ RCSID #include "bnode.h" #include "bosprototypes.h" -static int fs_timeout(), fs_getstat(), fs_setstat(), fs_delete(); -static int fs_procexit(), fs_getstring(), fs_getparm(), fs_restartp(); -static int fs_hascore(); -struct bnode *fs_create(); - -static void SetNeedsClock(); -static NudgeProcs(); - static int emergency = 0; /* if this file exists, then we have to salvage the file system */ @@ -71,49 +63,105 @@ static int emergency = 0; The needsSalvage flag is cleared when the salvager exits. */ -struct bnode_ops fsbnode_ops = { - fs_create, - fs_timeout, - fs_getstat, - fs_setstat, - fs_delete, - fs_procexit, - fs_getstring, - fs_getparm, - fs_restartp, - fs_hascore, -}; - struct fsbnode { struct bnode b; afs_int32 timeSDStarted; /* time shutdown operation started */ char *filecmd; /* command to start primary file server */ char *volcmd; /* command to start secondary vol server */ + char *salsrvcmd; /* command to start salvageserver (demand attach fs) */ char *salcmd; /* command to start salvager */ char *scancmd; /* command to start scanner (MR-AFS) */ struct bnode_proc *fileProc; /* process for file server */ struct bnode_proc *volProc; /* process for vol server */ + struct bnode_proc *salsrvProc; /* process for salvageserver (demand attach fs) */ struct bnode_proc *salProc; /* process for salvager */ struct bnode_proc *scanProc; /* process for scanner (MR-AFS) */ afs_int32 lastFileStart; /* last start for file */ afs_int32 lastVolStart; /* last start for vol */ + afs_int32 lastSalsrvStart; /* last start for salvageserver (demand attach fs) */ afs_int32 lastScanStart; /* last start for scanner (MR-AFS) */ char fileRunning; /* file process is running */ char volRunning; /* volser is running */ + char salsrvRunning; /* salvageserver is running (demand attach fs) */ char salRunning; /* salvager is running */ char scanRunning; /* scanner is running (MR_AFS) */ char fileSDW; /* file shutdown wait */ char volSDW; /* vol shutdown wait */ + char salsrvSDW; /* salvageserver shutdown wait (demand attach fs) */ char salSDW; /* waiting for the salvager to shutdown */ char scanSDW; /* scanner shutdown wait (MR_AFS) */ char fileKillSent; /* kill signal has been sent */ char volKillSent; + char salsrvKillSent; /* kill signal has been sent (demand attach fs) */ char salKillSent; char scanKillSent; /* kill signal has been sent (MR_AFS) */ char needsSalvage; /* salvage before running */ char needsClock; /* do we need clock ticks */ }; + + +struct bnode * fs_create(char *ainstance, char *afilecmd, char *avolcmd, + char *asalcmd, char *ascancmd); +struct bnode * dafs_create(char *ainstance, char *afilecmd, char *avolcmd, + char * asalsrvcmd, char *asalcmd, char *ascancmd); + +static int fs_hascore(register struct ezbnode *abnode); +static int fs_restartp(register struct fsbnode *abnode); +static int SetSalFlag(register struct fsbnode *abnode, register int aflag); +static int RestoreSalFlag(register struct fsbnode *abnode); +static int fs_delete(struct fsbnode *abnode); +static int fs_timeout(struct fsbnode *abnode); +static int fs_getstat(struct fsbnode *abnode, afs_int32 * astatus); +static int fs_setstat(register struct fsbnode *abnode, afs_int32 astatus); +static int fs_procexit(struct fsbnode *abnode, struct bnode_proc *aproc); +static int fs_getstring(struct fsbnode *abnode, char *abuffer, afs_int32 alen); + + +static int fs_getparm(struct fsbnode *abnode, afs_int32 aindex, + char *abuffer, afs_int32 alen); +static int dafs_getparm(struct fsbnode *abnode, afs_int32 aindex, + char *abuffer, afs_int32 alen); + +#ifdef AFS_NT40_ENV +static void AppendExecutableExtension(char *cmd); +#else +#define AppendExecutableExtension(x) +#endif + +static void SetNeedsClock(register struct fsbnode *ab); +static int NudgeProcs(register struct fsbnode *abnode); + + + +struct bnode_ops fsbnode_ops = { + fs_create, + fs_timeout, + fs_getstat, + fs_setstat, + fs_delete, + fs_procexit, + fs_getstring, + fs_getparm, + fs_restartp, + fs_hascore, +}; + +/* demand attach fs bnode ops */ +struct bnode_ops dafsbnode_ops = { + dafs_create, + fs_timeout, + fs_getstat, + fs_setstat, + fs_delete, + fs_procexit, + fs_getstring, + dafs_getparm, + fs_restartp, + fs_hascore, +}; + + /* Function to tell whether this bnode has a core file or not. You might * think that this could be in bnode.c, and decide what core files to check * for based on the bnode's coreName property, but that doesn't work because @@ -135,6 +183,11 @@ fs_hascore(register struct ezbnode *abnode) if (access(tbuffer, 0) == 0) return 1; + /* see if salvageserver left a core file */ + bnode_CoreName(abnode, "salsrv", tbuffer); + if (access(tbuffer, 0) == 0) + return 1; + /* see if salvager left a core file */ bnode_CoreName(abnode, "salv", tbuffer); if (access(tbuffer, 0) == 0) @@ -193,6 +246,25 @@ fs_restartp(register struct fsbnode *abnode) if (code) return code; + if (abnode->salsrvcmd) { /* only in demand attach fs */ + /* now do same for salsrvcmd (demand attach fs) */ + code = bnode_ParseLine(abnode->salsrvcmd, &tt); + if (code) + return 0; + if (!tt) + return 0; + code = stat(tt->key, &tstat); + if (code) { + bnode_FreeTokens(tt); + return 0; + } + if (tstat.st_ctime > abnode->lastScanStart) + code = 1; + else + code = 0; + bnode_FreeTokens(tt); + } + if (abnode->scancmd) { /* Only in MR-AFS */ /* now do same for scancmd (MR-AFS) */ code = bnode_ParseLine(abnode->scancmd, &tt); @@ -223,14 +295,17 @@ SetSalFlag(register struct fsbnode *abnode, register int aflag) char tbuffer[AFSDIR_PATH_MAX]; int fd; - abnode->needsSalvage = aflag; - strcompose(tbuffer, AFSDIR_PATH_MAX, AFSDIR_SERVER_LOCAL_DIRPATH, "/", - SALFILE, abnode->b.name, NULL); - if (aflag) { - fd = open(tbuffer, O_CREAT | O_TRUNC | O_RDWR, 0666); - close(fd); - } else { - unlink(tbuffer); + /* don't use the salvage flag for demand attach fs */ + if (abnode->salsrvcmd == NULL) { + abnode->needsSalvage = aflag; + strcompose(tbuffer, AFSDIR_PATH_MAX, AFSDIR_SERVER_LOCAL_DIRPATH, "/", + SALFILE, abnode->b.name, NULL); + if (aflag) { + fd = open(tbuffer, O_CREAT | O_TRUNC | O_RDWR, 0666); + close(fd); + } else { + unlink(tbuffer); + } } return 0; } @@ -241,13 +316,18 @@ RestoreSalFlag(register struct fsbnode *abnode) { char tbuffer[AFSDIR_PATH_MAX]; - strcompose(tbuffer, AFSDIR_PATH_MAX, AFSDIR_SERVER_LOCAL_DIRPATH, "/", - SALFILE, abnode->b.name, NULL); - if (access(tbuffer, 0) == 0) { - /* file exists, so need to salvage */ - abnode->needsSalvage = 1; - } else { + /* never set needs salvage flag for demand attach fs */ + if (abnode->salsrvcmd != NULL) { abnode->needsSalvage = 0; + } else { + strcompose(tbuffer, AFSDIR_PATH_MAX, AFSDIR_SERVER_LOCAL_DIRPATH, "/", + SALFILE, abnode->b.name, NULL); + if (access(tbuffer, 0) == 0) { + /* file exists, so need to salvage */ + abnode->needsSalvage = 1; + } else { + abnode->needsSalvage = 0; + } } return 0; } @@ -267,6 +347,8 @@ fs_delete(struct fsbnode *abnode) free(abnode->filecmd); free(abnode->volcmd); free(abnode->salcmd); + if (abnode->salsrvcmd) + free(abnode->salsrvcmd); if (abnode->scancmd) free(abnode->scancmd); free(abnode); @@ -299,95 +381,235 @@ fs_create(char *ainstance, char *afilecmd, char *avolcmd, char *asalcmd, char *fileCmdpath, *volCmdpath, *salCmdpath, *scanCmdpath; int bailout = 0; - fileCmdpath = volCmdpath = salCmdpath = NULL; + te = fileCmdpath = volCmdpath = salCmdpath = scanCmdpath = NULL; /* construct local paths from canonical (wire-format) paths */ if (ConstructLocalBinPath(afilecmd, &fileCmdpath)) { bozo_Log("BNODE: command path invalid '%s'\n", afilecmd); bailout = 1; + goto done; } if (ConstructLocalBinPath(avolcmd, &volCmdpath)) { bozo_Log("BNODE: command path invalid '%s'\n", avolcmd); bailout = 1; + goto done; } if (ConstructLocalBinPath(asalcmd, &salCmdpath)) { bozo_Log("BNODE: command path invalid '%s'\n", asalcmd); bailout = 1; + goto done; } if (ascancmd && strlen(ascancmd)) { if (ConstructLocalBinPath(ascancmd, &scanCmdpath)) { bozo_Log("BNODE: command path invalid '%s'\n", ascancmd); bailout = 1; + goto done; } } if (!bailout) { sscanf(fileCmdpath, "%s", cmdname); -#ifdef AFS_NT40_ENV AppendExecutableExtension(cmdname); -#endif if (stat(cmdname, &tstat)) { bozo_Log("BNODE: file server binary '%s' not found\n", cmdname); bailout = 1; + goto done; } sscanf(volCmdpath, "%s", cmdname); -#ifdef AFS_NT40_ENV AppendExecutableExtension(cmdname); -#endif if (stat(cmdname, &tstat)) { bozo_Log("BNODE: volume server binary '%s' not found\n", cmdname); bailout = 1; + goto done; } sscanf(salCmdpath, "%s", cmdname); -#ifdef AFS_NT40_ENV AppendExecutableExtension(cmdname); -#endif if (stat(cmdname, &tstat)) { bozo_Log("BNODE: salvager binary '%s' not found\n", cmdname); bailout = 1; + goto done; } if (ascancmd && strlen(ascancmd)) { sscanf(scanCmdpath, "%s", cmdname); -#ifdef AFS_NT40_ENV AppendExecutableExtension(cmdname); -#endif if (stat(cmdname, &tstat)) { bozo_Log("BNODE: scanner binary '%s' not found\n", cmdname); bailout = 1; + goto done; } } } + te = (struct fsbnode *)malloc(sizeof(struct fsbnode)); + if (te == NULL) { + bailout = 1; + goto done; + } + memset(te, 0, sizeof(struct fsbnode)); + te->filecmd = fileCmdpath; + te->volcmd = volCmdpath; + te->salsrvcmd = NULL; + te->salcmd = salCmdpath; + if (ascancmd && strlen(ascancmd)) + te->scancmd = scanCmdpath; + else + te->scancmd = NULL; + if (bnode_InitBnode(te, &fsbnode_ops, ainstance) != 0) { + bailout = 1; + goto done; + } + bnode_SetTimeout(te, POLLTIME); /* ask for timeout activations every 10 seconds */ + RestoreSalFlag(te); /* restore needsSalvage flag based on file's existence */ + SetNeedsClock(te); /* compute needsClock field */ + + done: if (bailout) { - free(fileCmdpath); - free(volCmdpath); - free(salCmdpath); + if (te) + free(te); + if (fileCmdpath) + free(fileCmdpath); + if (volCmdpath) + free(volCmdpath); + if (salCmdpath) + free(salCmdpath); + if (scanCmdpath) + free(scanCmdpath); return NULL; } + return (struct bnode *)te; +} + +/* create a demand attach fs bnode */ +struct bnode * +dafs_create(char *ainstance, char *afilecmd, char *avolcmd, + char * asalsrvcmd, char *asalcmd, char *ascancmd) +{ + struct stat tstat; + register struct fsbnode *te; + char cmdname[AFSDIR_PATH_MAX]; + char *fileCmdpath, *volCmdpath, *salsrvCmdpath, *salCmdpath, *scanCmdpath; + int bailout = 0; + + te = fileCmdpath = volCmdpath = salsrvCmdpath = salCmdpath = scanCmdpath = NULL; + + /* construct local paths from canonical (wire-format) paths */ + if (ConstructLocalBinPath(afilecmd, &fileCmdpath)) { + bozo_Log("BNODE: command path invalid '%s'\n", afilecmd); + bailout = 1; + goto done; + } + if (ConstructLocalBinPath(avolcmd, &volCmdpath)) { + bozo_Log("BNODE: command path invalid '%s'\n", avolcmd); + bailout = 1; + goto done; + } + if (ConstructLocalBinPath(asalsrvcmd, &salsrvCmdpath)) { + bozo_Log("BNODE: command path invalid '%s'\n", asalsrvcmd); + bailout = 1; + goto done; + } + if (ConstructLocalBinPath(asalcmd, &salCmdpath)) { + bozo_Log("BNODE: command path invalid '%s'\n", asalcmd); + bailout = 1; + goto done; + } + + if (ascancmd && strlen(ascancmd)) { + if (ConstructLocalBinPath(ascancmd, &scanCmdpath)) { + bozo_Log("BNODE: command path invalid '%s'\n", ascancmd); + bailout = 1; + goto done; + } + } + + if (!bailout) { + sscanf(fileCmdpath, "%s", cmdname); + AppendExecutableExtension(cmdname); + if (stat(cmdname, &tstat)) { + bozo_Log("BNODE: file server binary '%s' not found\n", cmdname); + bailout = 1; + goto done; + } + + sscanf(volCmdpath, "%s", cmdname); + AppendExecutableExtension(cmdname); + if (stat(cmdname, &tstat)) { + bozo_Log("BNODE: volume server binary '%s' not found\n", cmdname); + bailout = 1; + goto done; + } + + sscanf(salsrvCmdpath, "%s", cmdname); + AppendExecutableExtension(cmdname); + if (stat(cmdname, &tstat)) { + bozo_Log("BNODE: salvageserver binary '%s' not found\n", cmdname); + bailout = 1; + goto done; + } + + sscanf(salCmdpath, "%s", cmdname); + AppendExecutableExtension(cmdname); + if (stat(cmdname, &tstat)) { + bozo_Log("BNODE: salvager binary '%s' not found\n", cmdname); + bailout = 1; + goto done; + } + + if (ascancmd && strlen(ascancmd)) { + sscanf(scanCmdpath, "%s", cmdname); + AppendExecutableExtension(cmdname); + if (stat(cmdname, &tstat)) { + bozo_Log("BNODE: scanner binary '%s' not found\n", cmdname); + bailout = 1; + goto done; + } + } + } + te = (struct fsbnode *)malloc(sizeof(struct fsbnode)); + if (te == NULL) { + bailout = 1; + goto done; + } memset(te, 0, sizeof(struct fsbnode)); te->filecmd = fileCmdpath; te->volcmd = volCmdpath; + te->salsrvcmd = salsrvCmdpath; te->salcmd = salCmdpath; if (ascancmd && strlen(ascancmd)) te->scancmd = scanCmdpath; else te->scancmd = NULL; - if (bnode_InitBnode(te, &fsbnode_ops, ainstance) != 0) { - free(te); - free(fileCmdpath); - free(volCmdpath); - free(salCmdpath); - return NULL; + if (bnode_InitBnode(te, &dafsbnode_ops, ainstance) != 0) { + bailout = 1; + goto done; } bnode_SetTimeout(te, POLLTIME); /* ask for timeout activations every 10 seconds */ RestoreSalFlag(te); /* restore needsSalvage flag based on file's existence */ SetNeedsClock(te); /* compute needsClock field */ + + done: + if (bailout) { + if (te) + free(te); + if (fileCmdpath) + free(fileCmdpath); + if (volCmdpath) + free(volCmdpath); + if (salsrvCmdpath) + free(salsrvCmdpath); + if (salCmdpath) + free(salCmdpath); + if (scanCmdpath) + free(scanCmdpath); + return NULL; + } + return (struct bnode *)te; } @@ -426,6 +648,15 @@ fs_timeout(struct fsbnode *abnode) FSSDTIME); } } + if (abnode->salsrvSDW) { + if (!abnode->salsrvKillSent && now - abnode->timeSDStarted > SDTIME) { + bnode_StopProc(abnode->salsrvProc, SIGKILL); + abnode->salsrvKillSent = 1; + bozo_Log + ("bos shutdown: salvageserver failed to shutdown within %d seconds\n", + SDTIME); + } + } if (abnode->scanSDW) { if (!abnode->scanKillSent && now - abnode->timeSDStarted > SDTIME) { bnode_StopProc(abnode->scanProc, SIGKILL); @@ -444,15 +675,17 @@ fs_getstat(struct fsbnode *abnode, afs_int32 * astatus) { register afs_int32 temp; if (abnode->volSDW || abnode->fileSDW || abnode->salSDW - || abnode->scanSDW) + || abnode->scanSDW || abnode->salsrvSDW) temp = BSTAT_SHUTTINGDOWN; else if (abnode->salRunning) temp = BSTAT_NORMAL; else if (abnode->volRunning && abnode->fileRunning - && (!abnode->scancmd || abnode->scanRunning)) + && (!abnode->scancmd || abnode->scanRunning) + && (!abnode->salsrvcmd || abnode->salsrvRunning)) temp = BSTAT_NORMAL; else if (!abnode->salRunning && !abnode->volRunning - && !abnode->fileRunning && !abnode->scanRunning) + && !abnode->fileRunning && !abnode->scanRunning + && !abnode->salsrvRunning) temp = BSTAT_SHUTDOWN; else temp = BSTAT_STARTINGUP; @@ -503,6 +736,11 @@ fs_procexit(struct fsbnode *abnode, struct bnode_proc *aproc) abnode->scanRunning = 0; abnode->scanSDW = 0; abnode->scanKillSent = 0; + } else if (aproc == abnode->salsrvProc) { + abnode->salsrvProc = 0; + abnode->salsrvRunning = 0; + abnode->salsrvSDW = 0; + abnode->salsrvKillSent = 0; } /* now restart anyone who needs to restart */ @@ -514,10 +752,11 @@ static void SetNeedsClock(register struct fsbnode *ab) { if (ab->b.goal == 1 && ab->fileRunning && ab->volRunning - && (!ab->scancmd || ab->scanRunning)) + && (!ab->scancmd || ab->scanRunning) + && (!ab->salsrvcmd || ab->salsrvRunning)) ab->needsClock = 0; /* running normally */ else if (ab->b.goal == 0 && !ab->fileRunning && !ab->volRunning - && !ab->salRunning && !ab->scanRunning) + && !ab->salRunning && !ab->scanRunning && !ab->salsrvRunning) ab->needsClock = 0; /* halted normally */ else ab->needsClock = 1; /* other */ @@ -557,6 +796,18 @@ NudgeProcs(register struct fsbnode *abnode) abnode->volRunning = 1; } } + if (abnode->salsrvcmd) { + if (!abnode->salsrvRunning) { + abnode->lastSalsrvStart = FT_ApproxTime(); + code = + bnode_NewProc(abnode, abnode->salsrvcmd, "salsrv", + &tp); + if (code == 0) { + abnode->salsrvProc = tp; + abnode->salsrvRunning = 1; + } + } + } if (abnode->scancmd) { if (!abnode->scanRunning) { abnode->lastScanStart = FT_ApproxTime(); @@ -571,7 +822,8 @@ NudgeProcs(register struct fsbnode *abnode) } } else { /* file is not running */ /* see how to start */ - if (!abnode->needsSalvage) { + /* for demand attach fs, needsSalvage flag is ignored */ + if (!abnode->needsSalvage || abnode->salsrvcmd) { /* no crash apparent, just start up normally */ if (!abnode->fileRunning) { abnode->lastFileStart = FT_ApproxTime(); @@ -591,6 +843,16 @@ NudgeProcs(register struct fsbnode *abnode) abnode->volRunning = 1; } } + if (abnode->salsrvcmd && !abnode->salsrvRunning) { + abnode->lastSalsrvStart = FT_ApproxTime(); + code = + bnode_NewProc(abnode, abnode->salsrvcmd, "salsrv", + &tp); + if (code == 0) { + abnode->salsrvProc = tp; + abnode->salsrvRunning = 1; + } + } if (abnode->scancmd && !abnode->scanRunning) { abnode->lastScanStart = FT_ApproxTime(); code = @@ -651,6 +913,11 @@ NudgeProcs(register struct fsbnode *abnode) abnode->volSDW = 1; abnode->timeSDStarted = now; } + if (abnode->salsrvRunning && !abnode->salsrvSDW) { + bnode_StopProc(abnode->salsrvProc, SIGTERM); + abnode->salsrvSDW = 1; + abnode->timeSDStarted = now; + } if (abnode->scanRunning && !abnode->scanSDW) { bnode_StopProc(abnode->scanProc, SIGTERM); abnode->scanSDW = 1; @@ -719,3 +986,22 @@ fs_getparm(struct fsbnode *abnode, afs_int32 aindex, char *abuffer, return BZDOM; return 0; } + +static int +dafs_getparm(struct fsbnode *abnode, afs_int32 aindex, char *abuffer, + afs_int32 alen) +{ + if (aindex == 0) + strcpy(abuffer, abnode->filecmd); + else if (aindex == 1) + strcpy(abuffer, abnode->volcmd); + else if (aindex == 2) + strcpy(abuffer, abnode->salsrvcmd); + else if (aindex == 3) + strcpy(abuffer, abnode->salcmd); + else if (aindex == 4 && abnode->scancmd) + strcpy(abuffer, abnode->scancmd); + else + return BZDOM; + return 0; +} diff --git a/src/bu_utils/NTMakefile b/src/bu_utils/NTMakefile index 51f23b7ae..b0fa48d17 100644 --- a/src/bu_utils/NTMakefile +++ b/src/bu_utils/NTMakefile @@ -27,7 +27,9 @@ EXELIBS =\ $(EXEFILE): $(EXEOBJS) $(EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) ############################################################################ # Definitions for generating versioninfo resources diff --git a/src/bu_utils/fms.c b/src/bu_utils/fms.c index bdf71ae34..980416795 100644 --- a/src/bu_utils/fms.c +++ b/src/bu_utils/fms.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bu_utils/fms.c,v 1.7.2.2 2007/11/26 21:21:49 shadow Exp $"); + ("$Header: /cvs/openafs/src/bu_utils/fms.c,v 1.7.14.2 2007/11/26 21:08:41 shadow Exp $"); #undef IN #include diff --git a/src/bucoord/NTMakefile b/src/bucoord/NTMakefile index b217e86da..43a56e8ec 100644 --- a/src/bucoord/NTMakefile +++ b/src/bucoord/NTMakefile @@ -37,6 +37,8 @@ $(LIBFILE): $(LIBOBJS) EXEFILE = $(DESTDIR)\etc\backup.exe +EXERES = $(OUT)/backup.res + EXEOBJS =\ $(OUT)\main.obj \ $(OUT)\config.obj \ @@ -58,8 +60,7 @@ EXEOBJS =\ $(OUT)\dlq.obj \ -$(OUT)/backup.res:AFS_component_version_number.h - $(RC) backup.rc +$(EXERES): backup.rc AFS_component_version_number.h $(EXEOBJS):$$(@B).c $(C2OBJ) $** @@ -87,12 +88,15 @@ EXELIBS =\ $(DESTDIR)\lib\afs\afsprocmgmt.lib \ $(DESTDIR)\lib\afs\afspioctl.lib \ $(DESTDIR)\lib\afs\afsreg.lib \ - $(DESTDIR)\lib\cm_dns.obj + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj -$(EXEFILE): $(EXEOBJS) $(EXELIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib +$(EXEFILE): $(EXEOBJS) $(EXERES) $(EXELIBS) + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) ############################################################################ @@ -118,6 +122,8 @@ install: $(INCFILES) $(LIBFILE) $(EXEFILE) clean:: $(DEL) bc.h bucoord_errs.c + $(DEL) $(EXERES) + $(DEL) AFS_component_version_number.h mkdir: diff --git a/src/bucoord/bc_status.c b/src/bucoord/bc_status.c index a3cd0c5a4..76dfb7a12 100644 --- a/src/bucoord/bc_status.c +++ b/src/bucoord/bc_status.c @@ -11,9 +11,8 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/bc_status.c,v 1.11.2.3 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/bc_status.c,v 1.11.14.3 2008/03/10 22:32:32 shadow Exp $"); -#include #include #ifdef AFS_NT40_ENV #include diff --git a/src/bucoord/commands.c b/src/bucoord/commands.c index b2ba07ecf..2f37b6e32 100644 --- a/src/bucoord/commands.c +++ b/src/bucoord/commands.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/commands.c,v 1.14.2.11 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/commands.c,v 1.18.2.6 2007/11/26 21:08:41 shadow Exp $"); #include #if defined(AFS_LINUX24_ENV) diff --git a/src/bucoord/config.c b/src/bucoord/config.c index b63fb9da4..3b3ae8f42 100644 --- a/src/bucoord/config.c +++ b/src/bucoord/config.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/config.c,v 1.8.2.1 2007/01/05 03:34:09 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/config.c,v 1.8.14.1 2007/01/05 03:32:24 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/bucoord/dlq.c b/src/bucoord/dlq.c index 0f6f1fe8e..7903601ec 100644 --- a/src/bucoord/dlq.c +++ b/src/bucoord/dlq.c @@ -12,10 +12,9 @@ #ifdef HAVE_STDLIB_H #include #endif -#include RCSID - ("$Header: /cvs/openafs/src/bucoord/dlq.c,v 1.9.2.2 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/dlq.c,v 1.9.14.1 2007/01/05 03:32:24 shadow Exp $"); #include "bc.h" #include diff --git a/src/bucoord/dsstub.c b/src/bucoord/dsstub.c index 83da89eac..b8f2dd622 100644 --- a/src/bucoord/dsstub.c +++ b/src/bucoord/dsstub.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/dsstub.c,v 1.6.2.3 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/dsstub.c,v 1.7.6.2 2007/11/26 21:08:41 shadow Exp $"); #include #include diff --git a/src/bucoord/dsvs.c b/src/bucoord/dsvs.c index 44ffb30f5..bef257eb2 100644 --- a/src/bucoord/dsvs.c +++ b/src/bucoord/dsvs.c @@ -19,7 +19,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/dsvs.c,v 1.9.2.3 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/dsvs.c,v 1.10.6.2 2007/11/26 21:08:41 shadow Exp $"); #include #include diff --git a/src/bucoord/dump.c b/src/bucoord/dump.c index 4a020ee36..197736a89 100644 --- a/src/bucoord/dump.c +++ b/src/bucoord/dump.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/dump.c,v 1.12.2.6 2008/04/09 16:40:16 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/dump.c,v 1.13.6.5 2008/04/09 16:39:57 shadow Exp $"); #include #include diff --git a/src/bucoord/dump_sched.c b/src/bucoord/dump_sched.c index 07160263a..206fe8e0d 100644 --- a/src/bucoord/dump_sched.c +++ b/src/bucoord/dump_sched.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/dump_sched.c,v 1.7.2.7 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/dump_sched.c,v 1.9.6.5 2007/11/26 21:08:41 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/bucoord/expire.c b/src/bucoord/expire.c index 1e15db3a1..532bf1771 100644 --- a/src/bucoord/expire.c +++ b/src/bucoord/expire.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/expire.c,v 1.6.2.1 2007/01/05 03:34:09 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/expire.c,v 1.6.14.1 2007/01/05 03:32:24 shadow Exp $"); #include #include diff --git a/src/bucoord/main.c b/src/bucoord/main.c index b887c1531..83668d22a 100644 --- a/src/bucoord/main.c +++ b/src/bucoord/main.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/main.c,v 1.16.2.5 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/main.c,v 1.16.14.5 2008/03/10 22:32:32 shadow Exp $"); #include #include diff --git a/src/bucoord/restore.c b/src/bucoord/restore.c index d335e5048..13d99e5fc 100644 --- a/src/bucoord/restore.c +++ b/src/bucoord/restore.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/restore.c,v 1.8.2.9 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/restore.c,v 1.10.6.7 2007/11/26 21:08:41 shadow Exp $"); #include #include diff --git a/src/bucoord/status.c b/src/bucoord/status.c index 4150effed..24ec54399 100644 --- a/src/bucoord/status.c +++ b/src/bucoord/status.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/status.c,v 1.7.2.2 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/status.c,v 1.7.14.2 2007/11/26 21:08:41 shadow Exp $"); #include #include diff --git a/src/bucoord/tape_hosts.c b/src/bucoord/tape_hosts.c index 6aebc33ac..7246fae59 100644 --- a/src/bucoord/tape_hosts.c +++ b/src/bucoord/tape_hosts.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/tape_hosts.c,v 1.7.2.4 2007/10/31 04:13:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/tape_hosts.c,v 1.7.14.4 2007/10/31 04:09:24 shadow Exp $"); #include #include diff --git a/src/bucoord/ubik_db_if.c b/src/bucoord/ubik_db_if.c index 4e8ff129e..86c216e16 100644 --- a/src/bucoord/ubik_db_if.c +++ b/src/bucoord/ubik_db_if.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/ubik_db_if.c,v 1.10.2.2 2007/04/10 18:43:41 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/ubik_db_if.c,v 1.10.14.2 2007/04/10 18:39:50 shadow Exp $"); #include #include diff --git a/src/bucoord/vol_sets.c b/src/bucoord/vol_sets.c index f65ecc4e6..f075092a9 100644 --- a/src/bucoord/vol_sets.c +++ b/src/bucoord/vol_sets.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/vol_sets.c,v 1.10.2.6 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/vol_sets.c,v 1.11.6.5 2007/11/26 21:08:41 shadow Exp $"); #include #include diff --git a/src/bucoord/volstub.c b/src/bucoord/volstub.c index a6725bd8a..f703b329c 100644 --- a/src/bucoord/volstub.c +++ b/src/bucoord/volstub.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/volstub.c,v 1.6.2.3 2007/04/10 18:43:41 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/volstub.c,v 1.6.14.3 2007/04/10 18:39:50 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/budb/Makefile.in b/src/budb/Makefile.in index 4d3cbcf64..f8598e902 100644 --- a/src/budb/Makefile.in +++ b/src/budb/Makefile.in @@ -117,7 +117,11 @@ ${DEST}/include/afs/budb_client.h: budb_client.h ${INSTALL} $? $@ ${DEST}/root.server/usr/afs/bin/buserver: budb_server - ${INSTALL} -f $? $@ + @if test "@ENABLE_PTHREADED_UBIK@" = "yes"; then \ + echo "Don't install buserver for ${SYS_NAME}" ; \ + else \ + ${INSTALL} -f $? $@ ; \ + fi # # Misc targets @@ -152,7 +156,11 @@ ${TOP_INCDIR}/afs/budb_client.h: budb_client.h ${INSTALL} $? $@ ${DESTDIR}${afssrvlibexecdir}/buserver: budb_server - ${INSTALL} -f $? $@ + @if test "@ENABLE_PTHREADED_UBIK@" = "yes"; then \ + echo "Don't install buserver for ${SYS_NAME}" ; \ + else \ + ${INSTALL} -f $? $@ ; \ + fi dest: \ ${DEST}/lib/afs/libbudb.a \ diff --git a/src/budb/NTMakefile b/src/budb/NTMakefile index 2d24118cb..48e794b42 100644 --- a/src/budb/NTMakefile +++ b/src/budb/NTMakefile @@ -77,12 +77,15 @@ EXELIBS =\ $(DESTDIR)\lib\afs\afseventlog.lib \ $(DESTDIR)\lib\afs\afsreg.lib \ $(DESTDIR)\lib\afs\afsprocmgmt.lib \ - $(DESTDIR)\lib\cm_dns.obj + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj $(EXEFILE): $(EXEOBJS) $(EXELIBS) - $(EXECONLINK) dnsapi.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) ############################################################################ # Definitions for generating versioninfo resources diff --git a/src/budb/database.c b/src/budb/database.c index afc413e24..bb1b04d45 100644 --- a/src/budb/database.c +++ b/src/budb/database.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/database.c,v 1.7.2.2 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/database.c,v 1.7.14.4 2008/04/02 19:51:55 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -21,7 +21,6 @@ RCSID #include #include #include -#include #include #include "budb_errs.h" #include "database.h" @@ -90,7 +89,9 @@ dbwrite(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len) error_exit: if (((++pollCount) % 4) == 0) { /* Poll every 4 reads/writes */ +#ifndef AFS_PTHREAD_ENV IOMGR_Poll(); +#endif pollCount = 0; } return code; @@ -122,7 +123,9 @@ dbread(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len) error_exit: if (((++pollCount) % 4) == 0) { /* Poll every 4 reads/writes */ +#ifndef AFS_PTHREAD_ENV IOMGR_Poll(); +#endif pollCount = 0; } return code; @@ -155,7 +158,9 @@ cdbread(struct ubik_trans *ut, int type, afs_int32 pos, void *buff, afs_int32 le error_exit: if (((++pollCount) % 4) == 0) { /* Poll every 4 reads/writes */ +#ifndef AFS_PTHREAD_ENV IOMGR_Poll(); +#endif pollCount = 0; } return code; diff --git a/src/budb/db_alloc.c b/src/budb/db_alloc.c index 18017b397..a14208ef9 100644 --- a/src/budb/db_alloc.c +++ b/src/budb/db_alloc.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/db_alloc.c,v 1.7.2.1 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/db_alloc.c,v 1.7.14.2 2007/10/30 15:16:37 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -22,7 +22,6 @@ RCSID #include #include #include -#include #include #include "budb_errs.h" #include "database.h" diff --git a/src/budb/db_dump.c b/src/budb/db_dump.c index fd2010842..078118280 100644 --- a/src/budb/db_dump.c +++ b/src/budb/db_dump.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/db_dump.c,v 1.7.2.2 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/db_dump.c,v 1.7.14.3 2008/04/02 19:51:55 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -73,13 +73,23 @@ canWrite(fid) while (dumpSyncPtr->ds_bytes > 0) { if (dumpSyncPtr->ds_readerStatus == DS_WAITING) { dumpSyncPtr->ds_readerStatus = 0; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_cond_broadcast(&dumpSyncPtr->ds_readerStatus_cond) == 0); +#else code = LWP_SignalProcess(&dumpSyncPtr->ds_readerStatus); if (code) LogError(code, "canWrite: Signal delivery failed\n"); +#endif } dumpSyncPtr->ds_writerStatus = DS_WAITING; ReleaseWriteLock(&dumpSyncPtr->ds_lock); +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_mutex_lock(&dumpSyncPtr->ds_writerStatus_mutex) == 0); + assert(pthread_cond_wait(&dumpSyncPtr->ds_writerStatus_cond, &dumpSyncPtr->ds_writerStatus_mutex) == 0); + assert(pthread_mutex_unlock(&dumpSyncPtr->ds_writerStatus_mutex) == 0); +#else LWP_WaitProcess(&dumpSyncPtr->ds_writerStatus); +#endif ObtainWriteLock(&dumpSyncPtr->ds_lock); } return (1); @@ -103,9 +113,13 @@ haveWritten(nbytes) dumpSyncPtr->ds_bytes += nbytes; if (dumpSyncPtr->ds_readerStatus == DS_WAITING) { dumpSyncPtr->ds_readerStatus = 0; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_cond_broadcast(&dumpSyncPtr->ds_readerStatus_cond) == 0); +#else code = LWP_SignalProcess(&dumpSyncPtr->ds_readerStatus); if (code) LogError(code, "haveWritten: Signal delivery failed\n"); +#endif } ReleaseWriteLock(&dumpSyncPtr->ds_lock); } @@ -127,7 +141,13 @@ doneWriting(error) LogDebug(4, "doneWriting: waiting for Reader\n"); dumpSyncPtr->ds_writerStatus = DS_WAITING; ReleaseWriteLock(&dumpSyncPtr->ds_lock); +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_mutex_lock(&dumpSyncPtr->ds_writerStatus_mutex) == 0); + assert(pthread_cond_wait(&dumpSyncPtr->ds_writerStatus_cond, &dumpSyncPtr->ds_writerStatus_mutex) == 0); + assert(pthread_mutex_unlock(&dumpSyncPtr->ds_writerStatus_mutex) == 0); +#else LWP_WaitProcess(&dumpSyncPtr->ds_writerStatus); +#endif ObtainWriteLock(&dumpSyncPtr->ds_lock); } @@ -139,9 +159,13 @@ doneWriting(error) else dumpSyncPtr->ds_writerStatus = DS_DONE; dumpSyncPtr->ds_readerStatus = 0; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_cond_broadcast(&dumpSyncPtr->ds_readerStatus_cond) == 0); +#else code = LWP_NoYieldSignal(&dumpSyncPtr->ds_readerStatus); if (code) LogError(code, "doneWriting: Signal delivery failed\n"); +#endif ReleaseWriteLock(&dumpSyncPtr->ds_lock); } diff --git a/src/budb/db_hash.c b/src/budb/db_hash.c index ba20b3130..8b09f56f8 100644 --- a/src/budb/db_hash.c +++ b/src/budb/db_hash.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/db_hash.c,v 1.8.2.1 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/db_hash.c,v 1.8.14.2 2007/10/30 15:16:37 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -22,7 +22,6 @@ RCSID #include #include #include -#include #include #include "budb_errs.h" #include "database.h" diff --git a/src/budb/db_lock.c b/src/budb/db_lock.c index 7a5c17593..7cb7e0b54 100644 --- a/src/budb/db_lock.c +++ b/src/budb/db_lock.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/db_lock.c,v 1.6 2003/07/15 23:14:48 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/db_lock.c,v 1.6.14.1 2007/02/09 01:00:19 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -22,7 +22,6 @@ RCSID #endif #include #include -#include #include #include "budb_errs.h" #include "database.h" diff --git a/src/budb/db_text.c b/src/budb/db_text.c index 1c2ba165c..7df8c5c12 100644 --- a/src/budb/db_text.c +++ b/src/budb/db_text.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/db_text.c,v 1.10.2.4 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/db_text.c,v 1.12.4.3 2007/11/26 21:08:41 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -25,7 +25,6 @@ RCSID #include #include #include -#include #include #include "budb_errs.h" #include "database.h" diff --git a/src/budb/dbs_dump.c b/src/budb/dbs_dump.c index 7fb102595..54cb18afc 100644 --- a/src/budb/dbs_dump.c +++ b/src/budb/dbs_dump.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/dbs_dump.c,v 1.11.2.1 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/dbs_dump.c,v 1.11.14.3 2008/04/02 19:51:55 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -36,7 +36,6 @@ RCSID #include #include #include -#include #include #include "budb.h" #include "budb_errs.h" @@ -116,7 +115,14 @@ DumpDB(call, firstcall, maxLength, charListPtr, done) charListT *charListPtr; afs_int32 *done; { +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + pthread_t dumperPid, watcherPid; + pthread_attr_t dumperPid_tattr; + pthread_attr_t watcherPid_tattr; + +#else PROCESS dumperPid, watcherPid; +#endif int readSize; afs_int32 code = 0; @@ -156,20 +162,45 @@ DumpDB(call, firstcall, maxLength, charListPtr, done) if (code) ERROR(errno); +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + /* Initialize the condition variables and the mutexes we use + * to signal and synchronize the reader and writer threads. + */ + assert(pthread_cond_init(&dumpSyncPtr->ds_readerStatus_cond, (const pthread_condattr_t *)0) == 0); + assert(pthread_cond_init(&dumpSyncPtr->ds_writerStatus_cond, (const pthread_condattr_t *)0) == 0); + assert(pthread_mutex_init(&dumpSyncPtr->ds_readerStatus_mutex, (const pthread_mutexattr_t *)0) == 0); + assert(pthread_mutex_init(&dumpSyncPtr->ds_writerStatus_mutex, (const pthread_mutexattr_t *)0) == 0); + + /* Initialize the thread attributes and launch the thread */ + + assert(pthread_attr_init(&dumperPid_tattr) == 0); + assert(pthread_attr_setdetachstate(&dumperPid_tattr, PTHREAD_CREATE_DETACHED) == 0); + assert(pthread_create(&dumperPid, &dumperPid_tattr, (void *)setupDbDump, NULL) == 0); + +#else code = LWP_CreateProcess(setupDbDump, 16384, 1, (void *)dumpSyncPtr->pipeFid[1], "Database Dumper", &dumperPid); if (code) goto error_exit; +#endif dumpSyncPtr->dumperPid = dumperPid; dumpSyncPtr->timeToLive = time(0) + DUMP_TTL_INC; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + /* Initialize the thread attributes and launch the thread */ + + assert(pthread_attr_init(&watcherPid_tattr) == 0); + assert(pthread_attr_setdetachstate(&watcherPid_tattr, PTHREAD_CREATE_DETACHED) == 0); + assert(pthread_create(&watcherPid, &watcherPid_tattr, (void *)dumpWatcher, NULL) == 0); +#else /* now create the watcher thread */ code = LWP_CreateProcess(dumpWatcher, 16384, 1, 0, "Database Dump Watchdog", &watcherPid); +#endif } else if (firstcall) ERROR(BUDB_LOCKED); @@ -186,14 +217,24 @@ DumpDB(call, firstcall, maxLength, charListPtr, done) if (dumpSyncPtr->ds_writerStatus == DS_WAITING) { LogDebug(6, "wakup writer\n"); dumpSyncPtr->ds_writerStatus = 0; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_cond_broadcast(&dumpSyncPtr->ds_writerStatus_cond) == 0); +#else code = LWP_SignalProcess(&dumpSyncPtr->ds_writerStatus); if (code) LogError(code, "BUDB_DumpDB: signal delivery failed\n"); +#endif } LogDebug(6, "wait for writer\n"); dumpSyncPtr->ds_readerStatus = DS_WAITING; ReleaseWriteLock(&dumpSyncPtr->ds_lock); +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_mutex_lock(&dumpSyncPtr->ds_readerStatus_mutex) == 0); + assert(pthread_cond_wait(&dumpSyncPtr->ds_readerStatus_cond, &dumpSyncPtr->ds_readerStatus_mutex) == 0); + assert(pthread_mutex_unlock(&dumpSyncPtr->ds_readerStatus_mutex) == 0); +#else LWP_WaitProcess(&dumpSyncPtr->ds_readerStatus); +#endif ObtainWriteLock(&dumpSyncPtr->ds_lock); } @@ -218,9 +259,13 @@ DumpDB(call, firstcall, maxLength, charListPtr, done) dumpSyncPtr->ds_bytes -= readSize; if (dumpSyncPtr->ds_writerStatus == DS_WAITING) { dumpSyncPtr->ds_writerStatus = 0; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_cond_broadcast(&dumpSyncPtr->ds_writerStatus_cond) == 0); +#else code = LWP_SignalProcess(&dumpSyncPtr->ds_writerStatus); if (code) LogError(code, "BUDB_DumpDB: signal delivery failed\n"); +#endif } error_exit: @@ -314,10 +359,13 @@ dumpWatcher(void *unused) close(dumpSyncPtr->pipeFid[0]); close(dumpSyncPtr->pipeFid[1]); - +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + assert(pthread_cancel(dumpSyncPtr->dumperPid) == 0); +#else code = LWP_DestroyProcess(dumpSyncPtr->dumperPid); if (code) LogError(code, "dumpWatcher: failed to kill dump thread\n"); +#endif if (dumpSyncPtr->ut) { code = ubik_AbortTrans(dumpSyncPtr->ut); @@ -330,7 +378,11 @@ dumpWatcher(void *unused) } /*i */ ReleaseWriteLock(&dumpSyncPtr->ds_lock); +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + sleep(5); +#else IOMGR_Sleep(5); +#endif } /*w */ exit: diff --git a/src/budb/globals.h b/src/budb/globals.h index fbca64b3e..4260e782c 100644 --- a/src/budb/globals.h +++ b/src/budb/globals.h @@ -61,10 +61,18 @@ struct dumpSyncS { struct Lock ds_lock; /* for this struct. */ afs_int32 statusFlags; /* 0, or 1 for dump in progress */ int pipeFid[2]; /* pipe between threads */ +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + pthread_mutex_t ds_writerStatus_mutex; + pthread_mutex_t ds_readerStatus_mutex; + pthread_cond_t ds_writerStatus_cond; + pthread_cond_t ds_readerStatus_cond; + pthread_t dumperPid; +#else + PROCESS dumperPid; /* pid of dumper lwp */ +#endif char ds_writerStatus; char ds_readerStatus; - PROCESS dumperPid; /* pid of dumper lwp */ struct ubik_trans *ut; /* dump db transaction */ afs_int32 ds_bytes; /* no. of bytes buffered */ time_t timeToLive; /* time. After this, kill the dump */ diff --git a/src/budb/ol_verify.c b/src/budb/ol_verify.c index 11c7dde8b..5b70dfb38 100644 --- a/src/budb/ol_verify.c +++ b/src/budb/ol_verify.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/ol_verify.c,v 1.13.2.2 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/ol_verify.c,v 1.13.14.3 2008/04/02 19:51:55 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -1094,9 +1094,10 @@ verifyMapBits() /* check each entry */ for (entryIndex = 0; entryIndex < blockMap[blockIndex]->nEntries; entryIndex++) { /*f */ +#ifndef AFS_PTHREAD_ENV if ((entryIndex % 1024) == 0) IOMGR_Poll(); - +#endif bits = blockMap[blockIndex]->entries[entryIndex]; for (i = 0; i < NMAPCs; i++) diff --git a/src/budb/procs.c b/src/budb/procs.c index f13c76fa3..4526362ac 100644 --- a/src/budb/procs.c +++ b/src/budb/procs.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/procs.c,v 1.14.2.1 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/procs.c,v 1.14.14.2 2008/04/02 19:51:55 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -110,7 +110,11 @@ AwaitInitialization() start = time(0); else if (time(0) - start > 5) return UNOQUORUM; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + sleep(1); +#else IOMGR_Sleep(1); +#endif } return 0; } @@ -200,7 +204,11 @@ InitRPC(ut, lock, this_op) Log("Waiting for quorum election\n"); if (wait < 15.0) wait *= 1.1; +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + sleep((int)wait); +#else IOMGR_Sleep((int)wait); +#endif } } if (code) @@ -1469,7 +1477,11 @@ CreateDump(call, dump) } /* dump id is in use - wait a while */ +#if defined(AFS_PTHREAD_ENV) && defined(UBIK_PTHREAD_ENV) + sleep(1); +#else IOMGR_Sleep(1); +#endif } /*w */ } else { /* dump id supplied (e.g. for database restore) */ diff --git a/src/budb/server.c b/src/budb/server.c index 8863c62ea..302b498d4 100644 --- a/src/budb/server.c +++ b/src/budb/server.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/server.c,v 1.14.2.9 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/server.c,v 1.16.2.10 2008/05/29 04:04:25 jaltman Exp $"); #include #include @@ -37,7 +37,6 @@ RCSID #include #include #include -#include #include #include #include @@ -71,6 +70,10 @@ char dbDir[AFSDIR_PATH_MAX], cellConfDir[AFSDIR_PATH_MAX]; int debugging = 0; int rxBind = 0; +int lwps = 3; + +#define MINLWP 3 +#define MAXLWP 16 #define ADDRSPERSITE 16 /* Same global is in rx/rx_user.c */ afs_uint32 SHostAddrs[ADDRSPERSITE]; @@ -168,6 +171,12 @@ initializeArgHandler() cmd_AddParm(cptr, "-auditlog", CMD_SINGLE, CMD_OPTIONAL, "audit log path"); + cmd_AddParm(cptr, "-p", CMD_SINGLE, CMD_OPTIONAL, + "number of processes"); + + cmd_AddParm(cptr, "-rxbind", CMD_FLAG, CMD_OPTIONAL, + "bind the Rx socket (primary interface only)"); + } int @@ -249,6 +258,26 @@ argHandler(struct cmd_syndesc *as, void *arock) printf("Warning: auditlog %s not writable, ignored.\n", fileName); } + /* user provided the number of threads */ + if (as->parms[8].items != 0) { + lwps = atoi(as->parms[8].items->data); + if (lwps > MAXLWP) { + printf ("Warning: '-p %d' is too big; using %d instead\n", + lwps, MAXLWP); + lwps = MAXLWP; + } + if (lwps < MINLWP) { + printf ("Warning: '-p %d' is too small; using %d instead\n", + lwps, MINLWP); + lwps = MINLWP; + } + } + + /* user provided rxbind option */ + if (as->parms[9].items != 0) { + rxBind = 1; + } + return 0; } @@ -563,7 +592,7 @@ main(argc, argv) BUDB_EXIT(3); } rx_SetMinProcs(tservice, 1); - rx_SetMaxProcs(tservice, 3); + rx_SetMaxProcs(tservice, lwps); rx_SetStackSize(tservice, 10000); /* allow super users to manage RX statistics */ @@ -632,7 +661,7 @@ TimeStamp(time_t t) static char timestamp[20]; lt = localtime(&t); - strftime(timestamp, 20, "%m/%d/%Y %T", lt); + strftime(timestamp, 20, "%m/%d/%Y %H:%M:%S", lt); return timestamp; } diff --git a/src/budb/struct_ops.c b/src/budb/struct_ops.c index dc2ab411b..6327fa36a 100644 --- a/src/budb/struct_ops.c +++ b/src/budb/struct_ops.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/budb/struct_ops.c,v 1.7.2.1 2007/11/26 21:21:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/budb/struct_ops.c,v 1.8.2.1 2007/11/26 21:08:41 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -37,11 +37,11 @@ RCSID */ void -printDbHeader(ptr) - struct DbHeader *ptr; +printDbHeader(struct DbHeader *ptr) { + time_t created = ptr->created; printf("version = %d\n", ptr->dbversion); - printf("created = %s", ctime((time_t *) & ptr->created)); + printf("created = %s", ctime(&created)); printf("cell = %s\n", ptr->cell); printf("lastDumpId = %u\n", ptr->lastDumpId); printf("lastInstanceId = %d\n", ptr->lastInstanceId); @@ -49,10 +49,9 @@ printDbHeader(ptr) } void -printDump(fid, dptr) - FILE *fid; - struct dump *dptr; +printDump(FILE *fid, struct dump *dptr) { + time_t created = dptr->created; fprintf(fid, "id = %u\n", dptr->id); fprintf(fid, "idHashChain = %d\n", dptr->idHashChain); fprintf(fid, "name = %s\n", dptr->dumpName); @@ -61,7 +60,7 @@ printDump(fid, dptr) fprintf(fid, "nameHashChain = %d\n", dptr->nameHashChain); fprintf(fid, "flags = 0x%x\n", dptr->flags); fprintf(fid, "parent = %u\n", dptr->parent); - fprintf(fid, "created = %s", ctime((time_t *) & dptr->created)); + fprintf(fid, "created = %s", ctime(&created)); fprintf(fid, "nVolumes = %d\n", dptr->nVolumes); /* printTapeSet(&dptr->tapes); */ fprintf(fid, "firstTape = %d\n", dptr->firstTape); @@ -69,10 +68,10 @@ printDump(fid, dptr) } -void -printDumpEntry(deptr) - struct budb_dumpEntry *deptr; +void +printDumpEntry(struct budb_dumpEntry *deptr) { + time_t created = deptr->created; printf("id = %u\n", deptr->id); printf("Initial id = %u\n", deptr->initialDumpID); printf("Appended id = %u\n", deptr->appendedDumpID); @@ -97,7 +96,7 @@ printDumpEntry(deptr) printf("volumeSet = %s\n", deptr->volumeSetName); printf("dump path = %s\n", deptr->dumpPath); printf("name = %s\n", deptr->name); - printf("created = %s", ctime((time_t *) & deptr->created)); + printf("created = %s", ctime(&created)); printf("nVolumes = %d\n", deptr->nVolumes); printTapeSet(&deptr->tapes, (deptr->flags & BUDB_DUMP_XBSA_NSS)); @@ -160,14 +159,13 @@ printStructDumpHeader(ptr) } int -printTape(fid, tptr) - FILE *fid; - struct tape *tptr; +printTape(FILE *fid, struct tape *tptr) { + time_t written = tptr->written; fprintf(fid, "name = %s\n", tptr->name); fprintf(fid, "nameHashChain = %d\n", tptr->nameHashChain); fprintf(fid, "flags = 0x%x\n", tptr->flags); - fprintf(fid, "written = %s", ctime((time_t *) & tptr->written)); + fprintf(fid, "written = %s", ctime(&written)); fprintf(fid, "nMBytes = %d\n", tptr->nMBytes); fprintf(fid, "nBytes = %d\n", tptr->nBytes); fprintf(fid, "nFiles = %d\n", tptr->nFiles); @@ -182,9 +180,11 @@ printTape(fid, tptr) } int -printTapeEntry(teptr) - struct budb_tapeEntry *teptr; +printTapeEntry(struct budb_tapeEntry *teptr) { + time_t written = teptr->written; + time_t expires = teptr->expires; + printf("name = %s\n", teptr->name); printf("flags = 0x%x", teptr->flags); if (teptr->flags & BUDB_TAPE_TAPEERROR) @@ -200,8 +200,8 @@ printTapeEntry(teptr) if (teptr->flags & BUDB_TAPE_WRITTEN) printf(": Successful"); printf("\n"); - printf("written = %s", ctime((time_t *) & teptr->written)); - printf("expires = %s", cTIME((time_t *) & teptr->expires)); + printf("written = %s", ctime(&written)); + printf("expires = %s", cTIME(&expires)); printf("kBytes Tape Used = %u\n", teptr->useKBytes); printf("nMBytes Data = %d\n", teptr->nMBytes); printf("nBytes Data = %d\n", teptr->nBytes); @@ -231,9 +231,9 @@ printTapeSet(tsptr, nss) } int -printVolumeEntry(veptr) - struct budb_volumeEntry *veptr; +printVolumeEntry(struct budb_volumeEntry *veptr) { + time_t clone = veptr->clone; printf("name = %s\n", veptr->name); printf("flags = 0x%x", veptr->flags); if (veptr->flags & BUDB_VOL_TAPEERROR) @@ -255,7 +255,7 @@ printVolumeEntry(veptr) printf("tapeSeq = %d\n", veptr->tapeSeq); printf("position = %d\n", veptr->position); - printf("clone = %s", ctime((time_t *) & veptr->clone)); + printf("clone = %s", ctime(&clone)); printf("startByte = %d\n", veptr->startByte); printf("nBytes = %d\n", veptr->nBytes); printf("seq = %d\n", veptr->seq); @@ -266,17 +266,17 @@ printVolumeEntry(veptr) } int -printVolFragment(fid, vfptr) - FILE *fid; - struct volFragment *vfptr; +printVolFragment(FILE *fid, struct volFragment *vfptr) { + time_t clone = vfptr->clone; + time_t incTime = vfptr->incTime; fprintf(fid, "vol = %d\n", vfptr->vol); fprintf(fid, "sameNameChain = %d\n", vfptr->sameNameChain); fprintf(fid, "tape = %d\n", vfptr->tape); fprintf(fid, "sameTapeChain = %d\n", vfptr->sameTapeChain); fprintf(fid, "position = %d\n", vfptr->position); - fprintf(fid, "clone = %s", ctime((time_t *) & vfptr->clone)); - fprintf(fid, "incTime = %s", ctime((time_t *) & vfptr->incTime)); + fprintf(fid, "clone = %s", ctime(&clone)); + fprintf(fid, "incTime = %s", ctime(&incTime)); fprintf(fid, "startByte = %d\n", vfptr->startByte); fprintf(fid, "nBytes = %d\n", vfptr->nBytes); fprintf(fid, "flags = %d\n", vfptr->flags); diff --git a/src/butc/NTMakefile b/src/butc/NTMakefile index d24dd2e16..6ab9b7954 100644 --- a/src/butc/NTMakefile +++ b/src/butc/NTMakefile @@ -1,3 +1,4 @@ + # Copyright 2000, International Business Machines Corporation and others. # All Rights Reserved. # @@ -15,6 +16,8 @@ AFSDEV_AUXCDEFINES = $(AFSDEV_AUXCDEFINES) -DNOGDI -DWIN32_LEAN_AND_MEAN EXEFILE = $(DESTDIR)\etc\butc.exe +EXERES = $(OUT)\butc.res + EXEOBJS =\ $(OUT)\dbentries.obj \ $(OUT)\tcprocs.obj \ @@ -24,8 +27,7 @@ EXEOBJS =\ $(OUT)\tcudbprocs.obj \ $(OUT)\dump.obj \ $(OUT)\tcstatus.obj \ - $(OUT)\tcmain.obj \ - $(OUT)\butc.res + $(OUT)\tcmain.obj EXELIBS =\ $(DESTDIR)\lib\afs\afsbudb.lib \ @@ -51,16 +53,16 @@ EXELIBS =\ $(DESTDIR)\lib\afs\afspioctl.lib \ $(DESTDIR)\lib\afs\afseventlog.lib \ $(DESTDIR)\lib\afs\afsreg.lib \ - $(DESTDIR)\lib\cm_dns.obj - -$(EXEFILE): $(EXEOBJS) $(EXELIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib - $(EXEPREP) + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj -############################################################################ -# Definitions for generating versioninfo resources +$(EXERES): butc.rc AFS_component_version_number.h -$(OUT)\butc.res: AFS_component_version_number.h +$(EXEFILE): $(EXEOBJS) $(EXERES) $(EXELIBS) + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) + $(EXEPREP) + $(CODESIGN_USERLAND) ############################################################################ # Install target; primary makefile target @@ -72,12 +74,16 @@ install: $(EXEFILE) # Local clean target; augments predefined clean target clean:: + $(DEL) $(EXERES) + $(DEL) AFS_component_version_number.h ############################################################################ # Auxiliary build targets not built by default; e.g. test programs $(OUT)\butc_test.exe: $(OUT)\test.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) mkdir: diff --git a/src/butc/afsxbsa.c b/src/butc/afsxbsa.c new file mode 100644 index 000000000..66310f93b --- /dev/null +++ b/src/butc/afsxbsa.c @@ -0,0 +1,2903 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#ifdef xbsa + +#include +#include +#include +#include + + +#if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_LINUX26_ENV) +#include +#endif + +#include +#include "butc_xbsa.h" +#include + +/* Global Definations */ +#define APPLTYPE "afs-butc" +#define TDP_LIBNAME "libApiDS.a" +#define FIRST_HANDLE 1 +#define NOHANDLE 0 +#define XAPI_FSINFO "FS for XOpen API" +#define DIR_DELIMITER '/' +#define STR_DIR_DELIMITER '/' + +xGlobal xopenGbl; +char traceStr[DSM_MAX_RC_MSG_LENGTH+1]; +char traceStr2[(DSM_MAX_RC_MSG_LENGTH+1) - 30]; +char ourMsg[DSM_MAX_RC_MSG_LENGTH + 1]; +static int dsm_init = 0 ; + +/* >>> TSM function pointers. */ +dsInt16_t (* AFSdsmBeginQuery)( dsUint32_t dsmHandle, dsmQueryType queryType, dsmQueryBuff *queryBuffer); +dsInt16_t (* AFSdsmGetNextQObj)( dsUint32_t dsmHandle, DataBlk *dataBlkPtr) ; +dsInt16_t (* AFSdsmEndQuery)( dsUint32_t dsmHandle); +dsInt16_t (* AFSdsmRCMsg)( dsUint32_t dsmHandle, dsInt16_t dsmRC, char *msg); +dsInt16_t (* AFSdsmLogEventEx)( dsUint32_t dsmHandle, dsmLogExIn_t *dsmLogExInP, dsmLogExOut_t *dsmLogExOutP); +dsInt16_t (* AFSdsmTrace)( dsUint32_t dsmHandle, char * string ); +dsInt16_t (* AFSdsmTerminate)( dsUint32_t dsmHandle); +dsInt16_t (* AFSdsmSendData)( dsUint32_t dsmHandle, DataBlk *dataBlkPtri); +dsInt16_t (* AFSdsmBeginTxn)( dsUint32_t dsmHandle); +dsInt16_t (* AFSdsmDeleteObj)( dsUint32_t dsmHandle, dsmDelType delType, dsmDelInfo delInfo); +dsInt16_t (* AFSdsmEndTxn)( dsUint32_t dsmHandle, dsUint8_t vote, dsUint16_t *reason); +void (* AFSdsmQueryApiVersion)( dsmApiVersion *apiVersionP); +dsInt16_t (* AFSdsmInit)( dsUint32_t *dsmHandle, dsmApiVersion *dsmApiVersionP, char *clientNodeNameP, char *clientOwnerNameP, char *clientPasswordP, char *applicationType, char *configfile, char *options); +dsInt16_t (* AFSdsmQuerySessInfo)( dsUint32_t dsmHandle, ApiSessInfo *SessInfoP); +dsInt16_t (* AFSdsmBeginGetData)(dsUint32_t dsmHandle, dsBool_t mountWait, dsmGetType getType, dsmGetList *dsmGetObjListP); +dsInt16_t (* AFSdsmGetObj)( dsUint32_t dsmHandle, ObjID *objIdP, DataBlk *dataBlkPtr); +dsInt16_t (* AFSdsmEndGetObj)( dsUint32_t dsmHandle); +dsInt16_t (* AFSdsmEndGetData)( dsUint32_t dsmHandle); +dsInt16_t (* AFSdsmGetData)( dsUint32_t dsmHandle, DataBlk *dataBlkPtr); +dsInt16_t (* AFSdsmEndSendObj)( dsUint32_t dsmHandle); +dsInt16_t (* AFSdsmRegisterFS)( dsUint32_t dsmHandle, regFSData *regFilespaceP); +dsInt16_t (* AFSdsmBindMC)( dsUint32_t dsmHandle, dsmObjName *objNameP, dsmSendType sendType, mcBindKey *mcBindKeyP); +dsInt16_t (* AFSdsmSendObj)( dsUint32_t dsmHandle, dsmSendType sendType, void *sendBuff, dsmObjName *objNameP, ObjAttr *objAttrPtr, DataBlk *dataBlkPtr); +dsInt16_t (* AFSdsmChangePW)( dsUint32_t dsmHandle, char *oldPW, char *newPW); +#if 0 +dsInt16_t (* AFSdsmCleanUp)( dsBool_t mtFlag); +dsInt16_t (* AFSdsmDeleteAccess)( dsUint32_t dsmHandle, dsUint32_t ruleNum); +dsInt16_t (* AFSdsmDeleteFS)( dsUint32_t dsmHandle, char *fsName, dsUint8_t repository); +dsInt16_t (* AFSdsmEndGetDataEx)( dsmEndGetDataExIn_t *dsmEndGetDataExInP, dsmEndGetDataExOut_t *dsmEndGetDataExOutP); +dsInt16_t (* AFSdsmEndSendObjEx)( dsmEndSendObjExIn_t *dsmEndSendObjExInP, dsmEndSendObjExOut_t *dsmEndSendObjExOutP); +dsInt16_t (* AFSdsmEndTxnEx)( dsmEndTxnExIn_t *dsmEndTxnExInP, dsmEndTxnExOut_t *dsmEndTxnExOutP); +dsInt16_t (* AFSdsmGroupHandler)( dsmGroupHandlerIn_t *dsmGroupHandlerInP, dsmGroupHandlerOut_t *dsmGroupHandlerOutP); +dsInt16_t (* AFSdsmInitEx)( dsUint32_t *dsmHandleP, dsmInitExIn_t *dsmInitExInP, dsmInitExOut_t *dsmInitExOutP); +dsInt16_t (* AFSdsmLogEvent)( dsUint32_t dsmHandle, logInfo *lopInfoP); +dsInt16_t (* AFSdsmQueryAccess)( dsUint32_t dsmHandle, qryRespAccessData **accessListP, dsUint16_t *numberOfRules); +void (* AFSdsmQueryApiVersionEx)( dsmApiVersionEx *apiVersionP); +dsInt16_t (* AFSdsmQueryCliOptions)( optStruct *optstructP); +dsInt16_t (* AFSdsmQuerySessOptions)( dsUint32_t dsmHandle, optStruct *optstructP); +dsInt16_t (* AFSdsmRenameObj)( dsmRenameIn_t *dsmRenameInP, dsmRenameOut_t *dsmRenameOutP); +dsInt16_t (* AFSdsmSetAccess)( dsUint32_t dsmHandle, dsmAccessType accessType, dsmObjName *objNameP, char *node, char *owner); +dsInt16_t (* AFSdsmSetUp)( dsBool_t mtFlag, envSetUp *envSetUpPi); +dsInt16_t (* AFSdsmUpdateFS)( dsUint32_t dsmHandle, char *fs, dsmFSUpd *fsUpdP, dsUint32_t fsUpdAct); +dsInt16_t (* AFSdsmUpdateObj)( dsUint32_t dsmHandle, dsmSendType sendType, void *sendBuff, dsmObjName *objNameP, ObjAttr *objAttrPtr, dsUint32_t objUpdAct); +#endif +/* <<< TSM function pointers. */ + +typedef struct s_delList { + struct s_delList *next; + ObjID objId; +} delList; + +static dsInt16_t buildList( + dsUint32_t dsmHandle, + dsmObjName *objNameP, + delList **llHeadPP, + delList **llTailPP) +{ + dsInt16_t rc; + qryArchiveData queryBuffer; /* for query Archive*/ + qryRespArchiveData qaDataArea; + DataBlk qDataBlkArea; + char descrStar[] = "*"; + delList *lnew = NULL, *ll = NULL; + + queryBuffer.stVersion = qryArchiveDataVersion ; + queryBuffer.objName = objNameP; + queryBuffer.owner = xopenGbl.dsmSessInfo.owner; + queryBuffer.insDateLowerBound.year = DATE_MINUS_INFINITE; + queryBuffer.insDateUpperBound.year = DATE_PLUS_INFINITE; + queryBuffer.expDateLowerBound.year = DATE_MINUS_INFINITE; + queryBuffer.expDateUpperBound.year = DATE_PLUS_INFINITE; + queryBuffer.descr = descrStar; + + if ((rc=AFSdsmBeginQuery(dsmHandle, qtArchive, + (void *)&queryBuffer )) != DSM_RC_OK) + { + XOPENRETURN(dsmHandle,"buildList(AFSdsmBeginQuery)",rc,__FILE__,__LINE__); + } + qaDataArea.stVersion = qryRespArchiveDataVersion; + qDataBlkArea.stVersion = DataBlkVersion ; + qDataBlkArea.bufferPtr = (char *)&qaDataArea; + qDataBlkArea.bufferLen = sizeof(qryRespArchiveData); + while ((rc = AFSdsmGetNextQObj(dsmHandle, &qDataBlkArea)) == DSM_RC_MORE_DATA) + { + if (!(lnew = (delList *)dsMalloc(sizeof(delList)))) + XOPENRETURN(dsmHandle,"buildList(AFSdsmGetNextQObj)", + DSM_RC_NO_MEMORY,__FILE__,__LINE__); + + if (!*llHeadPP) + { + *llHeadPP = lnew; + *llTailPP = lnew; + } + else + { + ll = *llTailPP; + ll->next = lnew; + *llTailPP = lnew; + } + + lnew->next = NULL; + lnew->objId.hi = qaDataArea.objId.hi; + lnew->objId.lo = qaDataArea.objId.lo; + } + + if (rc != DSM_RC_FINISHED) + { + AFSdsmEndQuery(dsmHandle); + XOPENRETURN(dsmHandle,"buildList(AFSdsmGetNextQObj)", + rc,__FILE__,__LINE__); + } + + if ((rc = AFSdsmEndQuery(dsmHandle)) != DSM_RC_OK) + { + sprintf(traceStr2, "buildList: AFSdsmEndQuery rc = %d", rc); + ourTrace(dsmHandle,TrFL,traceStr2); + } + XOPENRETURN(dsmHandle,"buildList",rc,__FILE__,__LINE__); +} + +static dsInt16_t freeList( + delList **llHeadPP, + delList **llTailPP) +{ + + delList *ll; + ll = *llHeadPP; + while (ll) + { + *llHeadPP = ll->next; + dsFree(ll); + ll = *llHeadPP; + } + *llHeadPP = NULL; + *llTailPP = NULL; + XOPENRETURN(0,"freeList",0,__FILE__,__LINE__); +} + +void ourTrace(long BSAHandle, + char *fileName, + int lineNumber, + char *traceStr2) +{ + + sprintf(traceStr,"%s (%d) ",fileName, lineNumber); + + if (traceStr2 != NULL && *traceStr2 != '\0') + strcat(traceStr, traceStr2); + + AFSdsmTrace(BSAHandle, traceStr); + return; +} + +void ourLogEvent_Ex(dsUint32_t dsmHandle, dsmLogType type, char *message, + char *appMsg, dsmLogSeverity severity) +{ + dsmLogExIn_t dsmLogIn; + dsmLogExOut_t dsmLogOut; + dsInt16_t rc = 0; + memset(&dsmLogOut, '\0', sizeof(dsmLogExOut_t)); + + if (dsmHandle) + { + dsmLogIn.stVersion = dsmLogExInVersion; + dsmLogIn.severity = severity; + dsmLogIn.logType = type; + + strcpy(dsmLogIn.appMsgID, appMsg); + dsmLogIn.message = message; + rc = AFSdsmLogEventEx(dsmHandle, &dsmLogIn, &dsmLogOut); + } +} + +char* ourRCMsg(dsInt16_t ourRC, char *msgPrefix) +{ + char appStr[BSA_MAX_DESC]; + char *chP; + int bytesToCp; + + memset(&ourMsg, 0x00, DSM_MAX_RC_MSG_LENGTH + 1); + if(msgPrefix != NULL) + { + /*================================================================ + call stdXOpenMsgMap if return code values are within the TSM + return code range (96 - 104). Reformat the message prefix + (ANS0660 - ANS0668). + ================================================================*/ + if ((ourRC >= custMin_retcode) && (ourRC <= custMax_retcode)) + { + stdXOpenMsgMap(ourRC, ourMsg); + /* set standard XOpen message prefix range: 660 - 668 */ + ourRC = ((ourRC * 10) / 16) + (ourRC % 16) + 600; + sprintf(msgPrefix, "ANSO%d", ourRC); + } + else + /*=============================================================== + call dsmRCMsg if return code values other then the above ranges. + Get message prefix from the return message of dsmRCMsg. + ===============================================================*/ + { + AFSdsmRCMsg(NOHANDLE, ourRC, ourMsg); + /*========================================================= + search for the first ' ' and copy from beginning of string + until before the two charecter before ' '. + e.g. To get the code value from the messages of + "ANS1038S Invalid option specified", we only want to + get strings "ANS1038". + ========================================================*/ + chP = (char *) strchr(ourMsg, ' '); + bytesToCp = strlen(ourMsg) - (strlen(chP) + 1); + strncpy(appStr, ourMsg, bytesToCp); + sprintf(msgPrefix, "%s", appStr); + } + } +return ourMsg; +} /* ourRCMsg() */ + +void StrUpper(char *s) +{ + while (*s != '\0') + { + if (isalpha((int)(unsigned char)*s)) + *s = (char)toupper((int)(unsigned char)*s); + s++; + + } /* end while */ +} /* StrUpper() */ + +BSA_Int16 xparsePath( + long BSAHandle, + char *pathname, + char *hl, + char *ll) +{ + /*=== code taken from dscparse.c ParseDestOperand function ===*/ + + dsInt16_t opLen; + dsInt16_t x; + + *hl = *ll = '\0'; + + strcpy(hl, pathname); /* use hl as working area */ + if ((opLen = strlen(hl)) > 0) + { + /*=== Find the ll portion of the name ===*/ + #ifdef MBCS + { + char *llstart; + llstart = strrchr(hl,DIR_DELIMITER); + if (llstart == NULL) + x = 0; + else + x = llstart - hl; + } + #else + for (x = opLen-1; x>0 && hl[x]!=DIR_DELIMITER; x--); + #endif + + /*=== If there is no leading delimiter then add one ===*/ + if (hl[x] != DIR_DELIMITER) + strcpy(ll, STR_DIR_DELIMITER); + + strncat(ll, hl+x, opLen-x); + + hl[x] = '\0'; /* Shorten hl by length of ll */ + } + return 0; +} + +BSA_Int16 xlateRC( + long BSAHandle, + BSA_Int16 dsmRC, + BSA_Int16 *bsaRCP) + +{ + switch (dsmRC) + { + case DSM_RC_OK: + *bsaRCP=BSA_RC_OK; break; + + case DSM_RC_ABORT_ACTIVE_NOT_FOUND: + *bsaRCP=BSA_RC_ABORT_ACTIVE_NOT_FOUND; break; + + case DSM_RC_ABORT_SYSTEM_ERROR: + *bsaRCP=BSA_RC_ABORT_SYSTEM_ERROR; break; + + case DSM_RC_ABORT_BAD_VERIFIER: + case DSM_RC_AUTH_FAILURE: + case DSM_RC_REJECT_ID_UNKNOWN: + case DSM_RC_REJECT_DUPLICATE_ID: + *bsaRCP=BSA_RC_AUTHENTICATION_FAILURE; break; + + case DSM_RC_BAD_CALL_SEQUENCE: + *bsaRCP=BSA_RC_BAD_CALL_SEQUENCE; break; + + case DSM_RC_INVALID_DS_HANDLE: + *bsaRCP=BSA_RC_BAD_HANDLE; break; + + case DSM_RC_BUFF_TOO_SMALL: + *bsaRCP=BSA_RC_BUFFER_TOO_SMALL; break; + + case DSM_RC_DESC_TOOLONG: + *bsaRCP=BSA_RC_DESC_TOO_LONG; break; + + case DSM_RC_FILESPACE_TOOLONG: + *bsaRCP=BSA_RC_OBJECTSPACE_TOO_LONG; break; + + /* some other condition here ? */ + case DSM_RC_PASSWD_TOOLONG: + *bsaRCP=BSA_RC_INVALID_TOKEN; break; + + case DSM_RC_INVALID_VOTE: + *bsaRCP=BSA_RC_INVALID_VOTE; break; + + case DSM_RC_INVALID_OPT: + *bsaRCP=BSA_RC_INVALID_KEYWORD; break; + + /* ? what conditions cause this - object already exists ? + case DSM_RC_?: + *bsaRCP=BSA_RC_MATCH_EXISTS; break; + */ + + case DSM_RC_MORE_DATA: + *bsaRCP=BSA_RC_MORE_DATA; break; + + /* not supported - for QueryAccessRule + case : + *bsaRCP=BSA_RC_MORE_RULES; break; + */ + + case DSM_RC_NEWPW_REQD: + *bsaRCP=BSA_RC_NEWTOKEN_REQD; break; + + case DSM_RC_ABORT_NO_MATCH: + case DSM_RC_FILE_SPACE_NOT_FOUND: + /*=== rc for query ===*/ + *bsaRCP=BSA_RC_NO_MATCH; break; + /*=== if this return code comes on Delete, use OBJECT_NOT_FOUND + - see xopndel.c ===*/ + + case DSM_RC_FINISHED: + *bsaRCP=BSA_RC_NO_MORE_DATA; break; + + case DSM_RC_ABORT_NO_LOG_SPACE: + case DSM_RC_ABORT_NO_DB_SPACE: + case DSM_RC_ABORT_NO_MEMORY: + case DSM_RC_ABORT_NO_REPOSIT_SPACE: + case DSM_RC_REJECT_NO_RESOURCES: + case DSM_RC_REJECT_NO_MEMORY: + case DSM_RC_REJECT_NO_DB_SPACE: + case DSM_RC_REJECT_NO_LOG_SPACE: + *bsaRCP=BSA_RC_NO_RESOURCES; break; + + case DSM_RC_NULL_DATABLKPTR: + *bsaRCP=BSA_RC_NULL_DATABLKPTR; break; + + case DSM_RC_NULL_OBJNAME: + *bsaRCP=BSA_RC_NULL_OBJNAME; break; + + case DSM_RC_NULL_BUFPTR: + *bsaRCP=BSA_RC_NULL_POINTER; break; + + /* not supported - for DeleteAccessRule + case : + *bsaRCP=BSA_RC_NULL_RULEID; break; + */ + + case DSM_RC_HL_TOOLONG: + case DSM_RC_LL_TOOLONG: + *bsaRCP=BSA_RC_OBJECT_NAME_TOO_LONG; break; + + /* not supported - for DeletePolicyDomain + case : + *bsaRCP=BSA_RC_OBJECT_NOT_EMPTY; break; + */ + + /* same as NO_MATCH for DeleteObject + case : + *bsaRCP=BSA_RC_OBJECT_NOT_FOUND; break; + */ + + case DSM_RC_OBJINFO_TOOLONG: + *bsaRCP=BSA_RC_OBJINFO_TOO_LONG; break; + + /* same as BSA_RC_OBJECT_NAME_TOO_LONG + case : + *bsaRCP=BSA_RC_OBJNAME_TOO_LONG; break; + */ + + /* not supported - for CreatePolicySet, etc + case : + *bsaRCP=BSA_RC_OPERATION_NOT_AUTHORIZED; break; + */ + + case DSM_RC_OLDPW_REQD: + *bsaRCP=BSA_RC_OLDTOKEN_REQD; break; + + case DSM_RC_REJECT_VERIFIER_EXPIRED: + *bsaRCP=BSA_RC_TOKEN_EXPIRED; break; + + case DSM_RC_WILL_ABORT: + case DSM_RC_CHECK_REASON_CODE: + *bsaRCP=BSA_RC_TXN_ABORTED; break; + + case DSM_RC_UNMATCHED_QUOTE: + *bsaRCP=BSA_RC_UNMATCHED_QUOTE; break; + + /* not supported - for DeleteUser + case : + *bsaRCP=BSA_RC_USER_OWNS_OBJECT; break; + */ + + default: + { + /*========================================================= + No suitable match, so print message in log, if we still + have a handle. AFSdsmInit calls ApiCleanUp in certain error + situations. We lose the handle in those cases so check + for it. + =========================================================*/ + + char rcMsg[DSM_MAX_RC_MSG_LENGTH] ; + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + dsUint32_t dsmHandle; + + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + if (BSAHandle) + { + dsmHandle = BSAHandle; + AFSdsmRCMsg(dsmHandle,dsmRC,rcMsg) ; + strcat(rcMsg, "\n"); + sprintf(traceStr2, + "xlateRC - %s", rcMsg); + ourTrace(BSAHandle,TrFL, traceStr2); + strcpy(ourMessage, ourRCMsg(dsmRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + } + + *bsaRCP = ADSM_RC_ERROR; + } + } + + /*=== trace only if we have a valid handle ===*/ + if (dsmRC && BSAHandle) + { + sprintf(traceStr2, "xlateRC: TSM rc >%d< , BSA rc >%d<", dsmRC, *bsaRCP); + ourTrace(BSAHandle, TrFL, traceStr2); + } + return DSM_RC_OK ; +} + +void stdXOpenMsgMap(dsInt16_t rc, char *msg) +{ + switch(rc) + { + case ADSM_RC_ERROR: + strcpy(msg, "TSM rc error, see ADSM error log."); + case ADSM_RC_INVALID_NODE: + strcpy(msg, "BSAObjectOwner doesn't match value session Init."); + break; + + case ADSM_RC_INVALID_COPYTYPE: + strcpy(msg, "Invalid copy type."); + break; + + case ADSM_RC_INVALID_OBJTYPE: + strcpy(msg, "Invalid object type."); + break; + + case ADSM_RC_INVALID_STATUS: + strcpy(msg, "Invalid Object Status."); + break; + + case ADSM_RC_INVALID_ST_VER: + strcpy(msg, "Invalid object descriptor structure version."); + break; + + case ADSM_RC_OWNER_TOO_LONG: + strcpy(msg, "Object owner name too long."); + break; + + case ADSM_RC_PSWD_TOO_LONG: + strcpy(msg, "Client password too long."); + break; + + case ADSM_RC_PSWD_GEN: + strcpy(msg, "Password input required ."); + break; + + default: + strcpy(msg, "No message available"); + break; + } +} + +BSA_Int16 fillArchiveResp( +long BSAHandle, +ObjectDescriptor *BSAobjDescP, +qryRespArchiveData *respArchiveP +) +{ + XAPIObjInfo *xapiObjInfoP; + + strcpy(BSAobjDescP->Owner.appObjectOwner, respArchiveP->owner); + strcpy(BSAobjDescP->objName.objectSpaceName, respArchiveP->objName.fs); + + /*=== concatenate hl and ll for pathName ===*/ + strcpy(BSAobjDescP->objName.pathName, respArchiveP->objName.hl); + strcat(BSAobjDescP->objName.pathName, respArchiveP->objName.ll); + + BSAobjDescP->createTime.tm_year = respArchiveP->insDate.year-1900; + BSAobjDescP->createTime.tm_mon = respArchiveP->insDate.month-1; + BSAobjDescP->createTime.tm_mday = respArchiveP->insDate.day ; + BSAobjDescP->createTime.tm_hour = respArchiveP->insDate.hour ; + BSAobjDescP->createTime.tm_min = respArchiveP->insDate.minute ; + BSAobjDescP->createTime.tm_sec = respArchiveP->insDate.second ; + + BSAobjDescP->copyId.left = respArchiveP->objId.hi; + BSAobjDescP->copyId.right = respArchiveP->objId.lo; + + BSAobjDescP->restoreOrder.left = respArchiveP->restoreOrderExt.lo_hi; + BSAobjDescP->restoreOrder.right = respArchiveP->restoreOrderExt.lo_lo; + + strcpy(BSAobjDescP->lGName, respArchiveP->mcName) ; + + xapiObjInfoP = (XAPIObjInfo *)&(respArchiveP->objInfo); + BSAobjDescP->size.left = xapiObjInfoP->size.left; + BSAobjDescP->size.right= xapiObjInfoP->size.right; + strcpy(BSAobjDescP->resourceType, xapiObjInfoP->resourceType); + strcpy(BSAobjDescP->desc, xapiObjInfoP->partDesc); + strcpy(BSAobjDescP->objectInfo, xapiObjInfoP->partObjInfo); + + if (respArchiveP->objName.objType == DSM_OBJ_DIRECTORY) + BSAobjDescP->objectType = BSAObjectType_DIRECTORY; + else + BSAobjDescP->objectType = BSAObjectType_FILE; + /*=== future - type DATABASE ?? ===*/ + + BSAobjDescP->status = BSAObjectStatus_ACTIVE; + XOPENRETURN(BSAHandle, "fillArchiveResp", + BSA_RC_SUCCESS,__FILE__,__LINE__); +} + +BSA_Int16 fillBackupResp( +long BSAHandle, +ObjectDescriptor *BSAobjDescP, +qryRespBackupData *respBackupP +) +{ + XAPIObjInfo *xapiObjInfoP; + + strcpy(BSAobjDescP->Owner.appObjectOwner, respBackupP->owner); + strcpy(BSAobjDescP->objName.objectSpaceName, respBackupP->objName.fs); + + /*=== concatenate hl and ll for pathName ===*/ + strcpy(BSAobjDescP->objName.pathName, respBackupP->objName.hl); + strcat(BSAobjDescP->objName.pathName, respBackupP->objName.ll); + + BSAobjDescP->createTime.tm_year = respBackupP->insDate.year-1900; + BSAobjDescP->createTime.tm_mon = respBackupP->insDate.month-1; + BSAobjDescP->createTime.tm_mday = respBackupP->insDate.day ; + BSAobjDescP->createTime.tm_hour = respBackupP->insDate.hour ; + BSAobjDescP->createTime.tm_min = respBackupP->insDate.minute ; + BSAobjDescP->createTime.tm_sec = respBackupP->insDate.second ; + + BSAobjDescP->copyId.left = respBackupP->objId.hi; + BSAobjDescP->copyId.right = respBackupP->objId.lo; + + BSAobjDescP->restoreOrder.left = respBackupP->restoreOrderExt.lo_hi; + BSAobjDescP->restoreOrder.right = respBackupP->restoreOrderExt.lo_lo; + + strcpy(BSAobjDescP->lGName, respBackupP->mcName) ; + + xapiObjInfoP = (XAPIObjInfo *)&(respBackupP->objInfo); + BSAobjDescP->size.left = xapiObjInfoP->size.left; + BSAobjDescP->size.right= xapiObjInfoP->size.right; + strcpy(BSAobjDescP->resourceType, xapiObjInfoP->resourceType); + strcpy(BSAobjDescP->desc, xapiObjInfoP->partDesc); + strcpy(BSAobjDescP->objectInfo, xapiObjInfoP->partObjInfo); + + if (respBackupP->objName.objType == DSM_OBJ_DIRECTORY) + BSAobjDescP->objectType = BSAObjectType_DIRECTORY; + else + BSAobjDescP->objectType = BSAObjectType_FILE; + /*=== future - type DATABASE ?? ===*/ + + if (respBackupP->objState == DSM_ACTIVE) + BSAobjDescP->status = BSAObjectStatus_ACTIVE; + else + BSAobjDescP->status = BSAObjectStatus_INACTIVE; + /*=== ?? check for any other ===*/ + + XOPENRETURN(BSAHandle, "fillRBackupResp", + BSA_RC_SUCCESS,__FILE__,__LINE__); +} + + +afs_int32 dsm_MountLibrary() +{ +void * dynlib = NULL ; + +#ifdef DEBUG_BUTC + printf("dsm_MountLibrary : inside function. \n"); +#endif +#if defined(AFS_AIX_ENV) + dynlib = dlopen("/usr/lib/libApiDS.a(dsmapish.o)", RTLD_NOW | RTLD_LOCAL | RTLD_MEMBER); +#elif defined(AFS_SUN5_ENV) || defined(AFS_LINUX26_ENV) + dynlib = dlopen("/usr/lib/libApiDS.so", RTLD_NOW | RTLD_LOCAL); +#else + dynlib = NULL; +#endif + + if (dynlib == NULL) { + ELog(0,"dsm_MountLibrary: The dlopen call to load the libApiDS shared library failed\n"); + return(BUTX_NOLIBRARY); + } + +#ifdef DEBUG_BUTC + printf("dsm_MountLibrary : SUCCESS to Open the libApiDS shared library. \n"); +#endif +#if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_LINUX26_ENV) + AFSdsmBeginQuery = (dsInt16_t (*)( dsUint32_t dsmHandle, dsmQueryType queryType, dsmQueryBuff *queryBuffer)) dlsym((void *)dynlib, "dsmBeginQuery"); + AFSdsmGetNextQObj = (dsInt16_t (*)( dsUint32_t dsmHandle, DataBlk *dataBlkPtr))dlsym((void *)dynlib, "dsmGetNextQObj") ; + AFSdsmEndQuery = (dsInt16_t (*)( dsUint32_t dsmHandle))dlsym((void *)dynlib, "dsmEndQuery"); + AFSdsmRCMsg = (dsInt16_t (*)( dsUint32_t dsmHandle, dsInt16_t dsmRC, char *msg))dlsym((void *)dynlib, "dsmRCMsg"); + AFSdsmLogEventEx = (dsInt16_t (*)( dsUint32_t dsmHandle, dsmLogExIn_t *dsmLogExInP, dsmLogExOut_t *dsmLogExOutP))dlsym((void *)dynlib, "dsmLogEventEx"); + AFSdsmTrace = (dsInt16_t (*)( dsUint32_t dsmHandle, char * string ))dlsym((void *)dynlib, "dsmTrace"); + AFSdsmTerminate = (dsInt16_t (*)( dsUint32_t dsmHandle))dlsym((void *)dynlib, "dsmTerminate"); + AFSdsmSendData = (dsInt16_t (*)( dsUint32_t dsmHandle, DataBlk *dataBlkPtri))dlsym((void *)dynlib, "dsmSendData"); + AFSdsmBeginTxn = (dsInt16_t (*)( dsUint32_t dsmHandle))dlsym((void *)dynlib, "dsmBeginTxn"); + AFSdsmDeleteObj = (dsInt16_t (*)( dsUint32_t dsmHandle, dsmDelType delType, dsmDelInfo delInfo))dlsym((void *)dynlib, "dsmDeleteObj"); + AFSdsmEndTxn = (dsInt16_t (*)( dsUint32_t dsmHandle, dsUint8_t vote, dsUint16_t *reason))dlsym((void *)dynlib, "dsmEndTxn"); + AFSdsmQueryApiVersion = (void (*)( dsmApiVersion *apiVersionP))dlsym((void *)dynlib, "dsmQueryApiVersion"); + AFSdsmInit = (dsInt16_t (*)( dsUint32_t *dsmHandle, dsmApiVersion *dsmApiVersionP, char *clientNodeNameP, char *clientOwnerNameP, char *clientPasswordP, char *applicationType, char *configfile, char *options))dlsym((void *)dynlib, "dsmInit"); + AFSdsmQuerySessInfo = (dsInt16_t (*)( dsUint32_t dsmHandle, ApiSessInfo *SessInfoP))dlsym((void *)dynlib, "dsmQuerySessInfo"); + AFSdsmBeginGetData = (dsInt16_t (*)(dsUint32_t dsmHandle, dsBool_t mountWait, dsmGetType getType, dsmGetList *dsmGetObjListP))dlsym((void *)dynlib, "dsmBeginGetData"); + AFSdsmGetObj = (dsInt16_t (*)( dsUint32_t dsmHandle, ObjID *objIdP, DataBlk *dataBlkPtr))dlsym((void *)dynlib, "dsmGetObj"); + AFSdsmEndGetObj = (dsInt16_t (*)( dsUint32_t dsmHandle))dlsym((void *)dynlib, "dsmEndGetObj"); + AFSdsmEndGetData = (dsInt16_t (*)( dsUint32_t dsmHandle))dlsym((void *)dynlib, "dsmEndGetData"); + AFSdsmGetData = (dsInt16_t (*)( dsUint32_t dsmHandle, DataBlk *dataBlkPtr))dlsym((void *)dynlib, "dsmGetData"); + AFSdsmEndSendObj = (dsInt16_t (*)( dsUint32_t dsmHandle))dlsym((void *)dynlib, "dsmEndSendObj"); + AFSdsmRegisterFS = (dsInt16_t (*)( dsUint32_t dsmHandle, regFSData *regFilespaceP))dlsym((void *)dynlib, "dsmRegisterFS"); + AFSdsmBindMC = (dsInt16_t (*)( dsUint32_t dsmHandle, dsmObjName *objNameP, dsmSendType sendType, mcBindKey *mcBindKeyP))dlsym((void *)dynlib, "dsmBindMC"); + AFSdsmSendObj = (dsInt16_t (*)( dsUint32_t dsmHandle, dsmSendType sendType, void *sendBuff, dsmObjName *objNameP, ObjAttr *objAttrPtr, DataBlk *dataBlkPtr))dlsym((void *)dynlib, "dsmSendObj"); + AFSdsmChangePW = (dsInt16_t (*)( dsUint32_t dsmHandle, char *oldPW, char *newPW))dlsym((void *)dynlib, "dsmChangePW"); + + + if ( !AFSdsmBeginQuery || !AFSdsmGetNextQObj || !AFSdsmEndQuery || + !AFSdsmRCMsg || !AFSdsmLogEventEx || !AFSdsmTrace || + !AFSdsmTerminate || !AFSdsmEndGetObj || !AFSdsmSendData || + !AFSdsmBeginTxn || !AFSdsmDeleteObj || !AFSdsmEndGetData || + !AFSdsmEndTxn || !AFSdsmQueryApiVersion || !AFSdsmInit || + !AFSdsmGetData || !AFSdsmQuerySessInfo || !AFSdsmBeginGetData || + !AFSdsmGetObj || !AFSdsmEndSendObj || !AFSdsmRegisterFS || + !AFSdsmBindMC || !AFSdsmSendObj || !AFSdsmChangePW ) + { + ELog(0,"dsm_MountLibrary: The dlopen call to load the TSM shared library failed\n"); + return(BUTX_NOLIBRARY); + } +#ifdef DEBUG_BUTC + printf("dsm_MountLibrary : All TSM function pointers initialized. \n"); +#endif + +#endif + dsm_init = 1 ; +#ifdef DEBUG_BUTC + printf("dsm_MountLibrary : leaving function. \n"); +#endif + return 0 ; + +} + +BSA_Int16 BSAInit( long *BSAHandleP, + SecurityToken *clientPasswordP, + ObjectOwner *objectOwnerP, + char **envP ) +{ + dsInt16_t rc = 0; + dsInt16_t saverc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; /* use diff field when talking to base + code in case either format changes */ + dsmApiVersion xapiHdrVer; /* Xopen API build version */ + dsmApiVersion apiLibVer; /* Xopen API Libary version */ + + dsUint32_t xapiVersion, apiVersion; + envSetUp dsmEnvSetUp; + + /*================================================================== + Today the BSA constants have the same values as the DSM constants. + If this changes, use strncpy. + =================================================================*/ + + char rcmsg[DSM_MAX_RC_MSG_LENGTH + 1]; + char dsmNode[DSM_MAX_NODE_LENGTH]; + char dsmOwner[DSM_MAX_OWNER_LENGTH]; + char dsmPswd[DSM_MAX_VERIFIER_LENGTH]; + char *dsmNodeP; + char *dsmOwnerP; + char *dsmPswdP; + char options[DSM_MAX_RC_MSG_LENGTH]; + char *optionP = NULL; + char TDPLibName[BSA_MAX_DESC]; + char TDPILibName[BSA_MAX_DESC]; + int i=0; + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + char rcMsg[DSM_MAX_RC_MSG_LENGTH + 1]; + + dsmHandle = 0; + *BSAHandleP = 0; + +#ifdef DEBUG_BUTC + printf("BSAInit : inside function. \n"); +#endif + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(rcMsg, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + /*================================================================== + Trace won't work before AFSdsmInit, moved to after call to AFSdsmInit + The XOpen library is built by statically linking with the API and + client common modules. So, the version checking is unnecessary. + We'll fill in the value anyway for consistency. + ==================================================================*/ + memset(&xapiHdrVer,0x00,sizeof(dsmApiVersion)); + memset(&apiLibVer,0x00,sizeof(dsmApiVersion)); + memset(&dsmEnvSetUp,0x00,sizeof(envSetUp)); + + AFSdsmQueryApiVersion(&apiLibVer); + + xapiHdrVer.version = DSM_API_VERSION; /* Set the applications */ + xapiHdrVer.release = DSM_API_RELEASE; /* compile time version. */ + xapiHdrVer.level = DSM_API_LEVEL; /* version */ + + xapiVersion = (1000 * DSM_API_VERSION) + (100 * DSM_API_RELEASE) + + DSM_API_LEVEL; + + apiVersion = (1000 * apiLibVer.version) + (100 * apiLibVer.release) + + apiLibVer.level; + + /* check for compatibility problems */ + if (apiVersion < xapiVersion) + return ADSM_RC_ERROR; + + /*==== Init global area ===*/ + + memset(&xopenGbl,0x00, sizeof(xGlobal)); /* Zero out block. */ + + memset(dsmNode,0x00,DSM_MAX_NODE_LENGTH); + memset(dsmOwner,0x00,DSM_MAX_OWNER_LENGTH); + memset(dsmPswd,0x00,DSM_MAX_VERIFIER_LENGTH); + memset(options,0x00,DSM_MAX_RC_MSG_LENGTH); + memset(TDPLibName,0x00,BSA_MAX_DESC); + memset(TDPILibName,0x00,BSA_MAX_DESC); + + memset(rcmsg, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + + /*=== Validate the inputs ===*/ + + if (objectOwnerP) + { + if (strlen(objectOwnerP->bsaObjectOwner) > BSA_MAX_BSAOBJECT_OWNER) + { + bsaRC = ADSM_RC_OWNER_TOO_LONG; + return(bsaRC); + } + + if (strlen(objectOwnerP->appObjectOwner) > BSA_MAX_APPOBJECT_OWNER) + { + bsaRC = ADSM_RC_OWNER_TOO_LONG; + return(bsaRC); + } + + if (objectOwnerP->bsaObjectOwner[0] == '\0') /* empty string */ + dsmNodeP = NULL; + else + { + strcpy(dsmNode, objectOwnerP->bsaObjectOwner); + dsmNodeP = dsmNode; + } + + if (objectOwnerP->appObjectOwner[0] == '\0') /* empty string */ + dsmOwnerP = NULL; + else + { + strcpy(dsmOwner, objectOwnerP->appObjectOwner); + dsmOwnerP = dsmOwner; + } + } + else + { + dsmNodeP = NULL; + dsmOwnerP = NULL; + } + + if (clientPasswordP != NULL) + { + if (strlen((const char *)clientPasswordP) > BSA_MAX_TOKEN_SIZE) + { + bsaRC = ADSM_RC_PSWD_TOO_LONG; + return(bsaRC); + } + + strcpy(dsmPswd, (const char *)clientPasswordP); + dsmPswdP = dsmPswd; + } + else + dsmPswdP = NULL; + { + while ((envP[i] != NULL) && (envP[i] != '\0')) + { + strcat(options, "-"); + strcat(options, envP[i]); + if ((envP[i+1] != NULL) && (envP[i+1] != '\0')) + strcat(options, " "); + i++; + } + + if (options[0] == '\0') /* empty string */ + optionP = NULL; + else + optionP = options; + + rc = AFSdsmInit(&dsmHandle, /* On return contains session handle. */ + &xapiHdrVer, /* Version of the API we are using. */ + dsmNodeP, /* node name */ + dsmOwnerP, /* owner name */ + dsmPswdP, /* password */ + APPLTYPE, /* Name of our node type. */ + NULL, /* no API config file name */ + optionP); /* option string */ + } + + if (rc == DSM_RC_OK) + { + /*=== now that AFSdsmInit issued, we can trace ===*/ + sprintf(traceStr2, + "BSAInit: original bsaOwner=%s, appOwner=%s, token=%s, Appl Type=%s, options=%s.", + dsmNode, dsmOwner, dsmPswd, APPLTYPE, options); + ourTrace(dsmHandle, TrFL, traceStr2); + { + strcpy(TDPLibName, TDP_LIBNAME); + sprintf(traceStr2, + "BSAInit: Using TSM Native API library : %s", TDPLibName); + ourTrace(dsmHandle, TrFL, traceStr2); + } + } + + + /*================================================================= + If the password expired, continue initialization so the session + can continue. + + Save the 'password expired' rc away, so we can return it to the + caller. + + The application will be responsible for issuing a BSAChangeToken() + to update the password. + =================================================================*/ + if (rc == DSM_RC_REJECT_VERIFIER_EXPIRED) + { + /*=== don't return yet - init global so session can continue ===*/ + + saverc = rc; + rc = DSM_RC_OK; + } + else + if ((rc == DSM_RC_NO_OWNER_REQD) || + (rc == DSM_RC_NO_NODE_REQD)) /* pswd=generate */ + { + AFSdsmTerminate(dsmHandle); + bsaRC = ADSM_RC_PSWD_GEN; + return (bsaRC); + } + + + /*================================================================== + If we ran into any problems so far, rc will be non-zero or 'true'. + + This is not true for password expired, since we reset rc to zero + in that case. We'll have to check for that later so we return + the 'password expired' indication to the caller. + ==================================================================*/ + + if (rc) + { + AFSdsmRCMsg(dsmHandle, rc, rcmsg); + sprintf(traceStr2, "BSAInit(AFSdsmInit): Messages - %s ", rcmsg); + ourTrace(dsmHandle, TrFL, traceStr2); + strcpy(ourMessage, ourRCMsg(rc, errPrefix)); + ourLogEvent_Ex(dsmHandle, logLocal, ourMessage, errPrefix, logSevError); + xlateRC(*BSAHandleP, rc, &bsaRC); /* BSAHandle still 0, but not used */ + AFSdsmTerminate(dsmHandle); /* clean up memory blocks */ + return (bsaRC); + } + + + { + char msg[256]; /* format string and watch for NULLs */ + + strcpy(msg, "BSAInit for node="); + + if (objectOwnerP) + { + if (dsmNodeP) + strcat(msg, dsmNodeP); + else + strcat(msg, ""); + } + else + strcat(msg, ""); + + strcat(msg, ", owner="); + + if (objectOwnerP) + { + if (dsmOwnerP) + strcat(msg, dsmOwnerP); + else + strcat(msg, ""); + } + else + strcat(msg, ""); + + strcat(msg, ".\n"); + + sprintf(traceStr, msg); + } + + *BSAHandleP = (long)dsmHandle; + + + /*================================================================= + For password expired processing the application is responsible for + issuing BSAChangeToken() to update the password, when they see the + 'expired password' return code. + + The BSAChangeToken() command will issue the AFSdsmQuerySessInfo() + call, so don't issue it here. + =================================================================*/ + + if (!saverc) /* don't call this if we got pswd expire */ + { + /*=== now query session info to populate the global structure ===*/ + + xopenGbl.dsmSessInfo.stVersion = ApiSessInfoVersion; + rc = AFSdsmQuerySessInfo(dsmHandle, /* Session handle */ + &xopenGbl.dsmSessInfo); /* Output struct */ + + if (rc) + { + sprintf(traceStr2, "BSAInit(AFSdsmQuerySessInfo): error rc = %d", rc); + ourTrace(dsmHandle, TrFL, traceStr2); + AFSdsmTerminate(dsmHandle); + *BSAHandleP = 0; + } + else + { + sprintf(traceStr2, "BSAInit: Actual node=%s, actual DSM owner=%s, servername=%s.", + xopenGbl.dsmSessInfo.id, xopenGbl.dsmSessInfo.owner, + xopenGbl.dsmSessInfo.adsmServerName); + ourTrace(dsmHandle, TrFL, traceStr2); + } + } + else + { + /*============================================================ + Indicate in the session flags that we encountered a password + expiration condition. The application will know that this + happened via the return code. + ===========================================================*/ + + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_PSWD_EXPIRE); + } + + /*=== Save bsaObjectOwner (node name) value passed on Init ===*/ + + if (dsmNodeP) + strcpy(xopenGbl.bsaObjectOwner, dsmNodeP); + + /*================================================================ + Check to see if we saved away the 'expired password' return code. + if so, return it to the caller. + ================================================================*/ + + if (saverc) + rc = saverc; + + xlateRC(*BSAHandleP, rc, &bsaRC); +#ifdef DEBUG_BUTC + printf("BSAInit : Leaving Function. \n"); +#endif + return (bsaRC); +} + +BSA_Int16 BSATerminate( + long BSAHandle +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + sprintf(traceStr2, "BSATerminate ENTRY: BSAHandle is %d.", + BSAHandle); + ourTrace(dsmHandle, TrFL, traceStr2); + + rc = AFSdsmTerminate(dsmHandle); + dsmHandle = 0; + xlateRC(dsmHandle, rc, &bsaRC); + + return (bsaRC); + +} + +BSA_Int16 BSAChangeToken( + long BSAHandle, + SecurityToken *oldTokenP, + SecurityToken *newTokenP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + + sprintf(traceStr2, "BSAChangeToken ENTRY: BSAHandle:%d old:>%s< new:>%s<", + BSAHandle,oldTokenP,newTokenP); + ourTrace(dsmHandle, TrFL, traceStr2); + + rc = AFSdsmChangePW(dsmHandle, (char *)oldTokenP, (char *)newTokenP); + + if (rc) + { + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle,"BSAChangeToken(AFSdsmChangePW)", + bsaRC,__FILE__,__LINE__); + } + + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_PSWD_EXPIRE); /* set off */ + + /*=== now query session info to populate the global structure ===*/ + + xopenGbl.dsmSessInfo.stVersion = ApiSessInfoVersion; + rc = AFSdsmQuerySessInfo(dsmHandle, /* Our session handle */ + &xopenGbl.dsmSessInfo); /* Output structure. */ + if (rc) + { + /*=== appl should call Terminate ===*/ + sprintf(traceStr2, "BSAChangeToken(AFSdsmQuerySessInfo): error rc = %d", rc); + ourTrace(BSAHandle, TrFL, traceStr2); + } + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle,"BSAChangeToken", + bsaRC,__FILE__,__LINE__); +} + +BSA_Int16 BSASetEnvironment( + long BSAHandle, + char **envP +) +{ + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + sprintf(traceStr2, "BSASetEnvironment ENTRY: BSAHandle:%d envP:>%p< ", + BSAHandle,envP); + ourTrace(BSAHandle, TrFL, traceStr2); + XOPENRETURN(BSAHandle,"BSASetEnvironment", + BSA_RC_BAD_CALL_SEQUENCE,__FILE__,__LINE__); +} + +BSA_Int16 BSAGetEnvironment( + long BSAHandle, + ObjectOwner *objOwnerP, + char **envP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + char envString[ADSM_ENV_STRS][BSA_MAX_DESC]; + char maxObjStr[6]; /* conversion field. value range is 16-256 */ + dsUint32_t maxObjNum; + dsInt16_t i, j; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + for (i=0; i%p<.", + BSAHandle, + objOwnerP->bsaObjectOwner, + objOwnerP->appObjectOwner, + envP); + ourTrace(BSAHandle, TrFL, traceStr2); + + dsmHandle = BSAHandle; + + /*=============================================================== + check if BSAInit has been done for now we have only one possible + handle value - change in future + ==============================================================*/ + if ((dsmHandle != FIRST_HANDLE) || + (xopenGbl.dsmSessInfo.stVersion != ApiSessInfoVersion)) + XOPENRETURN(BSAHandle,"BSAGetEnvironment", + BSA_RC_BAD_CALL_SEQUENCE, __FILE__,__LINE__); + + if (objOwnerP) + { + strcpy(objOwnerP->bsaObjectOwner, xopenGbl.dsmSessInfo.id); + strcpy(objOwnerP->appObjectOwner, xopenGbl.dsmSessInfo.owner); + } + else + XOPENRETURN(BSAHandle,"BSAGetEnvironment", + BSA_RC_NULL_POINTER, __FILE__,__LINE__); + + rc = AFSdsmQuerySessInfo(dsmHandle, /* Session Handle */ + &xopenGbl.dsmSessInfo); /* Output struct */ + + if (rc) + { + sprintf(traceStr2, "BSAGetEnvironment(AFSdsmQuerySessInfo): error rc = %d", rc); + ourTrace(dsmHandle, TrFL, traceStr2); + AFSdsmTerminate(dsmHandle); + /* *BSAHandleP = 0; */ + } + else + { + sprintf(traceStr2, "BSAGetEnvironment: Actual node=%s, actual DSM owner=%s, ServerName=%s.", + xopenGbl.dsmSessInfo.id, xopenGbl.dsmSessInfo.owner, xopenGbl.dsmSessInfo.adsmServerName); + ourTrace(dsmHandle, TrFL, traceStr2); + } + + strcpy(envString[0],"TSMSRVR="); + strcat(envString[0],xopenGbl.dsmSessInfo.serverHost); + + strcpy(envString[1],"TSMMAXOBJ="); + maxObjNum = xopenGbl.dsmSessInfo.maxObjPerTxn; /* convert to 32 bit */ + sprintf(maxObjStr,"%lu", maxObjNum ); + strcat(envString[1], maxObjStr); + + strcpy(envString[2], "TSMSRVRSTANZA="); + strcat(envString[2], xopenGbl.dsmSessInfo.adsmServerName); + + sprintf(traceStr2, "BSAGetEnvironment Value : TSM Server '%s', TSM Max Object '%s',TSM Server STANZA '%s'", + envString[0], envString[1], envString[2]); + ourTrace(BSAHandle, TrFL, traceStr2); + + for (i=0; i< ADSM_ENV_STRS; i++) { + if ( *envP == NULL ) { /* watch for NULL pointers */ + /* Allocating memory for *envP.*/ + *envP = (char *) malloc(sizeof(char) * BSA_MAX_DESC +1); + + /* copy the content of envString[i] to *envP. */ + strcpy(*envP,envString[i]); + envP++; + } + } + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle,"BSAGetEnvironment", + bsaRC,__FILE__,__LINE__) +} + +BSA_Int16 BSABeginTxn( + long BSAHandle +) +{ + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + sprintf(traceStr2, "BSABeginTxn ENTRY: BSAHandle:%d", BSAHandle); + ourTrace(BSAHandle, TrFL, traceStr2); + /*======================================================== + don't actually issue BeginTxn yet, because we will do our + own for Get and Query + ========================================================*/ + + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_IN_BSA_TXN); /* set on */ + XOPENRETURN(BSAHandle, "BSABeginTxn", + BSA_RC_SUCCESS,__FILE__,__LINE__); +} + +BSA_Int16 BSAEndTxn( + long BSAHandle, + Vote vote +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + dsUint8_t dsmVote; + dsUint16_t reason ; + char rsMsg[DSM_MAX_RC_MSG_LENGTH + 1]; + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(rsMsg, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + sprintf(traceStr2, "BSAEndTxn ENTRY: BSAHandle:%d Vote:>%d<", BSAHandle, vote); + ourTrace(BSAHandle, TrFL, traceStr2); + + dsmHandle = BSAHandle; + + if (xopenGbl.sessFlags & FL_IN_DSM_TXN) + { + if (vote == BSAVote_COMMIT) + dsmVote = DSM_VOTE_COMMIT; + else + if (vote == BSAVote_ABORT) + dsmVote = DSM_VOTE_ABORT; + else + { + sprintf(traceStr2, "BSAEndTxn: invalid vote (%d)", vote); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_INVALID_VOTE; + XOPENRETURN(BSAHandle, "BSAEndTxn",bsaRC,__FILE__,__LINE__); + } + + + sprintf(traceStr2, "BSAEndTxn: issue AFSdsmEndTxn, vote=%s", + dsmVote == DSM_VOTE_COMMIT ? "COMMIT" : "ABORT"); + ourTrace(BSAHandle,TrFL, traceStr2); + /*=========================================================== + check if this EndTxn call was proceeded by a Send call which + returned WILL_ABORT. If so, make sure the vote is COMMIT + so we will get the server's reason code. + ===========================================================*/ + if (xopenGbl.sessFlags & FL_RC_WILL_ABORT) + { + dsmVote = DSM_VOTE_COMMIT; + + sprintf(traceStr2, "BSAEndTxn: sproceeded by RC_WILL_ABORT, so use vote=COMMIT"); + ourTrace(BSAHandle,TrFL, traceStr2); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_RC_WILL_ABORT); /* set off*/ + } + + rc = AFSdsmEndTxn(dsmHandle, dsmVote, &reason); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_DSM_TXN); /* set off */ + + /*==================================================== + if the caller wanted to Abort, then return rc=OK, not + our usual 2302 and reason 3 + =====================================================*/ + if ((dsmVote == DSM_VOTE_ABORT) && + (rc == DSM_RC_CHECK_REASON_CODE) && + (reason == DSM_RC_ABORT_BY_CLIENT)) + + rc = DSM_RC_OK; + + if (rc) + { + sprintf(traceStr2, "BSAEndTxn(AFSdsmEndTxn) error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + + AFSdsmRCMsg(BSAHandle, reason, rsMsg); + sprintf(traceStr2, "BSAEndTxn: reason code = %d, Message='%s'", reason, rsMsg); + ourTrace(BSAHandle,TrFL, traceStr2); + + strcpy(ourMessage, ourRCMsg(reason, errPrefix)); + ourLogEvent_Ex(BSAHandle,logBoth, ourMessage, errPrefix, logSevError); + } + xlateRC(BSAHandle, rc, &bsaRC); + + if (rc == DSM_RC_CHECK_REASON_CODE) /* return reason code instead */ + { + xlateRC(BSAHandle, reason, &bsaRC); + } + } + + /*=== check if Query was terminated ===*/ + if (xopenGbl.sessFlags & FL_IN_BSA_QRY) + { + AFSdsmEndQuery(dsmHandle); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_QRY); /* set off */ + } + + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_TXN); /* set off */ + XOPENRETURN(BSAHandle, "BSAEndTxn", + bsaRC,__FILE__,__LINE__); +} + +void BSAQueryApiVersion( +ApiVersion *BSAapiVerP +) + +{ + /*=============================================================== + Don't actually call the base QueryApiVersion call. + Use the defines from custom.h since this is what the application + sees in the header file. The constants should be the same, + but may get out of sync occasionally. + ===============================================================*/ + BSAapiVerP->version = BSA_API_VERSION; + BSAapiVerP->release = BSA_API_RELEASE; + BSAapiVerP->level = BSA_API_LEVEL; + return; +} + +BSA_Int16 BSAQueryObject( +long BSAHandle, +QueryDescriptor *BSAqryDescP, +ObjectDescriptor *BSAobjDescP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + dsmObjName objName; + dsUint8_t dsmObjType; + dsmQueryType query_type; + dsmQueryBuff *query_buff; + DataBlk qData; + qryArchiveData archiveData; + qryRespArchiveData respArchive; + qryBackupData backupData; + qryRespBackupData respBackup; + BSAObjectOwner upperNode; /* upper cased node name */ + + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + dsmHandle = BSAHandle; + + memset(&backupData, 0x00, sizeof(qryBackupData)); + + sprintf(traceStr2, "BSAQueryObject ENTRY: BSAHandle:%d ObjOwner(qryDesc):'%s' appOwner(qryDesc):'%s' \n ObjName(qryDesc):'%.*s%.*s' \n copyType:%d ObjectType:%d status:%d ", + BSAHandle, + BSAqryDescP->owner.bsaObjectOwner, + BSAqryDescP->owner.appObjectOwner, + 100,BSAqryDescP->objName.objectSpaceName, + 100,BSAqryDescP->objName.pathName, + BSAqryDescP->copyType, + BSAqryDescP->objectType, + BSAqryDescP->status); + ourTrace(BSAHandle, TrFL, traceStr2); + + /*===================================================== + init objDesc area to 0's before we start to erase any + garbage that might be there. + =====================================================*/ + memset(BSAobjDescP, 0x00, sizeof(ObjectDescriptor)); + + /*=== init global look ahead pointer to NULL ===*/ + if (xopenGbl.nextQryP != NULL) + { + dsFree(xopenGbl.nextQryP); + xopenGbl.nextQryP = NULL; + } + + /*========================================================= + if the node name is different - we won't query it compare + both the value passed on the BSAInit and the final value + used for the session (which may be different for Generate). + =========================================================*/ + strcpy(upperNode, BSAqryDescP->owner.bsaObjectOwner); + StrUpper(upperNode); + if ((strcmp(upperNode, xopenGbl.dsmSessInfo.id)) && + (strcmp(BSAqryDescP->owner.bsaObjectOwner, xopenGbl.bsaObjectOwner))) + { + sprintf(traceStr2, + "BSAQueryObject: BSAObjectOwner(%s) doesn't match value for session(%s).", upperNode, xopenGbl.dsmSessInfo.id); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_NODE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + + /*===================================================== + currently BSA_MAX_OSNAME = DSM_MAX_FSNAME_LENGTH + if this changes, use strncpy + ====================================================*/ + if (strlen(BSAqryDescP->objName.objectSpaceName) > BSA_MAX_OSNAME) + { + sprintf(traceStr2, "BSAQueryObject: objectSpaceName too long (%d).", + strlen(BSAqryDescP->objName.objectSpaceName)); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_OBJNAME_TOO_LONG; + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + /*================================================================= + the entire pathname gets copied into hl during parsing, so check + for that max len as well. For now these are the same value. + ================================================================*/ + if (strlen(BSAqryDescP->objName.pathName) > + min(DSM_MAX_HL_LENGTH, BSA_MAX_PATHNAME)) + { + sprintf(traceStr2, "BSAQueryObject: pathName too long (%d)", + strlen(BSAqryDescP->objName.pathName)); + ourTrace(BSAHandle, TrFL, traceStr2); + bsaRC = BSA_RC_OBJNAME_TOO_LONG; + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + if ((BSAqryDescP->objectType == BSAObjectType_FILE) || + (BSAqryDescP->objectType == BSAObjectType_DATABASE)) + dsmObjType = DSM_OBJ_FILE; + else + if (BSAqryDescP->objectType == BSAObjectType_DIRECTORY) + dsmObjType = DSM_OBJ_DIRECTORY; + else + if (BSAqryDescP->objectType == BSAObjectType_ANY) + dsmObjType = DSM_OBJ_ANY_TYPE; + else + { + sprintf(traceStr2, + "BSAQueryObject: invalid objectType (%d)", BSAqryDescP->objectType); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_OBJTYPE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + + if (!(xopenGbl.sessFlags & FL_IN_BSA_TXN)) + { + sprintf(traceStr2, "BSAQueryObject: issued without BSABeginTxn"); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_BAD_CALL_SEQUENCE; + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + + /* store object name in ADSM structure */ + strcpy(objName.fs,BSAqryDescP->objName.objectSpaceName) ; + + if (!strcmp(BSAqryDescP->objName.pathName, "/*")) /* if they use a wildcard */ + { /* we need to use a wild card on both hl and ll since the path gets split */ + strcpy(objName.hl, "*"); /* don't include delimiter in case there is + no hl */ + strcpy(objName.ll, "/*"); + } + else + xparsePath(BSAHandle, BSAqryDescP->objName.pathName, objName.hl, objName.ll); + + objName.objType = dsmObjType ; + + /*=== save copy type for GetNextQuery call later ===*/ + xopenGbl.copyType = BSAqryDescP->copyType; + + if (BSAqryDescP->copyType == BSACopyType_ARCHIVE) + { + if (strlen(BSAqryDescP->desc) > ADSM_MAX_DESC) + { + + sprintf(traceStr2, "BSAQueryObject: description longer than ADSM max (%d). ", strlen(BSAqryDescP->desc)); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_DESC_TOO_LONG; + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + + archiveData.stVersion = qryArchiveDataVersion; + archiveData.objName = &objName; + archiveData.owner = (char *)&BSAqryDescP->owner.appObjectOwner; + + /*================================================================= + in the tm structure the month count starts with 0 and year is + the value since 1900. + Adjust the year value only if it isn't one of the boundary values + =================================================================*/ + + archiveData.insDateLowerBound.year = BSAqryDescP->createTimeLB.tm_year; + if (archiveData.insDateLowerBound.year != ADSM_LOWEST_BOUND) + archiveData.insDateLowerBound.year += 1900; + archiveData.insDateLowerBound.month = BSAqryDescP->createTimeLB.tm_mon+1; + archiveData.insDateLowerBound.day = BSAqryDescP->createTimeLB.tm_mday; + archiveData.insDateLowerBound.hour = BSAqryDescP->createTimeLB.tm_hour; + archiveData.insDateLowerBound.minute = BSAqryDescP->createTimeLB.tm_min; + archiveData.insDateLowerBound.second = BSAqryDescP->createTimeLB.tm_sec; + + archiveData.insDateUpperBound.year = BSAqryDescP->createTimeUB.tm_year; + if (archiveData.insDateUpperBound.year != ADSM_HIGHEST_BOUND) + archiveData.insDateUpperBound.year += 1900; + archiveData.insDateUpperBound.month = BSAqryDescP->createTimeUB.tm_mon+1; + archiveData.insDateUpperBound.day = BSAqryDescP->createTimeUB.tm_mday; + archiveData.insDateUpperBound.hour = BSAqryDescP->createTimeUB.tm_hour; + archiveData.insDateUpperBound.minute = BSAqryDescP->createTimeUB.tm_min; + archiveData.insDateUpperBound.second = BSAqryDescP->createTimeUB.tm_sec; + + archiveData.expDateLowerBound.year = BSAqryDescP->expireTimeLB.tm_year; + if (archiveData.expDateLowerBound.year != ADSM_LOWEST_BOUND) + archiveData.expDateLowerBound.year += 1900; + archiveData.expDateLowerBound.month = BSAqryDescP->expireTimeLB.tm_mon+1; + archiveData.expDateLowerBound.day = BSAqryDescP->expireTimeLB.tm_mday; + archiveData.expDateLowerBound.hour = BSAqryDescP->expireTimeLB.tm_hour; + archiveData.expDateLowerBound.minute = BSAqryDescP->expireTimeLB.tm_min; + archiveData.expDateLowerBound.second = BSAqryDescP->expireTimeLB.tm_sec; + + archiveData.expDateUpperBound.year = BSAqryDescP->expireTimeUB.tm_year; + if (archiveData.expDateUpperBound.year != ADSM_HIGHEST_BOUND) + archiveData.expDateUpperBound.year += 1900; + archiveData.expDateUpperBound.month = BSAqryDescP->expireTimeUB.tm_mon+1; + archiveData.expDateUpperBound.day = BSAqryDescP->expireTimeUB.tm_mday; + archiveData.expDateUpperBound.hour = BSAqryDescP->expireTimeUB.tm_hour; + archiveData.expDateUpperBound.minute = BSAqryDescP->expireTimeUB.tm_min; + archiveData.expDateUpperBound.second = BSAqryDescP->expireTimeUB.tm_sec; + + archiveData.descr = (char *)&BSAqryDescP->desc; + query_type = qtArchive; + query_buff = (dsmQueryBuff *)&archiveData; + + qData.stVersion = DataBlkVersion; + qData.bufferLen = sizeof(qryRespArchiveData); + qData.bufferPtr = (char *)&respArchive; + respArchive.stVersion = qryRespArchiveDataVersion; + } + else + if (BSAqryDescP->copyType == BSACopyType_BACKUP) + { + if (BSAqryDescP->status == BSAObjectStatus_ACTIVE) + backupData.objState = DSM_ACTIVE; + else + if (BSAqryDescP->status == BSAObjectStatus_INACTIVE) + backupData.objState = DSM_INACTIVE; + else + if (BSAqryDescP->status == BSAObjectStatus_ANY) + backupData.objState = DSM_ANY_MATCH; + else + { + sprintf(traceStr2, + "BSAQueryObject: invalid status (%d)", + BSAqryDescP->status); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_STATUS; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + + backupData.stVersion = qryBackupDataVersion; + backupData.objName = &objName; + backupData.owner = (char *)&BSAqryDescP->owner.appObjectOwner; + + query_type = qtBackup; + query_buff = (dsmQueryBuff *)&backupData; + + qData.stVersion = DataBlkVersion; + qData.bufferLen = sizeof(qryRespBackupData); + qData.bufferPtr = (char *)&respBackup; + respBackup.stVersion = qryRespBackupDataVersion;; + } + else + { + sprintf(traceStr2, + "BSAQueryObject: invalid copyType (%d)", + BSAqryDescP->copyType); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_COPYTYPE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC,__FILE__,__LINE__); + } + + /*=== now set flag for query ===*/ + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_IN_BSA_QRY); /* set on */ + + if ((rc = AFSdsmBeginQuery(dsmHandle,query_type,query_buff))) + { + + sprintf(traceStr2, "BSAQueryObject(AFSdsmBeginQuery) error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_QRY); /* set off */ + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSAQueryObject(AFSdsmBeginQuery)", + bsaRC,__FILE__,__LINE__); + } + + rc = AFSdsmGetNextQObj(dsmHandle,&qData); + if (((rc == DSM_RC_OK) || (rc == DSM_RC_MORE_DATA)) && qData.numBytes) + { + BSAobjDescP->version = ObjectDescriptorVersion; + strcpy(BSAobjDescP->Owner.bsaObjectOwner, xopenGbl.dsmSessInfo.id); + BSAobjDescP->copyType = BSAqryDescP->copyType; + strcpy(BSAobjDescP->cGName, "\0"); /* no copy group name returned */ + + if (BSAqryDescP->copyType == BSACopyType_ARCHIVE) + { + fillArchiveResp(dsmHandle, BSAobjDescP, &respArchive); + } + else /* backup */ + { + fillBackupResp(dsmHandle, BSAobjDescP, &respBackup); + } + /*=== look ahead and see if there is more or if this is really done ===*/ + rc = AFSdsmGetNextQObj(dsmHandle,&qData); + if (( (rc == DSM_RC_OK) || (rc == DSM_RC_MORE_DATA)) && qData.numBytes) + { /*=== save the response we just got for later call ===*/ + if (BSAqryDescP->copyType == BSACopyType_ARCHIVE) + { + if (!(xopenGbl.nextQryP = (char *)dsMalloc(sizeof(qryRespArchiveData)))) + { + + sprintf(traceStr2, "BSAQueryObject: no memory for look ahead buffer"); + ourTrace(BSAHandle,TrFL, traceStr2); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_QRY); /* set off */ + bsaRC = BSA_RC_NO_RESOURCES; + XOPENRETURN(BSAHandle, "BSAQueryObject(AFSdsmGetNextQObj)", + bsaRC,__FILE__,__LINE__); + } + memcpy(xopenGbl.nextQryP, &respArchive, sizeof(qryRespArchiveData)); + } + else + { + if (!(xopenGbl.nextQryP = (char *)dsMalloc(sizeof(qryRespBackupData)))) + { + + sprintf(traceStr2, "BSAQueryObject: no memory for look ahead buffer"); + ourTrace(BSAHandle,TrFL, traceStr2); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_QRY); /* set off */ + bsaRC = BSA_RC_NO_RESOURCES; + XOPENRETURN(BSAHandle, "BSAQueryObject(AFSdsmGetNextQObj)", + bsaRC,__FILE__,__LINE__); + + } + memcpy(xopenGbl.nextQryP, &respBackup, sizeof(qryRespBackupData)); + } + } + else + { + + sprintf(traceStr2, "BSAQueryObject(AFSdsmGetNextQObj) rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + AFSdsmEndQuery(dsmHandle); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_QRY); /* set off */ + } + + } + else /* could be FINISHED or an error */ + { + + sprintf(traceStr2, "BSAQueryObject(AFSdsmGetNextQObj) rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + AFSdsmEndQuery(dsmHandle); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_BSA_QRY); /* set off */ + } + + if (rc == DSM_RC_OK) + { + sprintf(traceStr2, "BSAQueryObject(AFSdsmGetNextQObj) rc = %d, ObjOwner(objDesc):'%s' appOwner(objDesc):'%s' \n ObjName(objDesc):'%.*s%.*s' \n copyType:%d copyId:'%d %d' cGName:'%s'", + rc, + BSAobjDescP->Owner.bsaObjectOwner, + BSAobjDescP->Owner.appObjectOwner, + 100,BSAobjDescP->objName.objectSpaceName, + 100,BSAobjDescP->objName.pathName, + BSAobjDescP->copyType, + BSAobjDescP->copyId.left, + BSAobjDescP->copyId.right, + BSAobjDescP->cGName == NULL ? "" : BSAobjDescP->cGName); + ourTrace(BSAHandle,TrFL, traceStr2); + } + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSAQueryObject", + bsaRC, __FILE__,__LINE__); +} + +BSA_Int16 BSAGetObject( + long BSAHandle, + ObjectDescriptor *BSAobjDescP, + DataBlock *BSAdataBlockP +) +{ + dsInt16_t rc = 0; + dsInt16_t rc1 = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + DataBlk getBlk; + dsmGetType getType; + dsmGetList dsmObjList ; + char rcMsg[DSM_MAX_RC_MSG_LENGTH + 1]; + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + + memset(rcMsg, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + sprintf(traceStr2, "BSAGetObject ENTRY: BSAHandle:%d version:%d copyType:%d copyId:'%d %d' \n bufferLen:%d numBytes:%d ", + BSAHandle, + BSAobjDescP->version, + BSAobjDescP->copyType, + BSAobjDescP->copyId.left, + BSAobjDescP->copyId.right, + BSAdataBlockP->bufferLen, + BSAdataBlockP->numBytes); + ourTrace(BSAHandle, TrFL, traceStr2); + + xopenGbl.oper = OPER_RECV_START; /* save state for EndData later */ + + if (BSAobjDescP->version != ObjectDescriptorVersion) + { + sprintf(traceStr2,"Warning: BSAGetObject: objectDesc.version unexpected %d.", BSAobjDescP->version); + ourTrace(BSAHandle,TrFL, traceStr2); + /*================================================================== + don't treat this as an error now since it isn't defined in the spec + bsaRC = ADSM_RC_INVALID_ST_VER; + return(bsaRC); + =================================================================*/ + } + + if (!(xopenGbl.sessFlags & FL_IN_BSA_TXN)) + { + sprintf(traceStr2, "BSAGetObject: issued without BSABeginTxn"); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_BAD_CALL_SEQUENCE; + XOPENRETURN(BSAHandle, "BSAGetObject", + bsaRC,__FILE__,__LINE__); + } + + /*=== Get the data ===*/ + if (BSAobjDescP->copyType == BSACopyType_ARCHIVE) + getType = gtArchive; + else + if (BSAobjDescP->copyType == BSACopyType_BACKUP) + getType = gtBackup; + else + { + sprintf(traceStr2, + "BSAGetObject: invalid copyType (%d)", + BSAobjDescP->copyType); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_COPYTYPE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSAGetObject", + bsaRC,__FILE__,__LINE__); + } + + /*=== now update state since we'll issue a base API call ===*/ + xopenGbl.oper = OPER_RECV_ISSUED; /* save state for EndData later */ + /*=== setup for a single object get ===*/ + + dsmObjList.stVersion = dsmGetListVersion ; + dsmObjList.numObjId = 1 ; + dsmObjList.objId = (ObjID *)dsMalloc(sizeof(ObjID) * dsmObjList.numObjId) ; + + dsmObjList.objId[0].hi = BSAobjDescP->copyId.left ; + dsmObjList.objId[0].lo = BSAobjDescP->copyId.right ; + + if ((rc = AFSdsmBeginGetData(dsmHandle,bTrue, /* always say MountWait */ + getType, + &dsmObjList)) != DSM_RC_OK) + { + sprintf(traceStr2, "BSAGetObject: Call to AFSdsmBeginGetData error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSAGetObject(AFSdsmBeginGetData)", + bsaRC,__FILE__,__LINE__); + } + + /*********************************************************************/ + getBlk.stVersion = DataBlkVersion ; + getBlk.bufferPtr = BSAdataBlockP->bufferPtr ; + getBlk.bufferLen = BSAdataBlockP->bufferLen; + getBlk.numBytes = 0; + + rc = AFSdsmGetObj(dsmHandle, &(dsmObjList.objId[0]), &getBlk) ; + + if ((rc == DSM_RC_FINISHED) && + (getBlk.numBytes != 0)) /* actually is data received */ + rc = DSM_RC_MORE_DATA; /* use different rc for consistency */ + /* with Query. No data returned */ + /* if rc = FINISHED. */ + if ((rc == DSM_RC_FINISHED) || + (rc == DSM_RC_MORE_DATA)) + { + /*=== data is already in the buffer ===*/ + BSAdataBlockP->numBytes = (BSA_UInt16)getBlk.numBytes; + } + else + { + /*=== appl may call BSAEndData to clean up trxn but don't count on it... ===*/ + rc1 = AFSdsmEndGetObj(dsmHandle); + rc1 = AFSdsmEndGetData(dsmHandle); + xopenGbl.sessFlags = + (xopenGbl.sessFlags | FL_END_DATA_DONE); /* turn flag on */ + } + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSAGetObject", + bsaRC,__FILE__,__LINE__); +} + +BSA_Int16 BSAGetData( + long BSAHandle, + DataBlock *BSAdataBlockP +) +{ + dsInt16_t rc = 0; + dsInt16_t rc1 = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + DataBlk getBlk; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + + + sprintf(traceStr2, "BSAGetData ENTRY: BSAHandle:%d, bufferLen:%d, numBytes:%d", + BSAHandle, + BSAdataBlockP->bufferLen, + BSAdataBlockP->numBytes); + ourTrace(BSAHandle,TrFL, traceStr2); + + getBlk.stVersion = DataBlkVersion ; + getBlk.bufferPtr = BSAdataBlockP->bufferPtr ; + getBlk.bufferLen = BSAdataBlockP->bufferLen; + getBlk.numBytes = 0; + + rc = AFSdsmGetData(dsmHandle, &getBlk) ; + + if ((rc == DSM_RC_FINISHED) && + (getBlk.numBytes != 0)) /* actually is data received */ + rc = DSM_RC_MORE_DATA; /* use different rc for consistency */ + /* with Query. No data returned */ + /* if rc = FINISHED. */ + + if ((rc == DSM_RC_FINISHED) || + (rc == DSM_RC_MORE_DATA)) + { + /*=== data is already in the buffer ===*/ + BSAdataBlockP->numBytes = (BSA_UInt16)getBlk.numBytes; + } + else + { + sprintf(traceStr2, "BSAGetData: Call to AFSdsmGetData error rc = %d", rc); + ourTrace(BSAHandle, TrFL,traceStr2); + + /*=== appl may call BSAEndData to clean up trxn but don't count on it... ===*/ + rc1 = AFSdsmEndGetObj(dsmHandle); + rc1 = AFSdsmEndGetData(dsmHandle); + xopenGbl.sessFlags = + (xopenGbl.sessFlags | FL_END_DATA_DONE); /* turn flag on */ + } + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSAGetData(AFSdsmGetData)", + bsaRC,__FILE__,__LINE__); +} + +BSA_Int16 BSASendData( + long BSAHandle, + DataBlock *BSAdataBlockP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + DataBlk dataBlkArea; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + + + sprintf(traceStr2, "BSASendData ENTRY: BSAHandle:%d bufferLen: %d numBytes: %d ", + BSAHandle, + BSAdataBlockP->bufferLen, + BSAdataBlockP->numBytes); + ourTrace(BSAHandle, TrFL, traceStr2); + + /*=== check for NULL dataBlock pointer ===*/ + if (BSAdataBlockP == NULL) + XOPENRETURN(BSAHandle, "BSASendData", + BSA_RC_NULL_POINTER,__FILE__,__LINE__); + dataBlkArea.stVersion = DataBlkVersion ; + dataBlkArea.bufferPtr = BSAdataBlockP->bufferPtr ; + dataBlkArea.bufferLen = BSAdataBlockP->bufferLen; + + rc = AFSdsmSendData(dsmHandle, &dataBlkArea); + + if (rc) + { + + sprintf(traceStr2, "BSASendData(AFSdsmSendData) error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + + if (rc == DSM_RC_WILL_ABORT) /* save flag */ + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_RC_WILL_ABORT); + } + BSAdataBlockP->numBytes = (BSA_UInt16)dataBlkArea.numBytes; + sprintf(traceStr2, "BSASendData(AFSdsmSendData): BSAHandle:%d bufferLen: %d numBytes sent: %d ", + BSAHandle, + BSAdataBlockP->bufferLen, + BSAdataBlockP->numBytes); + ourTrace(BSAHandle, TrFL, traceStr2); + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSASendData", + BSA_RC_SUCCESS,__FILE__,__LINE__); +} + +BSA_Int16 BSAEndData( + long BSAHandle +) +{ + dsInt16_t rc = 0; + dsInt16_t rc1 = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + + + sprintf(traceStr2, "BSAEndData ENTRY: BSAHandle:%d", BSAHandle); + ourTrace(BSAHandle,TrFL, traceStr2); + + /*======================================================= + check the state - don't issue base API call unless one + was called previously, or else we get a sequence error. + ======================================================*/ + + if (xopenGbl.oper == OPER_SEND_ISSUED) + { + rc = AFSdsmEndSendObj(dsmHandle); + if (rc) + { + + sprintf(traceStr2, "BSAEndData(AFSdsmEndSendObj) error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + xlateRC(BSAHandle, rc, &bsaRC); + } + } + else + if (xopenGbl.oper == OPER_RECV_ISSUED) + { + if (xopenGbl.sessFlags & FL_END_DATA_DONE) /* EndData processing */ + xopenGbl.sessFlags = /* already done */ + (xopenGbl.sessFlags ^ FL_END_DATA_DONE); /* turn flag off */ + else + { + rc = AFSdsmEndGetObj(dsmHandle); + if (rc) + { + sprintf(traceStr2, "BSAEndData(AFSdsmEndGetObj) error rc = %d", rc); + ourTrace(BSAHandle, TrFL, traceStr2); + + /*============================================================== + this may get 'Out of sequence error' if previous GetObject + had rc=2 (no match). Don't return this to caller - too confusing + ===============================================================*/ + if (rc != DSM_RC_BAD_CALL_SEQUENCE) + xlateRC(BSAHandle, rc, &bsaRC); + } + + rc = AFSdsmEndGetData(dsmHandle); + if (rc) + { + sprintf(traceStr2, "BSAEndData(AFSdsmEndGetData) error rc = %d", rc); + ourTrace(BSAHandle, TrFL, traceStr2); + xlateRC(BSAHandle, rc, &bsaRC); + } + } + } + else /* invalid state */ + if ((xopenGbl.oper != OPER_RECV_START) && + (xopenGbl.oper != OPER_SEND_START)) + { + sprintf(traceStr2, "BSAEndData: BSAEndData but not Send or Recv"); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_BAD_CALL_SEQUENCE; + } + + xopenGbl.oper = OPER_NONE; + XOPENRETURN(BSAHandle, "BSAEndData",bsaRC,__FILE__,__LINE__); +} + +BSA_Int16 BSACreateObject( + long BSAHandle, + ObjectDescriptor *BSAobjDescP, + DataBlock *BSAdataBlockP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + regFSData regFilespace ; + dsmObjName objName ; + ObjAttr objAttrArea; + sndArchiveData archData; + DataBlk dataBlkArea; + dsmSendType sendType; + dsUint8_t dsmObjType; + XAPIObjInfo xapiObjInfo; + mcBindKey mcBindKey; + BSAObjectOwner upperNode; /* upper cased node name */ + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + dsmHandle = BSAHandle; + + if (BSAobjDescP != NULL && BSAdataBlockP != NULL) + { + sprintf(traceStr2, "BSACreateObject ENTRY: BSAHandle:%d ObjOwner:'%s' appOwner:'%s' \n ObjName:'%.*s%.*s' \n objType:%d size:'%d %d' resourceType:'%s' \n bufferLen:%d numBytes:%d ", + + BSAHandle, + BSAobjDescP->Owner.bsaObjectOwner[0] != '\0' ? BSAobjDescP->Owner.bsaObjectOwner : "", + BSAobjDescP->Owner.appObjectOwner[0] != '\0' ? BSAobjDescP->Owner.appObjectOwner : "", + 100,BSAobjDescP->objName.objectSpaceName[0] != '\0' ? BSAobjDescP->objName.objectSpaceName + : "", + 100,BSAobjDescP->objName.pathName[0] != '\0' ? BSAobjDescP->objName.pathName : "", + BSAobjDescP->objectType, + BSAobjDescP->size.left, + BSAobjDescP->size.right, + BSAobjDescP->resourceType[0] != '\0' ? BSAobjDescP->resourceType : "" , + BSAdataBlockP->bufferLen, + BSAdataBlockP->numBytes); + } + else + { + if (BSAobjDescP == NULL) + { + bsaRC = BSA_RC_NULL_POINTER; + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + sprintf(traceStr2, "BSACreateObject ENTRY: BSAHandle:%d", BSAHandle); + } + + ourTrace(BSAHandle, TrFL, traceStr2); + + xopenGbl.oper = OPER_SEND_START; /* save state for EndData later */ + /*================================================================= + if (BSAobjDescP->version != ObjectDescriptorVersion) + BSA spec doesn't require this currently.. + =================================================================*/ + + /*=============================================================== + if the node name is different - we won't create it compare both + the value passed on the BSAInit and the final value used for the + session (which may be different for Generate) + ===============================================================*/ + strcpy(upperNode, BSAobjDescP->Owner.bsaObjectOwner); + StrUpper(upperNode); + if ((strcmp(upperNode, xopenGbl.dsmSessInfo.id)) && + (strcmp(BSAobjDescP->Owner.bsaObjectOwner, xopenGbl.bsaObjectOwner))) + { + sprintf(traceStr2, + "BSACreateObject: BSAObjectOwner(%s) doesn't match value for session(%s).", + upperNode, xopenGbl.dsmSessInfo.id); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_NODE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle,logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + + /*=== check string lengths - if this too long, it won't fit in our objInfo ===*/ + if (strlen(BSAobjDescP->desc) > ADSM_MAX_DESC) + { + sprintf(traceStr2,"BSACreateObject: description longer than TSM max (%d). ", + strlen(BSAobjDescP->desc)); + ourTrace(BSAHandle, TrFL, traceStr2); + bsaRC = BSA_RC_DESC_TOO_LONG; + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + if (strlen(BSAobjDescP->objectInfo) > ADSM_MAX_OBJINFO) + { + sprintf(traceStr2,"BSACreateObject: objInfo longer than TSM max (%d).", + strlen(BSAobjDescP->objectInfo)); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_OBJINFO_TOO_LONG; + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + + if (!(xopenGbl.sessFlags & FL_IN_BSA_TXN)) + { + sprintf(traceStr2, "BSACreateObject issued without BSABeginTxn"); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_BAD_CALL_SEQUENCE; + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + + if (strlen(BSAobjDescP->objName.objectSpaceName) > BSA_MAX_OSNAME) + { + sprintf(traceStr2, "BSACreateObject: objectSpaceName too long (%d)", + strlen(BSAobjDescP->objName.objectSpaceName)); + ourTrace(BSAHandle, TrFL, traceStr2); + bsaRC = BSA_RC_OBJNAME_TOO_LONG; + XOPENRETURN(BSAHandle, "BSACreateObject:", + bsaRC,__FILE__,__LINE__); + } + + if (!(xopenGbl.sessFlags & FL_IN_DSM_TXN)) /* first CreateObj */ + { /* can't issue RegisterFS if already in Txn */ + /*=== Register the file space ===*/ + regFilespace.stVersion = regFSDataVersion ; + regFilespace.fsName = BSAobjDescP->objName.objectSpaceName ; + + /*=== use resource type for fsType (as it was intended) ===*/ + + regFilespace.fsType = BSAobjDescP->resourceType ; + regFilespace.capacity.lo = 0; + regFilespace.capacity.hi = 0; + regFilespace.occupancy.lo = 0; + regFilespace.occupancy.hi = 0; + #if _OPSYS_TYPE == DS_AIX + regFilespace.fsAttr.unixFSAttr.fsInfoLength = strlen(XAPI_FSINFO) ; + strcpy(regFilespace.fsAttr.unixFSAttr.fsInfo, XAPI_FSINFO); + #else + regFilespace.fsAttr.dosFSAttr.fsInfoLength = strlen(XAPI_FSINFO) ; + strcpy(regFilespace.fsAttr.dosFSAttr.fsInfo, XAPI_FSINFO); + regFilespace.fsAttr.dosFSAttr.driveLetter = 'X'; + #endif + rc = AFSdsmRegisterFS(dsmHandle, ®Filespace) ; + if ((rc != 0) && (rc != DSM_RC_FS_ALREADY_REGED)) + { + sprintf(traceStr2, "BSACreateObject(AFSdsmRegisterFS) error rc = %d",rc); + ourTrace(BSAHandle,TrFL, traceStr2); + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSACreateObject(AFSdsmRegisterFS)", + bsaRC,__FILE__,__LINE__); + } + } + + /*======================================================== + Check for invalid copyType before sending data. Log error + to dsirror.log file. + ========================================================*/ + if (BSAobjDescP->copyType == BSACopyType_ARCHIVE) + sendType = stArchiveMountWait; + else + if (BSAobjDescP->copyType == BSACopyType_BACKUP) + sendType = stBackupMountWait; + else + { + sprintf(traceStr2, + "BSACreateObject: invalid copyType (%d)", + BSAobjDescP->copyType); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_COPYTYPE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle,logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + + if ((BSAobjDescP->objectType == BSAObjectType_FILE) || + (BSAobjDescP->objectType == BSAObjectType_DATABASE) || + (BSAobjDescP->objectType == BSAObjectType_ANY)) + + dsmObjType = DSM_OBJ_FILE; + else + if (BSAobjDescP->objectType == BSAObjectType_DIRECTORY) + dsmObjType = DSM_OBJ_DIRECTORY; + else + { + sprintf(traceStr2, + "BSACreateObject: invalid objectType (%d)", + BSAobjDescP->objectType); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_OBJTYPE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle,logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + + /*================================================================== + put in a check here - count the number of objects per txn + and compare with xopenGbl.sessInfo.maxObjPerTxn + If reach the limit, EndTxn and start a new one + OK to do this without telling the BSA caller? + Or should we exit with an error to tell them the limit is reached ? + ==================================================================*/ + + if (!(xopenGbl.sessFlags & FL_IN_DSM_TXN)) + { + rc = AFSdsmBeginTxn(dsmHandle); + + if (rc) + { + sprintf(traceStr2, "BSACreateObject(AFSdsmBeginTxn) error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSACreateObject(AFSdsmBeginTxn)", + bsaRC,__FILE__,__LINE__); + } + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_IN_DSM_TXN); /* set on */ + } + + /*=== Backup the data ===*/ + + /*================================================================ + the entire pathname gets copied into hl during parsing, so + check for that max len as well. For now these are the same value. + =================================================================*/ + if (strlen(BSAobjDescP->objName.pathName) > + min(DSM_MAX_HL_LENGTH, BSA_MAX_PATHNAME)) + { + sprintf(traceStr2, "BSACreateObject: pathName too long (%d)", + strlen(BSAobjDescP->objName.pathName)); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_OBJNAME_TOO_LONG; + XOPENRETURN(BSAHandle, "BSACreateObject", + bsaRC,__FILE__,__LINE__); + } + + strcpy(objName.fs,BSAobjDescP->objName.objectSpaceName) ; + /*=== previous code to use only ll field ===*/ + /*objName.hl[0] = '\0'; + strcpy(objName.ll,BSAobjDescP->objName.pathName) ; + */ + xparsePath(BSAHandle, BSAobjDescP->objName.pathName, objName.hl, objName.ll); + objName.objType = dsmObjType ; + + objAttrArea.stVersion = ObjAttrVersion ; + strcpy(objAttrArea.owner,BSAobjDescP->Owner.appObjectOwner); + objAttrArea.sizeEstimate.hi = BSAobjDescP->size.left; + objAttrArea.sizeEstimate.lo = BSAobjDescP->size.right; + objAttrArea.objCompressed = bFalse ; /* let COMPRESSION option decide */ + /*=== whether there's actually compression ===*/ + objAttrArea.objInfoLength = sizeof(XAPIObjInfo); + objAttrArea.objInfo = (char *)&xapiObjInfo ; + + memset(&xapiObjInfo,0x00,sizeof(XAPIObjInfo)); + strcpy(xapiObjInfo.resourceType, BSAobjDescP->resourceType); + xapiObjInfo.size.left = BSAobjDescP->size.left; + xapiObjInfo.size.right = BSAobjDescP->size.right; + strcpy(xapiObjInfo.partDesc, BSAobjDescP->desc); + strcpy(xapiObjInfo.partObjInfo, BSAobjDescP->objectInfo); + + /*=== check if a lifecycle group name was passed to us ===*/ + if (strlen(BSAobjDescP->lGName)) + objAttrArea.mcNameP = (char *)BSAobjDescP->lGName ; + else + objAttrArea.mcNameP = NULL; + + dataBlkArea.stVersion = DataBlkVersion ; + if (BSAdataBlockP == NULL) + { + dataBlkArea.bufferPtr = NULL; + dataBlkArea.bufferLen = 0; + } + else + { + dataBlkArea.bufferPtr = BSAdataBlockP->bufferPtr ; + dataBlkArea.bufferLen = BSAdataBlockP->bufferLen; + } + + /*======================================================= + always issue BindMC because we don't expect applications + to call ResolveLifecycleGroup since it isn't in the + Data Movement subset + =======================================================*/ + mcBindKey.stVersion = mcBindKeyVersion ; + rc = AFSdsmBindMC(dsmHandle, &objName, sendType, &mcBindKey); + if (rc) + { + sprintf(traceStr2, "BSACreateObject(AFSdsmBindMC): error rc = %d", rc); + ourTrace(BSAHandle, TrFL, traceStr2); + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSACreateObject(dsnBindMC)", + bsaRC,__FILE__,__LINE__); + } + + /*=== now update state since we'll issue the base Send call ===*/ + + xopenGbl.oper = OPER_SEND_ISSUED; /* save state for EndData later */ + + switch (sendType) + { + case (stBackupMountWait) : + rc = AFSdsmSendObj(dsmHandle, + sendType, + NULL, + &objName, + &objAttrArea, + &dataBlkArea); + break; + + case (stArchiveMountWait) : + archData.stVersion = sndArchiveDataVersion; + archData.descr = (char *)(BSAobjDescP->desc); + rc = AFSdsmSendObj(dsmHandle, + sendType, + &archData, + &objName, + &objAttrArea, + &dataBlkArea); + break; + default : ; + } + + if (rc != DSM_RC_OK) + { + sprintf(traceStr2, "BSACreateObject(AFSdsmSendObj) error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + + if (rc == DSM_RC_WILL_ABORT) /* save flag */ + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_RC_WILL_ABORT); + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle, "BSACreateObject(AFSdsmSendObj)", + bsaRC,__FILE__,__LINE__); + } + XOPENRETURN(BSAHandle, "BSACreateObject", + BSA_RC_SUCCESS, __FILE__,__LINE__); +} + + +BSA_Int16 BSADeleteObject( + long BSAHandle, + CopyType copyType, + ObjectName *BSAobjNameP, + CopyId *copyidP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + dsUint16_t reason ; /* for AFSdsmEndTxn */ + dsmObjName dsmobjName; + + dsmDelType delType; + dsmDelInfo delInfo; + + delList *llHeadP = NULL; + delList *llTailP = NULL; + delList *ll = NULL; + + char errPrefix[DSM_MAX_RC_MSG_LENGTH + 1]; + char ourMessage[DSM_MAX_RC_MSG_LENGTH + 1]; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + memset(errPrefix, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + memset(ourMessage, '\0', DSM_MAX_RC_MSG_LENGTH + 1); + + dsmHandle = BSAHandle; + + sprintf(traceStr2, "BSADeleteObject ENTRY: BSAHandle:%d CopyType:%d \n ObjName:'%.*s%.*s' copyidP:'%d %d'.", + BSAHandle, + copyType, + 100,BSAobjNameP->objectSpaceName, + 100,BSAobjNameP->pathName, + copyidP->left, + copyidP->right); + ourTrace(BSAHandle, TrFL, traceStr2); + if (copyType != BSACopyType_ARCHIVE) + { + sprintf(traceStr2, + "BSADeleteObject: invalid copyType %d", + copyType); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = ADSM_RC_INVALID_COPYTYPE; + strcpy(ourMessage, ourRCMsg(bsaRC, errPrefix)); + ourLogEvent_Ex(BSAHandle, logLocal, ourMessage, errPrefix, logSevError); + XOPENRETURN(BSAHandle, "BSADeleteObject", + bsaRC,__FILE__,__LINE__); + } + + if (!(xopenGbl.sessFlags & FL_IN_BSA_TXN)) + { + sprintf(traceStr2, "BSADeleteObject issued without BSABeginTxn"); + ourTrace(BSAHandle, TrFL, traceStr2); + + bsaRC = BSA_RC_BAD_CALL_SEQUENCE; + XOPENRETURN(BSAHandle, "BSADeleteObject:", + bsaRC,__FILE__,__LINE__); + } + + strcpy(dsmobjName.fs, BSAobjNameP->objectSpaceName); + xparsePath(BSAHandle, BSAobjNameP->pathName, dsmobjName.hl, dsmobjName.ll); + dsmobjName.objType = DSM_OBJ_FILE; + + if (!copyidP) /* NULL, so query and delete all with same name */ + { + if (xopenGbl.sessFlags & FL_IN_DSM_TXN) + /*=== if a trxn had been started, end it before doing Query ===*/ + { + rc = AFSdsmEndTxn(dsmHandle, DSM_VOTE_COMMIT, &reason); + xopenGbl.sessFlags = (xopenGbl.sessFlags ^ FL_IN_DSM_TXN); /* set off */ + } + rc = buildList(dsmHandle, &dsmobjName, &llHeadP, &llTailP); + if (rc) + { + bsaRC = BSA_RC_OBJECT_NOT_FOUND; + XOPENRETURN(BSAHandle, "BSADeleteObject(buildList)", + bsaRC,__FILE__,__LINE__); + } + } + + if (!(xopenGbl.sessFlags & FL_IN_DSM_TXN)) /* first call */ + { + rc = AFSdsmBeginTxn(dsmHandle); + if (rc) + { + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(dsmHandle,"BSADeleteObject(AFSdsmBeginTxn)", + bsaRC,__FILE__,__LINE__); + } + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_IN_DSM_TXN); /* set on */ + } + + delType = dtArchive; + delInfo.archInfo.stVersion = delArchVersion; + + if (copyidP) /* single ID to delete */ + { + delInfo.archInfo.objId.hi = copyidP->left; + delInfo.archInfo.objId.lo = copyidP->right; + + if ((rc = AFSdsmDeleteObj(dsmHandle,delType,delInfo)) != DSM_RC_OK) + { + sprintf(traceStr2, "BSADeleteObject: AFSdsmDeleteObj error rc = %d", rc); + ourTrace(dsmHandle,TrFL, traceStr2); + } + } + else /* multiple IDs to delete */ + { + ll = llHeadP; + while (ll) + { + delInfo.archInfo.objId.hi = ll->objId.hi; + delInfo.archInfo.objId.lo = ll->objId.lo; + if ((rc = AFSdsmDeleteObj(dsmHandle, delType, delInfo)) != DSM_RC_OK) + { + sprintf(traceStr2, "BSADeleteObject: AFSdsmDeleteObj error rc = %d", rc); + ourTrace(dsmHandle, TrFL, traceStr2); + /*=== break and get out of loop, or keep going? ===*/ + } + /*=== incr to next list entry ===*/ + ll = ll->next; + } + /*=== free list now that done ===*/ + rc = freeList(&llHeadP, &llTailP); + } + + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle,"BSADeleteObject", + bsaRC,__FILE__,__LINE__) +} + +BSA_Int16 BSAMarkObjectInactive( + long BSAHandle, + ObjectName *BSAobjNameP +) +{ + dsInt16_t rc = 0; + BSA_Int16 bsaRC = 0; + dsUint32_t dsmHandle; + + dsmObjName dsmobjName; + + qryBackupData queryBuffer; /* for query Backup */ + qryRespBackupData qbDataArea; + DataBlk qDataBlkArea; + + dsmDelType delType; + dsmDelInfo delInfo; + + dsUint16_t reason ; /* for AFSdsmEndTxn */ + /*=== build list of all objTypes we find for this name ===*/ + dsInt16_t i; + dsInt16_t numTypes; + dsUint8_t listObjType[5]; /* only 2 objTypes defined today */ + dsUint32_t listCopyGroup[5]; + + if(!dsm_init) + { +#ifdef DEBUG_BUTC + printf("TSM library not mounted. \n"); +#endif + if (dsm_MountLibrary()) + { + printf("TSM Library initialisation failed. \n"); + return 1 ; + } +#ifdef DEBUG_BUTC + printf("TSM Library initialisation SUCCESS. \n"); +#endif + } + + dsmHandle = BSAHandle; + memset(&delInfo, 0x00, sizeof(dsmDelInfo)); + memset(&queryBuffer, 0x00, sizeof(qryBackupData)); + + sprintf(traceStr2, "BSAMarkObjectInactive ENTRY: BSAHandle:%d \n ObjName:'%.*s%.*s'.", + BSAHandle, + 100, BSAobjNameP->objectSpaceName, + 100, BSAobjNameP->pathName); + ourTrace(dsmHandle, TrFL, traceStr2); + + if (!(xopenGbl.sessFlags & FL_IN_BSA_TXN)) + { + sprintf(traceStr2, "BSAMarkObjectInactive: issued without BSABeginTxn."); + ourTrace(BSAHandle, TrFL, traceStr2); + bsaRC = BSA_RC_BAD_CALL_SEQUENCE; + XOPENRETURN(BSAHandle, "BSAMarkObjectInactive", + bsaRC,__FILE__,__LINE__); + } + + if (strlen(BSAobjNameP->objectSpaceName) > DSM_MAX_FSNAME_LENGTH) + { + sprintf(traceStr2, "BSAMarkObjectInactive: objectSpaceName too long (%d)", strlen(BSAobjNameP->objectSpaceName)); + ourTrace(BSAHandle,TrFL, traceStr2); + + bsaRC = BSA_RC_OBJNAME_TOO_LONG; + XOPENRETURN(BSAHandle, "BSAMarkObjectInactive", + bsaRC,__FILE__,__LINE__); + } + /*=============================================================== + The entire pathname gets copied into hl during parsing, so + check for that max len as well. For now these are the same value. + =============================================================== */ + if (strlen(BSAobjNameP->pathName) > + min(DSM_MAX_HL_LENGTH, BSA_MAX_PATHNAME)) + { + sprintf(traceStr2, "BSAMarkObjectInactive: pathName too long (%d)", + strlen(BSAobjNameP->pathName)); + ourTrace(BSAHandle,TrFL, traceStr2); + bsaRC = BSA_RC_OBJNAME_TOO_LONG; + XOPENRETURN(BSAHandle, "BSAMarkObjectInactive", + bsaRC,__FILE__,__LINE__); + } + + /*============================================================== + we don't allow any wildcard in name because that could retrieve + LOTS of objects and make list processing more complicated. + XBSA spec implies a single object. + ==============================================================*/ + if ( strchr(BSAobjNameP->objectSpaceName, '*') || + strchr(BSAobjNameP->objectSpaceName, '?') || + strchr(BSAobjNameP->pathName, '*') || + strchr(BSAobjNameP->pathName, '?')) + { + + sprintf(traceStr2, "BSAMarkObjectInactive: objName contains a wildcard.") +; + ourTrace(BSAHandle, TrFL, traceStr2); + /*=== could have a more specific rc, use this for now ===*/ + bsaRC = BSA_RC_ABORT_ACTIVE_NOT_FOUND; + XOPENRETURN(BSAHandle, "BSAMarkObjectInactive", + bsaRC,__FILE__,__LINE__); + } + + strcpy(dsmobjName.fs, BSAobjNameP->objectSpaceName); + xparsePath(BSAHandle, BSAobjNameP->pathName, dsmobjName.hl, dsmobjName.ll); + dsmobjName.objType = DSM_OBJ_ANY_TYPE; + + /*============================================================ + A Backup Delete must include the copy Group and objType this + wasn't passed in, so we have to do a query. + ============================================================*/ + + queryBuffer.stVersion = qryBackupDataVersion ; + queryBuffer.objName = &dsmobjName; + queryBuffer.owner = xopenGbl.dsmSessInfo.owner; + queryBuffer.objState = DSM_ACTIVE; /* only get active one */ + + if ((rc=AFSdsmBeginQuery(dsmHandle, qtBackup, + (void *)&queryBuffer )) != DSM_RC_OK) + { + sprintf(traceStr2, "BSAMarkObjectInactive: Call to AFSdsmBeginQuery for Backup error rc = %d", rc); + ourTrace(BSAHandle,TrFL, traceStr2); + xlateRC(BSAHandle, rc, &bsaRC); + if ((rc == DSM_RC_ABORT_NO_MATCH) || /* special rc for MarkInact */ + (rc == DSM_RC_FILE_SPACE_NOT_FOUND)) + bsaRC = BSA_RC_ABORT_ACTIVE_NOT_FOUND; + + rc = AFSdsmEndQuery(dsmHandle); + XOPENRETURN(BSAHandle, "BSAMarkObjectInactive: AFSdsmBeginQuery", + bsaRC,__FILE__,__LINE__); + } + + qbDataArea.stVersion = qryRespBackupDataVersion; + qDataBlkArea.stVersion = DataBlkVersion ; + qDataBlkArea.bufferPtr = (char *)&qbDataArea; + qDataBlkArea.bufferLen = sizeof(qryRespBackupData); + + numTypes = 0; + rc = AFSdsmGetNextQObj(dsmHandle, &qDataBlkArea); + while (((rc == DSM_RC_MORE_DATA) || + (rc == DSM_RC_FINISHED)) && + qDataBlkArea.numBytes) + { /* save copy Group we got */ + listCopyGroup[numTypes] = qbDataArea.copyGroup; + listObjType[numTypes] = qbDataArea.objName.objType; + numTypes++; + rc = AFSdsmGetNextQObj(dsmHandle, &qDataBlkArea); + } + + if (rc != DSM_RC_FINISHED) + { + xlateRC(BSAHandle, rc, &bsaRC); + if ((rc == DSM_RC_ABORT_NO_MATCH) || /* special rc for MarkInact */ + (rc == DSM_RC_FILE_SPACE_NOT_FOUND)) + bsaRC = BSA_RC_ABORT_ACTIVE_NOT_FOUND; + rc = AFSdsmEndQuery(dsmHandle); + XOPENRETURN(BSAHandle,"BSAMarkObjectInactive: AFSdsmGetNextQObj", + bsaRC,__FILE__,__LINE__); + } + rc = AFSdsmEndQuery(dsmHandle); + + /*=== now we can do the delete ===*/ + rc = AFSdsmBeginTxn(dsmHandle); + + if (rc) + { + xlateRC(BSAHandle, rc, &bsaRC); + XOPENRETURN(BSAHandle,"BSAMarkObjectInactive: AFSdsmBeginTxn", + bsaRC,__FILE__,__LINE__); + } + xopenGbl.sessFlags = (xopenGbl.sessFlags | FL_IN_DSM_TXN); /* set on */ + + delType = dtBackup; /* this only applies to Backup */ + + delInfo.backInfo.stVersion = delBackVersion; + delInfo.backInfo.objNameP = &dsmobjName; + + for (i=0; i 3) || defined(BERK4_2) || defined(SUN4) +#include +#else +#include +#endif + +#ifdef bool_t +#undef bool_t +#endif + +/* include TSM Header Files. */ +#include +#include +#include + +/* BSA_Boolean */ +typedef char BSA_Boolean; + +/* BSA_Int16 */ +typedef short BSA_Int16; + +/* BSA_Int32 */ +typedef long BSA_Int32; + +/* BSA_Int64 */ +typedef struct { /* defined as two 32-bit integers */ + BSA_Int32 left; + BSA_Int32 right; +} BSA_Int64; + +/* BSA_UInt16 */ +typedef unsigned short BSA_UInt16; + +/* BSA_UInt32 */ +typedef unsigned long BSA_UInt32; + +/* BSA_UInt64 */ +typedef struct { /* defined as two unsigned 32-bit integers*/ + BSA_UInt32 left; + BSA_UInt32 right; +} BSA_UInt64; + +/*-------------------------------------------------------------------------+ +| ADSM specific constants and return codes | ++-------------------------------------------------------------------------*/ +/* TSM library version, release, level + */ +#define BSA_API_VERSION 5 +#define BSA_API_RELEASE 2 +#define BSA_API_LEVEL 0 + +/* Constants used */ +#define ADSM_MAX_DESC 100 /* ADSM max Desc size */ +#define ADSM_MAX_OBJINFO 100 /* ADSM max object info size */ +#define ADSM_LOWEST_BOUND 0x0000 /* value for LowerBound min */ +#define ADSM_HIGHEST_BOUND 0xFFFF /* value for UpperBound max */ +#define ADSM_ENV_STRS 3 /* number of env strings */ +#define ObjectDescriptorVersion 1 /* ver for ObjectDescriptor */ +#define UserDescriptorVersion 1 /* ver for UserDescriptor */ +#define BSAObjectType_DATABASE 4 /* ObjectType for Databases */ + +/* Return Codes Used + */ +#define BSA_RC_OK 0x00 +#define BSA_RC_SUCCESS 0x00 + +#define ADSM_RC_ERROR 0x60 /* see ADSM error log */ +#define ADSM_RC_INVALID_NODE 0x61 /* BSAObjOwner not match Init*/ +#define ADSM_RC_INVALID_COPYTYPE 0x62 /* invalid copyType */ +#define ADSM_RC_INVALID_OBJTYPE 0x63 /* invalid objectType */ +#define ADSM_RC_INVALID_STATUS 0x64 /* invalid object status */ +#define ADSM_RC_INVALID_ST_VER 0x65 /* invalid structure version */ +#define ADSM_RC_OWNER_TOO_LONG 0x66 /* owner too long */ +#define ADSM_RC_PSWD_TOO_LONG 0x67 /* pswd too long */ +#define ADSM_RC_PSWD_GEN 0x68 /* pswd access = generate */ + +/* Constants used + * + * Maximum string lengths (lower bound), including trailing null + */ +#define BSA_LIST_ELEMENT_DELIMITER null /* Element delimiter in list */ +#define BSA_MAX_ADMIN_NAME 64 /* Administrator name */ +#define BSA_MAX_APPOBJECT_OWNER 64 /* Max end-object owner length */ +#define BSA_MAX_BSAOBJECT_OWNER 64 /* Max BSA object owner length */ +#define BSA_MAX_CG_DEST 31 /* Copy group destination */ +#define BSA_MAX_CG_NAME 31 /* Max copy group name length */ +#define BSA_MAX_COPYGROUPS 16 /* Max number of copy groups */ + /* which can be specified in a */ + /* lifecycle group */ +#define BSA_MAX_DESC 256 /* Description field */ +#define BSA_MAX_ENCODINGMETHOD 31 /* Max encoding method length */ +#define BSA_MAX_EVENTINFO 256 /* Max event info size */ +#define BSA_MAX_FILTERRULESET 8192 /* Max filter rule set size */ +#define BSA_MAX_OSNAME 1024 /* Max Objectspace name length */ +#define BSA_MAX_LG_NAME 31 /* Life cycle group name */ +#define BSA_MAX_LIFECYCLEGROUPS 64 /* Max number of life cycle */ + /* groups in a policy set */ +#define BSA_MAX_OBJINFO 512 /* Max object info size */ +#define BSA_MAX_PATHNAME 1024 /* Max path name length */ +#define BSA_MAX_POLICYDOMAINS 256 /* Max number of specific policy */ + /* domains an administrator may */ + /* be responsible for */ +#define BSA_MAX_POLICYDOMAIN_NAME 31 /* Policy domain name */ +#define BSA_MAX_POLICYSETS 16 /* Max number of policy sets */ + /* in a domain */ +#define BSA_MAX_POLICYSET_NAME 31 /* Policy set name */ +#define BSA_MAX_RESOURCETYPE 31 /* Max resource mgr name length */ +#define BSA_MAX_TOKEN_SIZE 64 /* Max size of a security token */ +#define BSA_PUBLIC "BSA_ANY" /* Default string */ + +/* Return Codes Used + * + * Return Code descriptions are given in Section 4.3. + */ +#define BSA_RC_ABORT_ACTIVE_NOT_FOUND 0x02 +#define BSA_RC_ABORT_SYSTEM_ERROR 0x03 +#define BSA_RC_AUTHENTICATION_FAILURE 0x04 +#define BSA_RC_BAD_CALL_SEQUENCE 0x05 +#define BSA_RC_BAD_HANDLE 0x06 +#define BSA_RC_BUFFER_TOO_SMALL 0x07 +#define BSA_RC_DESC_TOO_LONG 0x08 +#define BSA_RC_OBJECTSPACE_TOO_LONG 0x09 +#define BSA_RC_INVALID_TOKEN 0x0a +#define BSA_RC_INVALID_VOTE 0x0b +#define BSA_RC_INVALID_KEYWORD 0x0c +#define BSA_RC_MATCH_EXISTS 0x0d +#define BSA_RC_MORE_DATA 0x0e +#define BSA_RC_MORE_RULES 0x0f +#define BSA_RC_NEWTOKEN_REQD 0x10 +#define BSA_RC_NO_MATCH 0x11 +#define BSA_RC_NO_MORE_DATA 0x12 +#define BSA_RC_NO_RESOURCES 0x13 +#define BSA_RC_NULL_DATABLKPTR 0x14 +#define BSA_RC_NULL_OBJNAME 0x15 +#define BSA_RC_NULL_POINTER 0x16 +#define BSA_RC_NULL_RULEID 0x17 +#define BSA_RC_OBJECT_NAME_TOO_LONG 0x18 +#define BSA_RC_OBJECT_NOT_EMPTY 0x19 +#define BSA_RC_OBJECT_NOT_FOUND 0x1a +#define BSA_RC_OBJINFO_TOO_LONG 0x1b +#define BSA_RC_OBJNAME_TOO_LONG 0x1c +#define BSA_RC_OPERATION_NOT_AUTHORIZED 0x1d +#define BSA_RC_OLDTOKEN_REQD 0x1e +#define BSA_RC_TOKEN_EXPIRED 0x1f +#define BSA_RC_TXN_ABORTED 0x20 +#define BSA_RC_UNMATCHED_QUOTE 0x21 +#define BSA_RC_USER_OWNS_OBJECTS 0x22 + +/* AppObjectOwner + */ +typedef char AppObjectOwner[BSA_MAX_APPOBJECT_OWNER]; + +/* BSAObjectOwner + */ +typedef char BSAObjectOwner[BSA_MAX_BSAOBJECT_OWNER]; + +/* CopyGpDest + */ +typedef char CopyGpDest[BSA_MAX_CG_DEST]; + +/* CopyGpName + */ +typedef char CopyGpName[BSA_MAX_CG_NAME]; + +/* CopyMode + * + * Constant Value Explanation + * -------- ----- ----------- + * INCREMENTAL 1 Specifies that the Backup Services should make a + * copy only if the application object has been + * modified since the last time this copy group was + * used to create the object's copy. + * ABSOLUTE 2 Specifies that the Backup Services should make a + * copy even if the application object has not been + * modified since the last time this copy group was + * used to create the object's copy. + */ +typedef enum { + BSACopyMode_INCREMENTAL = 1, + BSACopyMode_ABSOLUTE = 2 +} CopyMode; + +/* CopySerialization + * + * Constant Value Explanation + * -------- ----- ----------- + * STATIC 1 Specifies that the Backup Services must create a + * consistent (unmodified during the operation) copy of + * the object. If the application is unable to create a + * consistent copy then it should skip the operation + * (creating backup or archive copy) for the object. + * SHAREDSTATIC 2 Specifies that the Backup Services must create a + * consistent copy of the object. It can retry the + * operation a number of times (application dependent). + * If the Backup Services is unable to create a + * consistent copy even after retries, then it should + * skip creating a backup or archive copy of the + * object. + * SHAREDDYNAMIC 3 Specifies that the Backup Services must create a + * copy of the object. It can retry the operation a + * number of times in an attempt to create a consistent + * copy; however, if it fails to make a consistent + * copy, a copy must still be made, ignoring the fact + * that the copy may have been modified during the + * operation. Such copies are useful for log file + * objects which are being continuously modified. + * DYNAMIC 4 Specifies that the Backup Services must create a + * copy of the obbject even if the source object is + * modified during the operation. No retries should be + * attempted to create a consistent copy. + */ +typedef enum { + BSACopySerialization_STATIC = 1, + BSACopySerialization_SHAREDSTATIC = 2, + BSACopySerialization_SHAREDDYNAMIC = 3, + BSACopySerialization_DYNAMIC = 4 +} CopySerialization; + +/* CopyType + * + * Constant Value Explanation + * -------- ----- ----------- + * ANY 1 Used for matching any copy type (e.g. "backup" or + * "archive" in the copy type field of structures for + * selecting query results). + * ARCHIVE 2 Specifies that the copy type should be "archive". + * When used in the copy type field of the CopyGroup, + * it identifies the copy data as of type + * ArchiveCopyData, which is used to create archive + * copies. + * BACKUP 3 Specifies that the copy type should be "backup". + * When used in the copy type field of the CopyGroup, + * it identifies the copy data as of type + * BackupCopyData, which is used to create backup + * copies. + */ +typedef enum { + BSACopyType_ANY = 1, + BSACopyType_ARCHIVE = 2, + BSACopyType_BACKUP = 3 +} CopyType; + +/* Description + */ +typedef char Description[BSA_MAX_DESC]; + +/* DomainName + */ +typedef char * DomainName[BSA_MAX_POLICYDOMAIN_NAME]; + +/* EventInfo + */ +typedef char EventInfo[BSA_MAX_EVENTINFO]; + +/* LGName + */ +typedef char LGName[BSA_MAX_LG_NAME]; + +/* ObjectInfo + */ +typedef char ObjectInfo[BSA_MAX_OBJINFO]; + +/* ObjectName + */ +typedef struct { + char objectSpaceName[BSA_MAX_OSNAME]; /* Highest-level name qualifier */ + char pathName[BSA_MAX_PATHNAME]; /* Object name within */ + /* objectspace */ +} ObjectName; + +/* ObjectOwner + */ +typedef struct { + BSAObjectOwner bsaObjectOwner; /* BSA Owner name - this is the name */ + /* that Backup Services authenticates */ + AppObjectOwner appObjectOwner; /* End-owner name, this is the name */ + /* defined by the application */ +} ObjectOwner; + +/* ObjectSize + */ +typedef BSA_UInt64 ObjectSize; /* Unsigned 64-bit integer */ + +/* ObjectStatus + * + * Constant Value Explanation + * -------- ----- ----------- + * ANY 1 Provides a wild card function. Can only be used in + * queries. + * ACTIVE 2 Indicates that this is the most recent backup copy + * of an object. + * INACTIVE 3 Indicates that this is not the most recent backup + * copy, or that the object itself no longer exists. + */ +typedef enum { + BSAObjectStatus_ANY = 1, + BSAObjectStatus_ACTIVE = 2, + BSAObjectStatus_INACTIVE = 3 +} ObjectStatus; + +/* ObjectType + * + * Constant Value Explanation + * -------- ----- ----------- + * any 1 Used for matching any object type (e.g. "file" or + * "directory") value in the object type field of + * structures for selecting query results. + * file 2 Used by the application to indicate that the type of + * application object is a "file" or single object. + * directory 3 Used by the application to indicate that the type of + * application object is a "directory" or container of + * objects. + */ + +typedef enum { + BSAObjectType_ANY = 1, + BSAObjectType_FILE = 2, + BSAObjectType_DIRECTORY = 3 + } ObjectType; + +/* Operation + * + * Constant Value Explanation + * -------- ----- ----------- + * archive 1 Used to indicate that a scheduled operation is of + * type "archive". + * backup 2 Used to indicate that a scheduled operation is of + * type "backup". + */ +typedef enum { + BSAOperation_ARCHIVE = 1, + BSAOperation_BACKUP = 2 +} Operation; + +/* Period + * + * Use of the Period structure in a Schedule for an event: + * 1. The Schedule structure specifies 3 timing elements: + * a. "firstStartTime" - a timestamp showing the "earliest" + * possible time the event could take place + * b. "day" - the day of the week the event should occur + * c. "frequency" - the period between successive events + * 2. To determine the day the event should occur (this does + * not change the time of the event in the day): + * a. Determine the requested day from "firstStartTime". + * b. If "day" does not equal XBSA_DAYOFWEEK_ANY + * i. Compare "day" to the day of the week corresponding + * to "firstStartTime" determined in 2a above. + * ii.If the days match, then use "firstStartTime" else + * use the first "day" *following* the day shown + * in "firstStartTime" as the day of the event. + * 3. If the PeriodWhich field in the Period structure is other + * than XBSA_PERIOD_UNDEFINED, then successive events are + * determined using the value of "periodData". + * a. For seconds and days, the appropriate seconds or days + * are added to the "firstStartTime" and step 2 to correct + * for the day of the week (if needed) is applied again. + * b. If a monthly period is specified, then the appropriate + * number of months are added by incrementing the month index is + * made (for example, a one month increment from February to + * March). If the monthly date is not valid (for example, January + * 30 --> February 30) then the last day of the desired month is + * used (example January 30 --> February 28). Then step 2 is + * followed to adjust for the requested day (which might move the + * event time into the following month). + */ +typedef enum { + BSAPeriod_SECONDS = 1, + BSAPeriod_DAYS = 2, + BSAPeriod_MONTHS = 3, + BSAPeriod_UNDEFINED = -9, + BSAPeriod_DAILY = 4, BSAPeriod_WEEKLY = 5, BSAPeriod_MONTHLY = 6, + BSAPeriod_QUARTERLY = 7, BSAPeriod_ANNUALLY = 8 +} PeriodWhich; + +typedef struct { + PeriodWhich which; + union { + time_t nSeconds; + BSA_Int16 nDays; + BSA_Int16 nMonths; + } periodData; +} Period; + +/* ResourceType + */ +typedef char ResourceType[BSA_MAX_RESOURCETYPE]; + +/* RuleId + */ +typedef BSA_UInt64 RuleId; + +/* Scheduleid + */ +typedef BSA_UInt64 ScheduleId; + +/* AccessRight + * + * Constant Value Explanation + * -------- ----- ----------- + * GET 1 Access right for getting an object from Backup + * Services, also includes access right for querying + * (getting attributes) an object from Backup Services. + * QUERY 2 Access right for querying (getting attributes) an + * object from Backup Services. + */ +typedef enum { + BSAAccessRight_GET = 1, + BSAAcessRight_QUERY = 2 +} AccessRight; + +/* AccessRule + */ +typedef struct { + RuleId ruleId; /* Provided by Backup Services */ + ObjectName objName; /* Object name to be given access */ + ObjectOwner objectOwner; /* BSA object owner and Applicaton object */ + /* owner to be given access */ + AccessRight rights; /* The access rights to be given */ +} AccessRule; + +/* ApiVersion + */ +typedef struct { + BSA_UInt16 version; /* Version of this API */ + BSA_UInt16 release; /* Release of this API */ + BSA_UInt16 level; /* Level of this API */ +} ApiVersion; + +/* ArchiveCopyData + */ +typedef struct { + CopyGpName cGName; /* Copy group name */ + BSA_UInt16 freq; /* Archive frequency */ + CopySerialization copySer; /* Copy serialization code */ + CopyMode copyMode; /* Copy mode */ + CopyGpDest destName; /* Copy destination name */ + BSA_UInt16 retVersion; /* Retention time for the version */ +} ArchiveCopyData; + +/* BackupCopyData + */ +typedef struct { + CopyGpName cGName; /* Copy group name */ + BSA_UInt16 freq; /* Backup frequency */ + CopySerialization copySer; /* Copy serialization code */ + CopyMode copyMode; /* Copy mode: 1=modified, 2=absolute */ + CopyGpDest destName; /* Copy destination name */ + BSA_UInt16 verDataEx; /* Versions (number of versions */ + /* retained) */ + BSA_UInt16 verDataDel; /* Versions (data deleted) */ + Period retXtraVer; /* Retain extra versions */ + Period retOnlyVer; /* Retain only versions */ +} BackupCopyData; + +/* CopyGroup + */ +typedef struct { + CopyType copyType; /* Type of copy group: archive, backup, etc */ + union { + ArchiveCopyData archive; + BackupCopyData backup; + } copyData; +} CopyGroup; + +/* CopyId + */ +typedef BSA_UInt64 CopyId; + +/* DataBlock + */ +typedef struct { + BSA_UInt16 bufferLen; + BSA_UInt16 numBytes; /* Actual number of bytes read from */ + /* or written to the buffer, or the */ + /* minimum number of bytes needed */ + char * bufferPtr; +} DataBlock; + +/* DayOfWeek + */ +typedef enum { + BSADayOfWeek_Monday = 1, BSADayOfWeek_Tuesday = 2, + BSADayOfWeek_Wednesday = 3, BSADayOfWeek_Thursday = 4, + BSADayOfWeek_Friday = 5, BSADayOfWeek_Saturday = 6, + BSADayOfWeek_Sunday = 7 +} DayOfWeek; + +/* Environment + */ +typedef struct { + char * envVariables; /* Identifies the Backup Services instance and other */ + /* implementation-dependent variables such as */ + /* communication ports, etc. Each variable is a */ + /* (keyword, value) pair separated by a space. */ + /* If a value contains spaces, it must be */ + /* enclosed in single or double quotes. */ +} BSAEnvironment; + +/* Event + */ +typedef struct { + BSA_UInt32 eventId; /* This is an internal (to Backup Services) id*/ + ObjectOwner objectOwner;/* Identifies the owner of the event */ + struct tm time; /* Identifies the time the action is to start */ + Operation action; /* Identifies the action (backup, archive) */ + ObjectName objName; /* Identifies objects to be acted on */ + ResourceType resourceType;/* Identifies the resource manager for the */ + /* event */ + EventInfo eventInfo; /* User- and resource-manager-specific info */ +} BSAEvent; + +/* MethodName + */ +typedef char EncodingMethod[BSA_MAX_ENCODINGMETHOD]; + +/* ObjectDescriptor + */ +typedef struct { + BSA_UInt32 version; /* Version number for this structure */ + ObjectOwner Owner; /* Owner of the object */ + ObjectName objName; /* Object name */ + struct tm createTime; /* Supplied by Backup Services */ + CopyType copyType; /* Copy type: archive or backup */ + CopyId copyId; /* Supplied by Backup Services */ + BSA_UInt64 restoreOrder; /* Supplied by Backup Services */ + LGName lGName; /* Associated Lifecycle Group name */ + CopyGpName cGName; /* Copy group within the lifecycle group */ + ObjectSize size; /* Object size may be up to 63 bits */ + ResourceType resourceType; /* e.g. UNIX file system */ + ObjectType objectType; /* e.g. file, directory, etc. */ + ObjectStatus status; /* Active/inactive, supplied by */ + /* Backup Services */ + EncodingMethod * encodingList; /* List of encoding Methods used, in */ + /* application-defined order, */ + /* terminated with a null entry */ + Description desc; /* Descriptive label for the object */ + ObjectInfo objectInfo; /* Application information */ +} ObjectDescriptor; + +/* QueryDescriptor + */ +typedef struct { + ObjectOwner owner; /* Owner of the object */ + ObjectName objName; /* Object name */ + struct tm createTimeLB; /* Lower bound on create time */ + struct tm createTimeUB; /* Upper bound on create time */ + struct tm expireTimeLB; /* Lower bound on expiration time */ + struct tm expireTimeUB; /* Upper bound on expiration time */ + CopyType copyType; /* Copy type: archive or backup */ + LGName lGName; /* Associated Lifecycle Group name */ + CopyGpName cGName; /* Copy group within the lifecycle group */ + ResourceType resourceType; /* e.g. UNIX file system */ + ObjectType objectType; /* e.g. file, directory, etc. */ + ObjectStatus status; /* Active/inactive, supplied by Backup */ + /* Services */ + Description desc; /* Descriptive label for the object */ +} QueryDescriptor; /* "*" is interpreted as a meta character */ + /* wild card. */ + /* Any undefined value is interpreted as */ + /* an error. */ + +/* Schedule + */ +typedef struct { + ScheduleId schedId; /* Provided by Backup Services */ + ObjectOwner objectOwner; /* Specifies the owner of the schedule */ + Operation operation; /* Specifies the action to be taken */ + struct tm firstStartTime; /* Specifies the first time the action */ + /* is to take place */ + DayOfWeek day; /* Specifies the day of week for the event*/ + Period frequency; /* Specifies the frequency, e.g. daily */ + ObjectName objectName; /* Identifies objects to be acted on */ + ResourceType resourceType; /* Identifies the resource manager for the*/ + /* schedule */ + EventInfo scheduleInfo; /* Resource manager specific information */ +} Schedule; + +/* Security Token + */ +typedef char SecurityToken[BSA_MAX_TOKEN_SIZE]; + +/* StreamHandle + */ +typedef int StreamHandle; + +/* UserDescriptor + */ +typedef struct t_UserDescriptor { + BSA_UInt16 version; /* Version num of this structure */ + BSAObjectOwner bsaObjectOwner; /* BSA Object owner name */ + DomainName domainName; /* Policy domain for the user */ + Description desc; /* User information */ +} UserDescriptor; + +/* Vote + */ +typedef enum { + BSAVote_COMMIT = 1, + BSAVote_ABORT = 2 +} Vote; + +/* Function Prototypes for Data Movement API Subset + * Note that int and long have been replaced with typedefs + * from custom.h. + */ + +extern BSA_Int16 +BSABeginTxn +( long bsaHandle +); + +extern BSA_Int16 +BSAChangeToken +( long bsaHandle, + SecurityToken *oldTokenPtr, + SecurityToken *newTokenPtr +); + +extern BSA_Int16 +BSACreateObject +( long bsaHandle, + ObjectDescriptor *objectDescriptorPtr, + DataBlock *dataBlockPtr +); + +extern BSA_Int16 +BSACreateObjectF +( long bsaHandle, + ObjectDescriptor *objectDescriptorPtr, + StreamHandle *streamPtr +); + +extern BSA_Int16 +BSADeleteObject +( long bsaHandle, + CopyType copyType, + ObjectName *objectName, + CopyId *copyId +); + +extern BSA_Int16 +BSAEndData +( long bsaHandle +); + +extern BSA_Int16 +BSAEndTxn +( long bsaHandle, + Vote vote +); + +extern BSA_Int16 +BSAGetData +( long bsaHandle, + DataBlock *dataBlockPtr +); + +extern BSA_Int16 +BSAGetEnvironment +( long bsaHandle, + ObjectOwner *objectOwnerPtr, + char **environmentPtr +); + +extern BSA_Int16 +BSAGetNextQueryObject +( long bsaHandle, + ObjectDescriptor *objectDescriptorPtr +); + +extern BSA_Int16 +BSAGetObject +( long bsaHandle, + ObjectDescriptor *objectDescriptorPtr, + DataBlock *dataBlockPtr +); + +extern BSA_Int16 +BSAGetObjectF +( long bsaHandle, + ObjectDescriptor *objectDescriptorPtr, + StreamHandle *streamPtr +); + +extern BSA_Int16 +BSAInit +( long *bsaHandleP, + SecurityToken *tokenPtr, + ObjectOwner *objectOwnerPtr, + char **environmentPtr +); + +extern BSA_Int16 +BSAMarkObjectInactive +( long bsaHandle, + ObjectName *objectNamePtr +); + +extern void +BSAQueryApiVersion +( ApiVersion *apiVersionPtr +); + +extern BSA_Int16 +BSAQueryObject +( long bsaHandle, + QueryDescriptor *queryDescriptorPtr, + ObjectDescriptor *objectDescriptorPtr +); + +extern BSA_Int16 +BSASendData +( long bsaHandle, + DataBlock *dataBlockPtr +); + +extern BSA_Int16 +BSASetEnvironment +( long bsaHandle, + char **environmentPtr +); + +extern BSA_Int16 +BSATerminate +( long bsaHandle +); + +extern BSA_Int16 +BSAResolveLifecycleGroup( + long BSAHandle, + ObjectDescriptor *BSAobjDescP +); + +#ifdef __cplusplus +} +#endif + +typedef struct +{ + ApiSessInfo dsmSessInfo; + BSAObjectOwner bsaObjectOwner; /* node value on BSAInit */ + dsUint16_t sessFlags; /* misc flags */ + dsUint8_t oper; /* send or recv operation */ + CopyType copyType; /* Backup or Archive type */ + char *nextQryP; /* ptr to respArchive or respBackup */ +} xGlobal; + +/* flag masks for sessFlags */ +/* to set on use sessFlags = (sessFlags | FL_IN_BSA_TXN) */ +/* to set off use sessFlags = (sessFlags ^ FL_IN_BSA_TXN) */ +/* to test on use if (sessFlags & FL_IN_BSA_TXN) */ +#define FL_IN_BSA_TXN 0x0001 /* within a BSA type txn */ +#define FL_IN_DSM_TXN 0x0002 /* within a actual ADSM txn */ +#define FL_IN_BSA_QRY 0x0004 /* within a query txn */ +#define FL_PSWD_EXPIRE 0x0008 /* pswd has expired */ +#define FL_RC_WILL_ABORT 0x0010 /* recvd 157 on SendObj or SendData */ +#define FL_END_DATA_DONE 0x0020 /* Get error already did EndData */ + +#define OPER_NONE 0 /* values for oper field */ +#define OPER_SEND_START 1 +#define OPER_SEND_ISSUED 2 +#define OPER_RECV_START 3 +#define OPER_RECV_ISSUED 4 + +/* structure def for objInfo - max len = 255 */ +typedef struct +{ + ResourceType resourceType; /* 31 bytes */ + ObjectSize size; /* 8 bytes */ + char partDesc[ADSM_MAX_DESC]; /* 100 bytes */ + char partObjInfo[ADSM_MAX_OBJINFO]; /* 100 bytes */ +} XAPIObjInfo; + +/* ******* G l o b a l s ******** */ + +/* xGlobal xopenGbl; */ + +extern BSA_Int16 xlateRC( + long BSAHandle, + BSA_Int16 dsmRC, + BSA_Int16 *bsaRCP); + +extern BSA_Int16 xparsePath( + long BSAHandle, + char *pathname, + char *hl, + char *ll); + +extern xGlobal xopenGbl; +extern char traceStr[]; +extern char traceStr1[]; +extern char traceStr2[]; + +#define dsMalloc(a) malloc(a) +#define dsFree(a) free(a) + +extern void StrUpper(char *s); +/* Min() and Max() macros */ +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef max +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif + +/* Combined file name w/ line number */ +#define TrFL __FILE__, __LINE__ + +/*=== MACRO for exit tracing ===*/ +#define XOPENRETURN(BSAHandle,functionName,bsaRC,fileName,lineNumber) {sprintf(traceStr2,"%s EXIT: rc = >%d<.",functionName, bsaRC); ourTrace(BSAHandle,fileName,lineNumber,traceStr2); return(bsaRC);} + +/* Define license error log file name */ +#define TSMLicLog "tsmlic.log" + +#define custMin_retcode 96 +#define custMax_retcode 104 + +/*======================================================= + Function to places a trace message in the API tracefile, + the message includes the xopen file name and line number. + ======================================================*/ +void ourTrace(long BSAHandle, + char *fileName, + int lineNumber, + char *traceStr2); + +/*================================================ + Function to log events with call to dsmLogEventEx + ===============================================*/ +void ourLogEvent_Ex(dsUint32_t handle, dsmLogType type, char* msg, + char *appMsg, dsmLogSeverity severity); + +/*================================================================= + Function to retrieve a message by routing to dsmRCMsg or stdXOpenMsgMap. + ===============================================================*/ +char* ourRCMsg(dsInt16_t dsmRC, char *msg); + +/*==================================================== + Function to build fully qualified license file name. + void build_lfname(char *lfname + ========================================================*/ +extern void build_lfname(char *lfname); + +/*=== Function to deliver standard XOpen API message above API range. */ +void stdXOpenMsgMap(dsInt16_t, char*); + + +#endif /* xbsa */ diff --git a/src/butc/butc_xbsa.c b/src/butc/butc_xbsa.c index a219552f4..6c2afe63e 100644 --- a/src/butc/butc_xbsa.c +++ b/src/butc/butc_xbsa.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/butc_xbsa.c,v 1.8.2.1 2007/07/16 20:43:31 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/butc_xbsa.c,v 1.8.14.2 2008/07/11 09:50:54 shadow Exp $"); #include #include @@ -34,6 +34,22 @@ extern int debugLevel; char resourceType[20] = "LFS FILE SYSTEM"; #define GOODSTR(s) ((s)?(s):"") +#ifdef NEW_XBSA +BSA_Int16 (*XBSAInit)(long *, SecurityToken *, ObjectOwner *, char **); +BSA_Int16 (*XBSABeginTxn)(long); +BSA_Int16 (*XBSAEndTxn)(long, Vote); +BSA_Int16 (*XBSATerminate)(long); +BSA_Int16 (*XBSAQueryObject)(long, QueryDescriptor *, ObjectDescriptor *); +BSA_Int16 (*XBSAGetObject)(long, ObjectDescriptor *, DataBlock *); +BSA_Int16 (*XBSAEndData)(long); +BSA_Int16 (*XBSACreateObject)(long, ObjectDescriptor *, DataBlock *); +BSA_Int16 (*XBSADeleteObject)(long, CopyType, ObjectName *, CopyId *); +BSA_Int16 (*XBSAMarkObjectInactive)(long, ObjectName *); +BSA_Int16 (*XBSASendData)(long, DataBlock *); +BSA_Int16 (*XBSAGetData)(long, DataBlock *); +void (*XBSAQueryApiVersion)(ApiVersion *); +BSA_Int16 (*XBSAGetEnvironment)(long, ObjectOwner *, char **); +#else BSA_Int16(*XBSAInit) (BSA_UInt32 *, SecurityToken *, ObjectOwner *, char **); BSA_Int16(*XBSABeginTxn) (BSA_UInt32); BSA_Int16(*XBSAEndTxn) (BSA_UInt32, Vote); @@ -49,7 +65,7 @@ BSA_Int16(*XBSASendData) (BSA_UInt32, DataBlock *); BSA_Int16(*XBSAGetData) (BSA_UInt32, DataBlock *); BSA_Int16(*XBSAQueryApiVersion) (ApiVersion *); BSA_Int16(*XBSAGetEnvironment) (BSA_UInt32, ObjectOwner *, char **); - +#endif xbsa_error(int rc, struct butx_transactionInfo *info) { @@ -122,6 +138,7 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType) switch (serverType) { case XBSA_SERVER_TYPE_ADSM: +#ifndef NEW_XBSA #if defined(AFS_AIX_ENV) dynlib = dlopen("/usr/lib/libXApi.a(bsashr10.o)", @@ -136,6 +153,7 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType) dynlib = dlopen("/usr/lib/libXApi.so", RTLD_NOW | RTLD_GLOBAL); #else dynlib = NULL; +#endif #endif break; default: @@ -145,15 +163,18 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType) break; } +#ifndef NEW_XBSA if (dynlib == NULL) { ELog(0, "xbsa_MountLibrary: The dlopen call to load the XBSA shared library failed\n"); return (BUTX_NOLIBRARY); } +#endif memset(info, 0, sizeof(struct butx_transactionInfo)); XBSA_SET_SERVER_TYPE(info->serverType, serverType); +#ifndef NEW_XBSA #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) XBSAInit = (BSA_Int16(*) (BSA_UInt32 *, SecurityToken *, ObjectOwner *, @@ -204,10 +225,40 @@ xbsa_MountLibrary(struct butx_transactionInfo *info, afs_int32 serverType) "xbsa_MountLibrary: The dlopen call to load the XBSA shared library failed\n"); return (BUTX_NOLIBRARY); } - XBSAQueryApiVersion(&(info->apiVersion)); #endif +#else +#if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_LINUX26_ENV) + XBSAInit = BSAInit; + XBSABeginTxn = BSABeginTxn; + XBSAEndTxn = BSAEndTxn; + XBSATerminate = BSATerminate; + XBSAQueryObject = BSAQueryObject; + XBSAGetObject = BSAGetObject; + XBSAEndData = BSAEndData; + XBSACreateObject = BSACreateObject; + XBSAMarkObjectInactive = BSAMarkObjectInactive; + XBSADeleteObject = BSADeleteObject; + XBSASendData = BSASendData; + XBSAGetData = BSAGetData; + XBSAQueryApiVersion = BSAQueryApiVersion; + XBSAGetEnvironment = BSAGetEnvironment; + + if (!XBSAInit || !XBSABeginTxn || !XBSAEndTxn || !XBSATerminate || + !XBSAQueryObject || !XBSAGetObject || !XBSAEndData || + !XBSACreateObject || !XBSADeleteObject || !XBSAMarkObjectInactive || + !XBSASendData || !XBSAGetData || !XBSAQueryApiVersion || + !XBSAGetEnvironment) { + ELog(0,"xbsa_MountLibrary: The dlopen call to load the XBSA shared library failed\n"); + return(BUTX_NOLIBRARY); + } + XBSAQueryApiVersion(&(info->apiVersion)); +#endif +#endif +#ifdef DEBUG_BUTC + printf("xbsa_MountLibrary : XBSA function Pointers initialised. \n"); +#endif /* * Verify the API version */ diff --git a/src/butc/butc_xbsa.h b/src/butc/butc_xbsa.h index 1c4a748ee..311599e6f 100644 --- a/src/butc/butc_xbsa.h +++ b/src/butc/butc_xbsa.h @@ -38,7 +38,11 @@ #define XBSADFLTBUFFER 16384 /* default size is 16KB */ #define XBSAMAXBUFFER 65535 /* maximum size in 64KB-1; has to fit in 16bit integer */ +#ifdef NEW_XBSA +#include "afsxbsa.h" +#else #include +#endif #define XBSA_NUM_ENV_STRS ADSM_ENV_STRS #define XBSA_MAX_OSNAME BSA_MAX_OSNAME diff --git a/src/butc/dbentries.c b/src/butc/dbentries.c index c4a36d0fd..4d386cbdc 100644 --- a/src/butc/dbentries.c +++ b/src/butc/dbentries.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/dbentries.c,v 1.8.2.5 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/dbentries.c,v 1.8.14.5 2008/03/10 22:32:33 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/butc/dump.c b/src/butc/dump.c index 42f6f42eb..84edc5877 100644 --- a/src/butc/dump.c +++ b/src/butc/dump.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/dump.c,v 1.17.2.3 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/dump.c,v 1.18.6.3 2008/05/02 00:59:38 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -2215,6 +2215,6 @@ DeleteDump(void *param) code = BUTX_DELETENOVOL; setStatus(taskId, TASK_ERROR); } - return (code); + return (void *)(code); } #endif diff --git a/src/butc/list.c b/src/butc/list.c index 6367bfe03..03e2d937c 100644 --- a/src/butc/list.c +++ b/src/butc/list.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/list.c,v 1.8.2.1 2006/07/01 05:04:12 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/list.c,v 1.8.14.1 2006/07/01 05:02:49 shadow Exp $"); #ifndef AFS_NT40_ENV #include diff --git a/src/butc/lwps.c b/src/butc/lwps.c index 0a292508d..bc57a20bd 100644 --- a/src/butc/lwps.c +++ b/src/butc/lwps.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/lwps.c,v 1.12.2.7 2008/04/09 16:40:17 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/lwps.c,v 1.14.4.5 2008/04/09 16:39:59 shadow Exp $"); #include #include diff --git a/src/butc/read_tape.c b/src/butc/read_tape.c index 48cf8929c..c3c0092c3 100644 --- a/src/butc/read_tape.c +++ b/src/butc/read_tape.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/read_tape.c,v 1.7.2.3 2007/11/26 21:21:51 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/read_tape.c,v 1.7.14.3 2007/11/26 21:08:41 shadow Exp $"); #include #include diff --git a/src/butc/recoverDb.c b/src/butc/recoverDb.c index f580ccee2..1cd6f8018 100644 --- a/src/butc/recoverDb.c +++ b/src/butc/recoverDb.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/recoverDb.c,v 1.10.2.7 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/recoverDb.c,v 1.13.4.4 2008/03/10 22:32:33 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/butc/tcmain.c b/src/butc/tcmain.c index a33a0f2dc..df1aac943 100644 --- a/src/butc/tcmain.c +++ b/src/butc/tcmain.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/tcmain.c,v 1.14.2.8 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/tcmain.c,v 1.16.8.7 2008/03/10 22:32:33 shadow Exp $"); #include #include @@ -40,7 +40,6 @@ RCSID #include #include #include -#include #include #include #include diff --git a/src/butc/tcprocs.c b/src/butc/tcprocs.c index 6ac8e1181..180f944d9 100644 --- a/src/butc/tcprocs.c +++ b/src/butc/tcprocs.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/tcprocs.c,v 1.12.2.6 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/tcprocs.c,v 1.14.6.5 2008/03/10 22:32:33 shadow Exp $"); #include #include @@ -35,7 +35,6 @@ RCSID #include #include #include -#include #include #include #include @@ -316,7 +315,7 @@ afs_int32 STC_PerformRestore(struct rx_call *acid, char *dumpSetName, tc_restoreArray *arestores, afs_int32 *taskID) { struct dumpNode *newNode; - statusP statusPtr = 0; + statusP statusPtr; afs_int32 code = 0; #ifdef AFS_PTHREAD_ENV pthread_t pid; @@ -421,7 +420,7 @@ STC_RestoreDb(struct rx_call *rxCall, afs_uint32 *taskId) #else PROCESS pid; #endif - statusP statusPtr = 0; + statusP statusPtr; afs_int32 code = 0; extern statusP createStatusNode(); @@ -573,7 +572,7 @@ STC_ScanDumps(struct rx_call *acid, afs_int32 addDbFlag, afs_uint32 *taskId) PROCESS pid; #endif struct scanTapeIf *ptr; - statusP statusPtr = 0; + statusP statusPtr; afs_int32 code = 0; extern afs_int32 allocTaskId(); diff --git a/src/butc/tcstatus.c b/src/butc/tcstatus.c index ee12fed73..3973ce6ec 100644 --- a/src/butc/tcstatus.c +++ b/src/butc/tcstatus.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/tcstatus.c,v 1.6.2.1 2007/10/30 15:23:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/tcstatus.c,v 1.6.14.1 2007/10/30 15:16:38 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/butc/tcudbprocs.c b/src/butc/tcudbprocs.c index 1d37e6298..be89baaa0 100644 --- a/src/butc/tcudbprocs.c +++ b/src/butc/tcudbprocs.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/tcudbprocs.c,v 1.14.2.7 2008/04/18 13:57:31 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/tcudbprocs.c,v 1.15.6.7 2008/04/18 13:57:13 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -36,7 +36,6 @@ RCSID #include #include #include -#include #include #include #include diff --git a/src/butc/test.c b/src/butc/test.c index 3c8ef7fd5..1c09a6d45 100644 --- a/src/butc/test.c +++ b/src/butc/test.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/src/butc/test_budb.c b/src/butc/test_budb.c index 1c0e054ca..f98869d21 100644 --- a/src/butc/test_budb.c +++ b/src/butc/test_budb.c @@ -14,9 +14,8 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/test_budb.c,v 1.5.2.1 2006/07/31 17:07:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/test_budb.c,v 1.5.14.2 2007/02/09 01:00:20 shadow Exp $"); -#include #include #include #include diff --git a/src/butm/NTMakefile b/src/butm/NTMakefile index b685ada83..d19860d4a 100644 --- a/src/butm/NTMakefile +++ b/src/butm/NTMakefile @@ -45,6 +45,8 @@ TESTLIBS = $(DESTDIR)\lib\afslwp.lib \ $(OUT)\test_ftm.exe: $(OUT)\test_ftm.obj $(LIBFILE) $(TESTLIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) mkdir: diff --git a/src/butm/butm_test.c b/src/butm/butm_test.c index a018f8e63..545b292ab 100644 --- a/src/butm/butm_test.c +++ b/src/butm/butm_test.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butm/butm_test.c,v 1.8.2.1 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/butm/butm_test.c,v 1.8.14.1 2007/04/10 18:39:51 shadow Exp $"); #include #include diff --git a/src/butm/file_tm.c b/src/butm/file_tm.c index 2a18ef37f..d7166bb40 100644 --- a/src/butm/file_tm.c +++ b/src/butm/file_tm.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butm/file_tm.c,v 1.11.2.4 2007/11/26 21:21:51 shadow Exp $"); + ("$Header: /cvs/openafs/src/butm/file_tm.c,v 1.12.6.3 2007/11/26 21:08:42 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/butm/test_ftm.c b/src/butm/test_ftm.c index 01f80f60f..38af6ac50 100644 --- a/src/butm/test_ftm.c +++ b/src/butm/test_ftm.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butm/test_ftm.c,v 1.10.2.2 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/butm/test_ftm.c,v 1.11.8.1 2007/04/10 18:39:51 shadow Exp $"); #include #include diff --git a/src/cf/Makefile.am.common b/src/cf/Makefile.am.common deleted file mode 100644 index 7cb476d0b..000000000 --- a/src/cf/Makefile.am.common +++ /dev/null @@ -1,178 +0,0 @@ -# $Id: Makefile.am.common,v 1.2 2001/10/17 23:07:03 shadow Exp $ - -AUTOMAKE_OPTIONS = foreign no-dependencies - -SUFFIXES = .et .h - -INCLUDES = -I$(top_builddir)/include $(INCLUDES_roken) - -AM_CFLAGS += $(WFLAGS) - -CP = cp - -COMPILE_ET = $(top_builddir)/lib/com_err/compile_et - -## set build_HEADERZ to headers that should just be installed in build tree - -buildinclude = $(top_builddir)/include - -## these aren't detected by automake -LIB_XauReadAuth = @LIB_XauReadAuth@ -LIB_crypt = @LIB_crypt@ -LIB_dbm_firstkey = @LIB_dbm_firstkey@ -LIB_dbopen = @LIB_dbopen@ -LIB_dlopen = @LIB_dlopen@ -LIB_dn_expand = @LIB_dn_expand@ -LIB_el_init = @LIB_el_init@ -LIB_getattr = @LIB_getattr@ -LIB_gethostbyname = @LIB_gethostbyname@ -LIB_getpwent_r = @LIB_getpwent_r@ -LIB_getpwnam_r = @LIB_getpwnam_r@ -LIB_getsockopt = @LIB_getsockopt@ -LIB_logout = @LIB_logout@ -LIB_logwtmp = @LIB_logwtmp@ -LIB_odm_initialize = @LIB_odm_initialize@ -LIB_pidfile = @LIB_pidfile@ -LIB_readline = @LIB_readline@ -LIB_res_search = @LIB_res_search@ -LIB_setpcred = @LIB_setpcred@ -LIB_setsockopt = @LIB_setsockopt@ -LIB_socket = @LIB_socket@ -LIB_syslog = @LIB_syslog@ -LIB_tgetent = @LIB_tgetent@ - -LIBS = @LIBS@ - -HESIODLIB = @HESIODLIB@ -HESIODINCLUDE = @HESIODINCLUDE@ -INCLUDE_hesiod = @INCLUDE_hesiod@ -LIB_hesiod = @LIB_hesiod@ - -INCLUDE_krb4 = @INCLUDE_krb4@ -LIB_krb4 = @LIB_krb4@ - -INCLUDE_openldap = @INCLUDE_openldap@ -LIB_openldap = @LIB_openldap@ - -INCLUDE_readline = @INCLUDE_readline@ -LIB_readline = @LIB_readline@ - -LEXLIB = @LEXLIB@ - -install-suid-programs: - @foo='$(bin_SUIDS)'; \ - for file in $$foo; do \ - x=$(DESTDIR)$(bindir)/$$file; \ - if chown 0:0 $$x && chmod u+s $$x; then :; else \ - echo "*"; \ - echo "* Failed to install $$x setuid root"; \ - echo "*"; \ - fi; done - -install-exec-hook: install-suid-programs - -install-build-headers:: $(include_HEADERS) $(build_HEADERZ) - @foo='$(include_HEADERS) $(build_HEADERZ)'; \ - for f in $$foo; do \ - f=`basename $$f`; \ - if test -f "$(srcdir)/$$f"; then file="$(srcdir)/$$f"; \ - else file="$$f"; fi; \ - if cmp -s $$file $(buildinclude)/$$f 2> /dev/null ; then \ - : ; else \ - echo " $(CP) $$file $(buildinclude)/$$f"; \ - $(CP) $$file $(buildinclude)/$$f; \ - fi ; \ - done - -all-local: install-build-headers - -SUFFIXES += .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 - -NROFF_MAN = groff -mandoc -Tascii -#NROFF_MAN = nroff -man -.1.cat1: - $(NROFF_MAN) $< > $@ -.3.cat3: - $(NROFF_MAN) $< > $@ -.5.cat5: - $(NROFF_MAN) $< > $@ -.8.cat8: - $(NROFF_MAN) $< > $@ - -## MAINTAINERCLEANFILES += - -dist-cat1-mans: - @foo='$(man1_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.1) foo="$$foo $$i";; \ - esac; done ;\ - for i in $$foo; do \ - x=`echo $$i | sed 's/\.[^.]*$$/.cat1/'`; \ - echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \ - $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \ - done - -dist-cat3-mans: - @foo='$(man3_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.3) foo="$$foo $$i";; \ - esac; done ;\ - for i in $$foo; do \ - x=`echo $$i | sed 's/\.[^.]*$$/.cat3/'`; \ - echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \ - $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \ - done - -dist-cat5-mans: - @foo='$(man5_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.5) foo="$$foo $$i";; \ - esac; done ;\ - for i in $$foo; do \ - x=`echo $$i | sed 's/\.[^.]*$$/.cat5/'`; \ - echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \ - $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \ - done - -dist-cat8-mans: - @foo='$(man8_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.8) foo="$$foo $$i";; \ - esac; done ;\ - for i in $$foo; do \ - x=`echo $$i | sed 's/\.[^.]*$$/.cat8/'`; \ - echo "$(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x"; \ - $(NROFF_MAN) $(srcdir)/$$i > $(distdir)/$$x; \ - done - -dist-hook: dist-cat1-mans dist-cat3-mans dist-cat5-mans dist-cat8-mans - -install-cat-mans: - $(SHELL) $(top_srcdir)/cf/install-catman.sh "$(INSTALL_DATA)" "$(mkinstalldirs)" "$(srcdir)" "$(DESTDIR)$(mandir)" '$(CATMANEXT)' $(man_MANS) $(man1_MANS) $(man3_MANS) $(man5_MANS) $(man8_MANS) - -install-data-local: install-cat-mans - - -.et.h: - ${COMPILE_ET} $< -.et.c: - ${COMPILE_ET} $< - -if KRB4 -LIB_kafs = $(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS) -endif - -if KRB5 -LIB_krb5 = $(top_builddir)/lib/krb5/libkrb5.la \ - $(top_builddir)/lib/asn1/libasn1.la -LIB_gssapi = $(top_builddir)/lib/gssapi/libgssapi.la -endif - diff --git a/src/cf/bigendian.m4 b/src/cf/bigendian.m4 index 4a712fe74..758296fa3 100644 --- a/src/cf/bigendian.m4 +++ b/src/cf/bigendian.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: bigendian.m4,v 1.3.2.1 2006/08/02 19:07:03 shadow Exp $ +dnl $Id: bigendian.m4,v 1.3.14.2 2008/07/14 04:06:09 rra Exp $ dnl dnl check if this computer is little or big-endian @@ -8,12 +8,13 @@ dnl otherwise test for it and define it. also allow options for overriding dnl it when cross-compiling AC_DEFUN([OPENAFS_CHECK_BIGENDIAN], [ -AC_ARG_ENABLE(bigendian, -[ --enable-bigendian the target is big endian], -openafs_cv_c_bigendian=yes) -AC_ARG_ENABLE(littleendian, -[ --enable-littleendian the target is little endian], -openafs_cv_c_bigendian=no) +AC_ARG_ENABLE([bigendian], + [AS_HELP_STRING([--enable-bigendian], [the target is big endian])], + [openafs_cv_c_bigendian=yes]) +AC_ARG_ENABLE([littleendian], + [AS_HELP_STRING([--enable-littleendian], [the target is little endian])], + [openafs_cv_c_bigendian=no]) + AC_CACHE_CHECK(whether byte order is known at compile time, openafs_cv_c_bigendian_compile, [AC_TRY_COMPILE([ diff --git a/src/cf/kerberos.m4 b/src/cf/kerberos.m4 index b67b32042..8d422848b 100644 --- a/src/cf/kerberos.m4 +++ b/src/cf/kerberos.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: kerberos.m4,v 1.1.2.16 2008/04/18 20:50:28 shadow Exp $ +dnl $Id: kerberos.m4,v 1.7.2.9 2008/07/14 04:06:09 rra Exp $ dnl dnl Kerberos autoconf glue dnl @@ -10,7 +10,10 @@ dnl AC_ARG_VAR(KRB5CFLAGS, [C flags to compile Kerberos 5 programs]) dnl AC_ARG_VAR(KRB5LIBS, [Libraries and flags to compile Kerberos 5 programs]) dnl AC_ARG_VAR(KRB5_CONFIG, [Location of krb5-config script]) -AC_ARG_WITH([krb5-conf],[--with-krb5-conf[=krb5-config-location] Use a krb5-config script to configure Kerberos]) +AC_ARG_WITH([krb5-conf], + [AS_HELP_STRING([--with-krb5-conf=@<:@krb5-config-location@:>@], + [use a krb5-config script to configure Kerberos])]) + if test X$with_krb5_conf != X; then conf_krb5=YES if test X$with_krb5_conf = Xyes; then @@ -35,7 +38,9 @@ if test X$with_krb5_conf != X; then AC_MSG_RESULT([Adding $KRB5LIBS to KRB5LIBS]) fi -AC_ARG_WITH([krb5], [--with-krb5 Support for Kerberos 5 (manual configuration)]) +AC_ARG_WITH([krb5], + [AS_HELP_STRING([--with-krb5], + [support for Kerberos 5 (manual configuration)])]) if test X$with_krb5 = Xyes; then if test X$conf_krb5 = XYES; then diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index 3c131cd0e..10032ed18 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -41,6 +41,15 @@ lose ac_cv_linux_completion_h_exists=no)]) AC_MSG_RESULT($ac_cv_linux_completion_h_exists)]) +AC_DEFUN([LINUX_EXPORTFS_H_EXISTS], [ + AC_MSG_CHECKING([for linux/exportfs.h existence]) + AC_CACHE_VAL([ac_cv_linux_exportfs_h_exists], [ + AC_TRY_KBUILD( +[#include ], +[return;], + ac_cv_linux_exportfs_h_exists=yes, + ac_cv_linux_exportfs_h_exists=no)]) + AC_MSG_RESULT($ac_cv_linux_exportfs_h_exists)]) AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [ AC_MSG_CHECKING([for defined for_each_process]) @@ -502,6 +511,18 @@ AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK], [ CPPFLAGS="$save_CPPFLAGS"]) AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)]) +AC_DEFUN([LINUX_KERNEL_HLIST_UNHASHED], [ + AC_MSG_CHECKING([for hlist_unhashed]) + AC_CACHE_VAL([ac_cv_linux_kernel_hlist_unhashed], [ + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration" + AC_TRY_KBUILD( +[#include ], +[hlist_unhashed(0);], + ac_cv_linux_kernel_hlist_unhashed=yes, + ac_cv_linux_kernel_hlist_unhashed=no) + CPPFLAGS="$save_CPPFLAGS"]) + AC_MSG_RESULT($ac_cv_linux_kernel_hlist_unhashed)]) AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [ AC_MSG_CHECKING([for gfp_mask in struct address_space]) @@ -910,6 +931,16 @@ _fop.sendfile(NULL, NULL, 0, 0, NULL);], ac_cv_linux_fs_struct_fop_has_sendfile=no)]) AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_sendfile)]) +AC_DEFUN([LINUX_HAVE_SVC_ADDR_IN], [ + AC_MSG_CHECKING([whether svc_addr_in exists]) + AC_CACHE_VAL([ac_cv_linux_have_svc_addr_in], [ + AC_TRY_KBUILD( +[#include ], +[svc_addr_in(NULL);], + ac_cv_linux_have_svc_addr_in=yes, + ac_cv_linux_have_svc_addr_in=no)]) + AC_MSG_RESULT($ac_cv_linux_have_svc_addr_in)]) + AC_DEFUN([LINUX_FS_STRUCT_FOP_HAS_SPLICE], [ AC_MSG_CHECKING([for splice_write and splice_read in struct file_operations]) AC_CACHE_VAL([ac_cv_linux_fs_struct_fop_has_splice], [ @@ -993,3 +1024,58 @@ AC_DEFUN([LINUX_EXPORTS_RCU_READ_LOCK], [ AC_DEFINE([EXPORTED_RCU_READ_LOCK], 1, [define if rcu_read_lock() is usable]) fi]) +AC_DEFUN([LINUX_EXPORTS_FIND_TASK_BY_PID], [ + AC_MSG_CHECKING([if find_task_by_pid is usable]) + AC_CACHE_VAL([ac_cv_linux_exports_find_task_by_pid], [ + AC_TRY_KBUILD( +[#include ], +[pid_t p; +find_task_by_pid(p);], + ac_cv_linux_exports_find_task_by_pid=yes, + ac_cv_linux_exports_find_task_by_pid=no)]) + AC_MSG_RESULT($ac_cv_linux_exports_find_task_by_pid) + if test "x$ac_cv_linux_exports_find_task_by_pid" = "xyes"; then + AC_DEFINE([EXPORTED_FIND_TASK_BY_PID], 1, [define if find_task_by_pid() is usable]) + fi]) + +AC_DEFUN([LINUX_EXPORTS_PROC_ROOT_FS], [ + AC_MSG_CHECKING([if proc_root_fs is defined and exported]) + AC_CACHE_VAL([ac_cv_linux_exports_proc_root_fs], [ + AC_TRY_KBUILD( +[#include ], +[struct proc_dir_entry *p = proc_root_fs;], + ac_cv_linux_exports_proc_root_fs=yes, + ac_cv_linux_exports_proc_root_fs=no)]) + AC_MSG_RESULT($ac_cv_linux_exports_proc_root_fs) + if test "x$ac_cv_linux_exports_proc_root_fs" = "xyes"; then + AC_DEFINE([EXPORTED_PROC_ROOT_FS], 1, [define if proc_root_fs is exported]) + fi]) + +AC_DEFUN([LINUX_D_PATH_TAKES_STRUCT_PATH], [ + AC_MSG_CHECKING([if d_path() takes a struct path argument]) + AC_CACHE_VAL([ac_cv_linux_d_path_takes_struct_path], [ + AC_TRY_KBUILD( +[#include ], +[struct path *p; +d_path(p, NULL, 0);], + ac_cv_linux_d_path_takes_struct_path=yes, + ac_cv_linux_d_path_takes_struct_path=no)]) + AC_MSG_RESULT($ac_cv_linux_d_path_takes_struct_path) + if test "x$ac_cv_linux_d_path_takes_struct_path" = "xyes"; then + AC_DEFINE([D_PATH_TAKES_STRUCT_PATH], 1, [define if d_path() takes a struct path argument]) + fi]) + +AC_DEFUN([LINUX_NEW_EXPORT_OPS], [ + AC_MSG_CHECKING([if kernel uses new export ops]) + AC_CACHE_VAL([ac_cv_linux_new_export_ops], [ + AC_TRY_KBUILD( +[#include ], +[struct export_operations _eops; +_eops.fh_to_parent(NULL, NULL, 0, 0);], + ac_cv_linux_new_export_ops=yes, + ac_cv_linux_new_export_ops=no)]) + AC_MSG_RESULT($ac_cv_linux_new_export_ops) + if test "x$ac_cv_linux_new_export_ops" = "xyes"; then + AC_DEFINE([NEW_EXPORT_OPS], 1, [define if kernel uses new export ops]) + fi]) + diff --git a/src/cf/osconf.m4 b/src/cf/osconf.m4 index b8daa6a20..5540abdf7 100644 --- a/src/cf/osconf.m4 +++ b/src/cf/osconf.m4 @@ -2,24 +2,27 @@ AC_DEFUN([OPENAFS_OSCONF], [ dnl defaults, override in case below as needed +CFLAGS= XCFLAGS='${DBG} ${OPTMZ}' SHLIB_SUFFIX="so" CC="cc" CCOBJ="cc" MT_CC="cc" -XLIBS="${LIB_AFSDB}" +XLIBS="${LIB_AFSDB} ${XBSA_XLIBS}" dnl debugging and optimization flag defaults dnl Note, these are all the defaults for if debug/optimize turned on, and -dnl the arch cases below do not override +dnl the arch cases below do override as needed KERN_DBG=-g KERN_OPTMZ=-O DBG=-g OPTMZ=-O LWP_DBG=-g -LWP_OPTMZ=-O NO_STRIP_BIN=-ns NO_STRIP_KRB=-ns +LWP_OPTMZ=-O +PAM_DBG=-g +PAM_OPTMZ= dnl standard programs AC_PROG_RANLIB @@ -39,7 +42,7 @@ case $AFS_SYSNAME in LEX="lex" CSTATIC="-non_shared" DBG="-g3" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -50,7 +53,7 @@ case $AFS_SYSNAME in LEX="flex -l" DBG="-g3" CSTATIC="-non_shared" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -62,7 +65,7 @@ case $AFS_SYSNAME in DBG="-g3" CSTATIC="-non_shared" LWP_OPTMZ="-O2" - MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-pthread -lpthread -lmach -lexc -lc" TXLIBS="-lcurses" XCFLAGS="-D_NO_PROTO -DOSF" @@ -72,13 +75,14 @@ case $AFS_SYSNAME in alpha_linux_22) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -87,13 +91,14 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -102,13 +107,14 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -153,7 +159,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="-O" MT_CC="/opt/ansic/bin/cc -Ae" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-L/opt/dce/lib -ldce" MV="/bin/mv" OPTMZ="-O" @@ -182,7 +188,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="-O" MT_CC="$CC" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" MV="/bin/mv" OPTMZ="-O" @@ -199,7 +205,6 @@ case $AFS_SYSNAME in XCFLAGS="${XCFLAGS0} +DA1.0" XLIBELFA="-lelf" #XLIBS="${LIB_AFSDB} -lnsl" - XLIBS="${LIB_AFSDB}" YACC="/opt/langtools/bin/yacc" SHLIB_LINKER="ld -b" ;; @@ -214,7 +219,7 @@ case $AFS_SYSNAME in LEX="/opt/langtools/bin/lex" LWP_OPTMZ="" MT_CC="$CC" - MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" MV="/bin/mv" OPTMZ="-O" @@ -231,32 +236,33 @@ case $AFS_SYSNAME in XCFLAGS="${XCFLAGS0}" XLIBELFA="-lelf" #XLIBS="${LIB_AFSDB} -lnsl" - XLIBS="${LIB_AFSDB}" YACC="/opt/langtools/bin/yacc" SHLIB_LINKER="ld -b" ;; *fbsd_*) LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-pthread" - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="-lncurses" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="byacc" ;; *nbsd2*|*nbsd3*|*nbsd4*) LEX="flex -l" - MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -D_REENTRANT ' + MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ' MT_LIBS="-lpthread" # XXX -pthread soon - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.so" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="yacc" ;; @@ -264,24 +270,26 @@ case $AFS_SYSNAME in LEX="flex -l" MT_CFLAGS='${XCFLAGS}' MT_LIBS="" - PAM_CFLAGS="-O2 -pipe -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.so" - XCFLAGS="-O2 -pipe" + XCFLAGS="-pipe" YACC="bison -y" ;; ia64_linux24|ia64_linux26) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -G0" + XCFLAGS="-D_LARGEFILE64_SOURCE -G0" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -289,39 +297,42 @@ case $AFS_SYSNAME in CCOBJ="${CC} -fPIC" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; ppc64_linux24) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" - SHLIB_CFLAGS="-fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" + SHLIB_CFLAGS="-fPIC" TXLIBS="/usr/lib64/libncurses.so" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; ppc64_linux26) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_CFLAGS="-fPIC" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -fPIC" + XCFLAGS="-D_LARGEFILE64_SOURCE -fPIC" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -332,13 +343,14 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -349,18 +361,18 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -370,18 +382,19 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -391,18 +404,19 @@ case $AFS_SYSNAME in MT_CC="gcc -pipe" KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" DBG=-g KERN_DBG=-g LWP_DBG=-g LWP_OPTMZ=-O2 OPTMZ=-O2 - PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -410,27 +424,29 @@ case $AFS_SYSNAME in KRB5CFLAGS="-I/usr/include/kerberosV" KRB5LIBS="-lkrb5 -lcrypto" LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-pthread" - PAM_CFLAGS="-O2 -pipe -fpic" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-pipe -fpic" SHLIB_CFLAGS="-fpic" SHLIB_LDFLAGS="-shared -Xlinker -x" SHLIB_LINKER="${MT_CC} -shared" TXLIBS="/usr/lib/libcurses.a" - XCFLAGS="-O2" + XCFLAGS= YACC="yacc" ;; parisc_linux24) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -478,7 +494,7 @@ case $AFS_SYSNAME in ppc_darwin_70) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' LWP_OPTMZ="-O2" @@ -493,7 +509,7 @@ case $AFS_SYSNAME in *_darwin_80) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' KERN_OPTMZ="-Os" @@ -510,7 +526,7 @@ case $AFS_SYSNAME in *_darwin_90) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" LEX="lex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' KROOT= KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers' LD="cc" @@ -528,13 +544,14 @@ case $AFS_SYSNAME in ppc_linux*) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -544,7 +561,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -560,7 +577,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -575,7 +592,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -590,7 +607,7 @@ case $AFS_SYSNAME in LEX="lex" LIBSYS_AIX_EXP="afsl.exp" MT_CC="xlc_r" - MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthreads" SHLIB_SUFFIX="o" TXLIBS="-lcurses" @@ -607,13 +624,15 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" + OPTMZ=-O + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -625,13 +644,14 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" + XCFLAGS="-D_LARGEFILE64_SOURCE" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -643,13 +663,15 @@ case $AFS_SYSNAME in KERN_OPTMZ=-O2 LEX="flex -l" MT_CC="$CC" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x -Xlinker -Bsymbolic" TXLIBS="-lncurses" - XCFLAGS="-O -g -D_LARGEFILE64_SOURCE -D__s390x__" + OPTMZ=-O + XCFLAGS="-D_LARGEFILE64_SOURCE -D__s390x__" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; @@ -659,7 +681,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-64 -mips3" @@ -674,7 +696,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-D_BSD_COMPAT -64 -mips3" @@ -688,7 +710,7 @@ case $AFS_SYSNAME in AFSD_LIBS="/usr/lib32/libdwarf.a /usr/lib32/libelf.a" FSINCLUDES="-I/usr/include/sys/fs" LEX="lex" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-D_BSD_COMPAT -64 -mips3" @@ -706,7 +728,7 @@ case $AFS_SYSNAME in LD="/usr/bin/ld" LEX="lex" MT_CC="/usr/bin/cc" - MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread" TXLIBS="-lcurses" XCFLAGS64="-64 -mips3" @@ -716,36 +738,23 @@ case $AFS_SYSNAME in SHLIB_LINKER="${CC} -shared" ;; - sparc64_linux*) + sparc*_linux*) KERN_OPTMZ=-O2 LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" + PAM_OPTMZ=-O2 + PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC" SHLIB_CFLAGS="-fPIC" SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" - XCFLAGS64="-O2 -D_LARGEFILE64_SOURCE -m64" + XCFLAGS="-D_LARGEFILE64_SOURCE" + XCFLAGS64="-D_LARGEFILE64_SOURCE -m64" XLDFLAGS64="-m64" YACC="bison -y" SHLIB_LINKER="${MT_CC} -shared" ;; - sparc_linux22) - KERN_OPTMZ=-O2 - LEX="flex -l" - MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' - MT_LIBS="-lpthread" - PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" - SHLIB_CFLAGS="-fPIC" - SHLIB_LDFLAGS="-shared -Xlinker -x" - TXLIBS="-lncurses" - XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" - YACC="bison -y" - SHLIB_LINKER="${MT_CC} -shared" - ;; - sun4_413) CCXPG2="/usr/xpg2bin/cc" CC="gcc" @@ -765,7 +774,7 @@ case $AFS_SYSNAME in CCOBJ="/opt/SUNWspro/bin/cc" LEX="lex" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" SHLIB_CFLAGS="-KPIC" TXLIBS="-lcurses" @@ -783,7 +792,7 @@ case $AFS_SYSNAME in CCOBJ="/opt/SUNWspro/bin/cc" LEX="lex" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -805,7 +814,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -827,7 +836,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -849,7 +858,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -871,14 +880,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -xarch=v9' + XCFLAGS64='${XCFLAGS} -m64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -893,14 +902,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -m64' + XCFLAGS64='${XCFLAGS} -xarch=v9' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -915,7 +924,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -936,7 +945,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -957,7 +966,7 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" @@ -978,14 +987,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -xarch=amd64' + XCFLAGS64='${XCFLAGS} -m64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -999,14 +1008,14 @@ case $AFS_SYSNAME in LEX="lex" LD="/usr/ccs/bin/ld" MT_CC="/opt/SUNWspro/bin/cc" - MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}' + MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}' MT_LIBS="-lpthread -lsocket" PAM_CFLAGS="-KPIC" PAM_LIBS="-lc -lpam -lsocket -lnsl -lm" SHLIB_CFLAGS="-KPIC" SHLIB_LDFLAGS="-G -Bsymbolic" TXLIBS="-lcurses" - XCFLAGS64='${XCFLAGS} -m64' + XCFLAGS64='${XCFLAGS} -xarch=amd64' XCFLAGS="-dy -Bdynamic" XLIBELFA="-lelf" XLIBKVM="-lkvm" @@ -1051,6 +1060,18 @@ case $AFS_SYSNAME in ;; esac + + +dnl pthreads fixes +case $AFS_SYSNAME in +dnl we'll go ahead and turn on XOPEN2K and ISO_C99 +dnl if this causes problems, we should scale back to _XOPEN_SOURCE=500 + *linux*) + MT_CFLAGS="${MT_CFLAGS} -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" + ;; +esac + + dnl Disable the default for debugging/optimization if not enabled if test "x$enable_debug_kernel" = "xno"; then KERN_DBG= @@ -1122,6 +1143,8 @@ AC_SUBST(NO_STRIP_KRB) AC_SUBST(OPTMZ) AC_SUBST(PAM_CFLAGS) AC_SUBST(PAM_LIBS) +AC_SUBST(PAM_DBG) +AC_SUBST(PAM_OPTMZ) AC_SUBST(PINSTALL_LIBS) AC_SUBST(RANLIB) AC_SUBST(REGEX_OBJ) diff --git a/src/cmd/Makefile.am b/src/cmd/Makefile.am deleted file mode 100644 index 00a5791af..000000000 --- a/src/cmd/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:49 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -afsincludedir = $(top_builddir)/include/afs -afsinclude_HEADERS = com_err.h error_table.h mit-sipb-cr.h -afsbuild_HEADERZ=$(afsinclude_HEADERS) - -bin_PROGRAMS = compile_et - -compile_et_SOURCES = compile_et.c parse.y lex.l -compile_et_LDADD = -L../util -lutil - -lib_LIBRARIES=libcom_err.a - -libcom_err_a_SOURCES = error_msg.c et_name.c com_err.c diff --git a/src/cmd/cmd.c b/src/cmd/cmd.c index 9bf491d54..218249564 100644 --- a/src/cmd/cmd.c +++ b/src/cmd/cmd.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/cmd/cmd.c,v 1.11.2.3 2008/01/13 15:33:53 jaltman Exp $"); + ("$Header: /cvs/openafs/src/cmd/cmd.c,v 1.12.4.3 2008/01/13 15:35:41 jaltman Exp $"); #include #include @@ -57,8 +57,8 @@ SubString(register char *amain, register char *asub) { int mlen, slen; register int i, j; - mlen = strlen(amain); - slen = strlen(asub); + mlen = (int) strlen(amain); + slen = (int) strlen(asub); j = mlen - slen; if (j < 0) return 0; /* not a substring */ diff --git a/src/cmd/test/NTMakefile b/src/cmd/test/NTMakefile index a54d581c5..20b93f71d 100644 --- a/src/cmd/test/NTMakefile +++ b/src/cmd/test/NTMakefile @@ -23,7 +23,9 @@ ITEST_EXEFILE = $(OUT)\itest.exe $(ITEST_EXEFILE): $(ITEST_EXEOBJS) $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) #build ctest.exe CTEST_EXEOBJS =\ @@ -33,7 +35,9 @@ CTEST_EXEFILE = $(OUT)\ctest.exe $(CTEST_EXEFILE): $(CTEST_EXEOBJS) $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) # build dtest.exe DTEST_EXEOBJS =\ @@ -43,7 +47,9 @@ DTEST_EXEFILE = $(OUT)\dtest.exe $(DTEST_EXEFILE): $(DTEST_EXEOBJS) $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) all: test diff --git a/src/cmd/test/ctest.c b/src/cmd/test/ctest.c index 4f1197668..b9656ce9e 100644 --- a/src/cmd/test/ctest.c +++ b/src/cmd/test/ctest.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/cmd/test/ctest.c,v 1.6.2.1 2007/10/31 04:13:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/cmd/test/ctest.c,v 1.6.14.1 2007/10/31 04:09:26 shadow Exp $"); #include "cmd.h" #include diff --git a/src/cmd/test/dtest.c b/src/cmd/test/dtest.c index f4bb036c3..6a2d6dc02 100644 --- a/src/cmd/test/dtest.c +++ b/src/cmd/test/dtest.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/cmd/test/dtest.c,v 1.6.2.1 2007/10/31 04:13:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/cmd/test/dtest.c,v 1.6.14.1 2007/10/31 04:09:26 shadow Exp $"); #include "cmd.h" #include diff --git a/src/cmd/test/itest.c b/src/cmd/test/itest.c index d03e42e83..f8390578f 100644 --- a/src/cmd/test/itest.c +++ b/src/cmd/test/itest.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/cmd/test/itest.c,v 1.7.2.2 2007/10/31 04:13:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/cmd/test/itest.c,v 1.7.14.2 2007/10/31 04:09:26 shadow Exp $"); #include "cmd.h" #include diff --git a/src/comerr/Makefile.am b/src/comerr/Makefile.am deleted file mode 100644 index 34d11d5ee..000000000 --- a/src/comerr/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:50 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -YFLAGS = -d - -afsincludedir = $(top_builddir)/include/afs -afsinclude_HEADERS = com_err.h error_table.h mit-sipb-cr.h -afsbuild_HEADERZ=$(afsinclude_HEADERS) - -bin_PROGRAMS = compile_et - -compile_et_SOURCES = compile_et.c parse.y lex.l -compile_et_LDADD = -L../util -lutil - -lib_LIBRARIES=libcom_err.a - -libcom_err_a_SOURCES = error_msg.c et_name.c com_err.c diff --git a/src/comerr/NTMakefile b/src/comerr/NTMakefile index 27b65a810..d2c8ba7d1 100644 --- a/src/comerr/NTMakefile +++ b/src/comerr/NTMakefile @@ -37,6 +37,8 @@ $(COMERR_LIBFILE): $(COMERR_LIBOBJS) # build and install the compile_et executable COMPILE_ET_EXEFILE = $(DESTDIR)\bin\compile_et.exe +COMPILE_ET_EXERES = $(OUT)\compile_et.res + prep: $(DESTDIR)\bin\touch et_lex.lex_nt.c $(DESTDIR)\bin\touch error_table_nt.c @@ -52,15 +54,19 @@ COMPILE_ET_EXEOBJS =\ $(OUT)\compile_et.obj \ $(OUT)\error_table_nt.obj +$(COMPILE_ET_EXERES): compile_et.rc AFS_component_version_number.h + $(COMPILE_ET_EXEOBJS): $$(@B).c $(C2OBJ) $** COMPILE_ET_EXELIBS =\ $(DESTDIR)\lib\afs\afsutil.lib -$(COMPILE_ET_EXEFILE): $(COMPILE_ET_EXEOBJS) $(COMPILE_ET_EXELIBS) +$(COMPILE_ET_EXEFILE): $(COMPILE_ET_EXEOBJS) $(COMPILE_ET_EXERES) $(COMPILE_ET_EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) #################################################################### install: prep $(INCFILES) $(COMERR_LIBFILE) $(COMPILE_ET_EXEFILE) @@ -70,6 +76,7 @@ install9x: install clean:: $(DEL) $(COMERR_LIBFILE) $(OUT)\AFS_component_version_number.obj $(DEL) $(COMPILE_ET_EXEFILE) + $(DEL) $(COMPILE_ET_EXERES); $(DEL) *~ *.bak \ *.otl *.aux *.toc *.PS *.dvi *.x9700 *.ps \ *.cp *.fn *.ky *.log *.pg *.tp *.vr \ diff --git a/src/comerr/com_err.c b/src/comerr/com_err.c index babaf419b..c8093cbb0 100644 --- a/src/comerr/com_err.c +++ b/src/comerr/com_err.c @@ -8,7 +8,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/comerr/com_err.c,v 1.5.2.1 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/comerr/com_err.c,v 1.5.14.1 2007/04/10 18:39:51 shadow Exp $"); #include "internal.h" #include diff --git a/src/comerr/compile_et.c b/src/comerr/compile_et.c index 72b7489e6..81608a3fb 100644 --- a/src/comerr/compile_et.c +++ b/src/comerr/compile_et.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/comerr/compile_et.c,v 1.14.2.1 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/comerr/compile_et.c,v 1.14.14.1 2007/04/10 18:39:51 shadow Exp $"); #include #include diff --git a/src/comerr/compile_et.rc b/src/comerr/compile_et.rc new file mode 100644 index 000000000..b2bb18e7f --- /dev/null +++ b/src/comerr/compile_et.rc @@ -0,0 +1,17 @@ +/* + * Copyright 2000, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* Define VERSIONINFO resource */ + +#define AFS_VERINFO_FILE_DESCRIPTION "AFS Common Error Table Compilation Tool" +#define AFS_VERINFO_NAME "compile_et" +#define AFS_VERINFO_FILENAME "compile_et.exe" + +#include "AFS_component_version_number.h" +#include "..\config\NTVersioninfo.rc" diff --git a/src/comerr/error_msg.c b/src/comerr/error_msg.c index 76ea9ebc5..947766c3a 100644 --- a/src/comerr/error_msg.c +++ b/src/comerr/error_msg.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/comerr/error_msg.c,v 1.5.2.2 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/comerr/error_msg.c,v 1.6.8.1 2007/04/10 18:39:51 shadow Exp $"); #include "internal.h" #include diff --git a/src/comerr/error_table.h b/src/comerr/error_table.h index 1de47dd30..e26b1c93d 100644 --- a/src/comerr/error_table.h +++ b/src/comerr/error_table.h @@ -29,7 +29,7 @@ extern char const *afs_error_table_name(afs_int32 num); extern void afs_add_to_error_table(struct et_list *new_table); #ifdef AFS_OLD_COM_ERR #define error_table_name afs_error_table_name -#define add_to_error_table(X) afs_add_to_error_table(X) +#define add_to_error_table(X) afs_add_to_error_table(X) #endif /* AFS_OLD_COM_ERR */ #define _AFS_ET_H #endif diff --git a/src/comerr/et_name.c b/src/comerr/et_name.c index 3b0997721..e322a0dc2 100644 --- a/src/comerr/et_name.c +++ b/src/comerr/et_name.c @@ -9,7 +9,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/comerr/et_name.c,v 1.5.2.1 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/comerr/et_name.c,v 1.5.14.1 2007/04/10 18:39:51 shadow Exp $"); #include "error_table.h" #include "mit-sipb-cr.h" diff --git a/src/comerr/internal.h b/src/comerr/internal.h index 83897d894..877e12910 100644 --- a/src/comerr/internal.h +++ b/src/comerr/internal.h @@ -1,5 +1,5 @@ /* - * internal include file for com_err package + * internal include file for afs_com_err package * */ #include "mit-sipb-cr.h" diff --git a/src/comerr/test/NTMakefile b/src/comerr/test/NTMakefile index 2a1aa9e99..d138ef815 100644 --- a/src/comerr/test/NTMakefile +++ b/src/comerr/test/NTMakefile @@ -18,7 +18,9 @@ EXELIBS =\ $(EXEFILE): $(EXEOBJS) # dependents built from predefined inference rules $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) test1.c test1.h: test1.et $(DEL) test1.c test1.h diff --git a/src/comerr/test/test.c b/src/comerr/test/test.c index aebd87dcd..dfaaf7459 100644 --- a/src/comerr/test/test.c +++ b/src/comerr/test/test.c @@ -2,7 +2,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/comerr/test/test.c,v 1.6.2.1 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/comerr/test/test.c,v 1.6.14.1 2007/04/10 18:39:51 shadow Exp $"); #include #include diff --git a/src/config/Makefile.am b/src/config/Makefile.am deleted file mode 100644 index b0b6217a1..000000000 --- a/src/config/Makefile.am +++ /dev/null @@ -1,18 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:50 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -afsincludedir = $(includedir)/afs -afsinclude_HEADERS = \ - stds.h \ - icl.h \ - afs_args.h \ - venus.h \ - debug.h \ - param.h \ - afs_sysnames.h - -afsbuild_HEADERZ=$(afsinclude_HEADERS) - -param.h: param.$(SYSNAME).h - cp $(srcdir)/param.$(SYSNAME).h param.h diff --git a/src/config/Makefile.config.in b/src/config/Makefile.config.in index ebdf35a1b..eeeb59d4f 100644 --- a/src/config/Makefile.config.in +++ b/src/config/Makefile.config.in @@ -48,6 +48,8 @@ LEX = @LEX@ LIB_AFSDB = @LIB_AFSDB@ LIBS = @LIBS@ LINUX_KERNEL_PATH = @LINUX_KERNEL_PATH@ +LINUX_LIBAFS_NAME=@LINUX_LIBAFS_NAME@ +LINUX_KERNEL_PACKAGING=@LINUX_KERNEL_PACKAGING@ LINUX_VERSION = @LINUX_VERSION@ LINUX_VERS = @LINUX_VERSION@ LWP_OPTMZ = @LWP_OPTMZ@ @@ -63,6 +65,9 @@ NO_STRIP_KRB = @NO_STRIP_KRB@ OPTMZ = @OPTMZ@ PAM_CFLAGS = @PAM_CFLAGS@ PAM_LIBS = @PAM_LIBS@ +PAM_OPTMZ = @PAM_OPTMZ@ +PAM_DBG = @PAM_DBG@ +PATH_CPP = @PATH_CPP@ PINSTALL_LIBS = @PINSTALL_LIBS@ RANLIB = @RANLIB@ REGEX_OBJ = @REGEX_OBJ@ diff --git a/src/config/NTDllmap.txt b/src/config/NTDllmap.txt index 9d1770162..52d66f3c0 100644 --- a/src/config/NTDllmap.txt +++ b/src/config/NTDllmap.txt @@ -1,6 +1,6 @@ -afspthread.dll 0x61000000 0x00080000 -afsrpc.dll 0x61080000 0x00080000 -afsauthent.dll 0x61100000 0x00080000 +afspthread.dll 0x61000000 0x00040000 +afsrpc.dll 0x61040000 0x00100000 +afsauthent.dll 0x61140000 0x000B0000 afspioctl.dll 0x61200000 0x00080000 afsprocmgmt.dll 0x61280000 0x00080000 afsadminutil.dll 0x61300000 0x00080000 diff --git a/src/config/NTMakefile b/src/config/NTMakefile index 18e7e86a1..e0fce46a3 100644 --- a/src/config/NTMakefile +++ b/src/config/NTMakefile @@ -173,6 +173,9 @@ idirs: doclink ! IF (!EXIST($(OJT)\rx\test)) $(MKDIR) $(OJT)\rx\test ! ENDIF +! IF (!EXIST($(OJT)\rxdebug)) + $(MKDIR) $(OJT)\rxdebug +! ENDIF ! IF (!EXIST($(OJT)\rxgen)) $(MKDIR) $(OJT)\rxgen ! ENDIF @@ -374,6 +377,9 @@ idirs: doclink ! IF (!EXIST($(OJT)\WINNT\license\lang)) $(MKDIR) $(OJT)\WINNT\license\lang ! ENDIF +! IF (!EXIST($(OJT)\WINNT\netidmgr_plugin)) + $(MKDIR) $(OJT)\WINNT\netidmgr_plugin +! ENDIF ! IF (!EXIST($(OJT)\WINNT\pthread)) $(MKDIR) $(OJT)\WINNT\pthread ! ENDIF @@ -495,15 +501,24 @@ INCTOOLS = \ $(INCTOOLS):$(OUT)\$$(@F) $(COPY) $** $(DESTDIR)\bin\. +!IF ("$(AFSVER_CL)"=="1400") + $(COPY) $**.manifest $(DESTDIR)\bin\. +!ENDIF $(OUT)\mkvers.exe : $(OUT)\mkvers.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\touch.exe : $(OUT)\touch.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\util_cr.exe : $(OUT)\util_cr.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) langsetup: $(DESTDIR)\bin\NTLang.bat @@ -518,8 +533,8 @@ clean_version: clean:: $(DEL) $(DESTDIR)\LIB\*.DLL - $(DEL) $(DESTDIR)\bin\mkver.exe - $(DEL) $(DESTDIR)\bin\touch.exe - $(DEL) $(OUT)\util_cr.exe - $(DEL) $(OUT)\mkver.exe - $(DEL) $(OUT)\touch.exe + $(DEL) $(DESTDIR)\bin\mkver.exe* + $(DEL) $(DESTDIR)\bin\touch.exe* + $(DEL) $(OUT)\util_cr.exe* + $(DEL) $(OUT)\mkver.exe* + $(DEL) $(OUT)\touch.exe* diff --git a/src/config/NTMakefile.amd64_w2k b/src/config/NTMakefile.amd64_w2k index cee35c5db..ba4c77377 100644 --- a/src/config/NTMakefile.amd64_w2k +++ b/src/config/NTMakefile.amd64_w2k @@ -21,10 +21,10 @@ # AFSROOT - ROOT Directory so that $(AFSROOT)\scr is location of source # ############################################################################ -# Optional compliation flags -# NO_CRTDBG - used to disable some builds for CFTDBG allocate mapping -# _CRTDBG_MAP_ALLOC = (default is null) -# VADUMP - define VADUMP=1 if you are going to use the vadump utility and you are using V6.0 +# Optional compliation flags +# NO_CRTDBG - used to disable some builds for CFTDBG allocate mapping +# _CRTDBG_MAP_ALLOC = (default is null) +# VADUMP - define VADUMP=1 if you are going to use the vadump utility and you are using V6.0 # ####### Special optional defines @@ -37,6 +37,10 @@ #sanity checks +!IF ("$(CPU)" != "AMD64") +!ERROR Platform SDK not configured for AMD64 +!ENDIF + !IF EXISTS("TOOLS.INI") !MESSAGE ************CAUTION TOOLS.INI IN EFFECT********** !ENDIF @@ -79,8 +83,8 @@ LIB = $(AFSDEV_LIB) #define used in WinNT/2000 installation and program version display AFSPRODUCT_VER_MAJOR=1 -AFSPRODUCT_VER_MINOR=4 -AFSPRODUCT_VER_PATCH=400 +AFSPRODUCT_VER_MINOR=5 +AFSPRODUCT_VER_PATCH=5000 AFSPRODUCT_VER_BUILD=0 AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH) @@ -99,11 +103,11 @@ OBJ=obj !IF ("$(AFS_OBJDIR)"=="") ######### AFS_OBJDIR is NOT used use default locations ! IF ("$(AFSDEV_BUILDTYPE)" == "CHECKED") -DESTDIR=$(AFSROOT)\$(DEST)\checked -OJT=$(AFSROOT)\$(OBJ)\checked +DESTDIR=$(AFSROOT)\$(DEST)\$(SYS_NAME)\checked +OJT=$(AFSROOT)\$(OBJ)\$(SYS_NAME)\checked ! ELSE -DESTDIR=$(AFSROOT)\$(DEST)\free -OJT=$(AFSROOT)\$(OBJ)\free +DESTDIR=$(AFSROOT)\$(DEST)\$(SYS_NAME)\free +OJT=$(AFSROOT)\$(OBJ)\$(SYS_NAME)\free ! ENDIF UTIL_CR = $(DESTDIR)\bin\util_cr.exe !ELSE @@ -112,21 +116,21 @@ UTIL_CR = $(DESTDIR)\bin\util_cr.exe ! IF (EXIST($(AFSROOT)\$(AFS_OBJDIR))) # AFS_OBJDIR is relative path ! IF ("$(AFSDEV_BUILDTYPE)" == "CHECKED") -DESTDIR=$(AFSROOT)\$(AFS_OBJDIR)\$(DEST)\checked -OJT=$(AFSROOT)\$(AFS_OBJDIR)\checked\config +DESTDIR=$(AFSROOT)\$(AFS_OBJDIR)\$(DEST)\$(SYS_NAME)\checked +OJT=$(AFSROOT)\$(AFS_OBJDIR)\$(SYS_NAME)\checked\config ! ELSE -OJT=$(AFSROOT)\$(AFS_OBJDIR)\free\config -DESTDIR=$(AFSROOT)\$(AFS_OBJDIR)\$(DEST)\free +OJT=$(AFSROOT)\$(AFS_OBJDIR)\$(SYS_NAME)\free\config +DESTDIR=$(AFSROOT)\$(AFS_OBJDIR)\$(DEST)\$(SYS_NAME)\free ! ENDIF ! ELSE ! IF (EXIST($(AFS_OBJDIR))) # AFS_OBJDIR is full path ! IF ("$(AFSDEV_BUILDTYPE)" == "CHECKED") -DESTDIR=$(AFS_OBJDIR)\$(DEST)\checked -OJT=$(AFS_OBJDIR)\checked\config +DESTDIR=$(AFS_OBJDIR)\$(DEST)\$(SYS_NAME)\checked +OJT=$(AFS_OBJDIR)\$(SYS_NAME)\checked\config ! ELSE -DESTDIR=$(AFS_OBJDIR)\$(DEST)\free -OJT=$(AFS_OBJDIR)\free\config +DESTDIR=$(AFS_OBJDIR)\$(DEST)\$(SYS_NAME)\free +OJT=$(AFS_OBJDIR)\$(SYS_NAME)\free\config ! ENDIF ! ELSE !ERROR Can't find location of DEST directory! @@ -164,16 +168,10 @@ OUT=$(OJT)\$(RELDIR) # WIN32.MAK, and this nmake file, are targeted to the MSVC compiler; # port this nmake file if additional compiler support is required. -# !IF ("$(AFSVER_CL)"=="1300") -# afslflags = $(afslflags) /DEBUG -# !ENDIF - !IF ("$(APPVER)" == "") -APPVER=5.0 +APPVER=5.02 !ENDIF - - !INCLUDE # Extend and/or supplement definitions in WIN32.MAK. @@ -210,14 +208,20 @@ afscdefs =\ -I$(DESTDIR)\include\rx \ -DWIN32_LEAN_AND_MEAN \ -DSTRICT \ - -D_WIN32_IE=0x0500 \ - -D_WIN32_WINNT=0x0500 \ - -DWINVER=0x0500 \ - -DREGISTER_POWER_NOTIFICATIONS \ - -DAFS_AFSDB_ENV \ - -DAFS_FREELANCE_CLIENT \ - -DAFS_64BIT_ENV \ + -D_WIN32_IE=0x0502 \ + -D_WIN32_WINNT=0x0502 \ + -DWINVER=0x0502 \ + -DREGISTER_POWER_NOTIFICATIONS \ + -DAFS_AFSDB_ENV \ + -DAFS_FREELANCE_CLIENT \ + -DAFS_64BIT_ENV \ -DAFS_64BIT_CLIENT \ + -DAFS_LARGEFILE_ENV \ + -D_USE_DECLSPECS_FOR_SAL=0 \ + -D_USE_ATTRIBUTES_FOR_SAL=0 \ + -D_ATL_SECURE_NO_DEPRECATE \ + -D_AFX_DISABLE_DEPRECATED \ + -D_AFX_SECURE_NO_WARNINGS \ $(AFSDEV_AUXCDEFINES) # Compiler switches (except include paths and preprocessor defines) @@ -228,19 +232,17 @@ afscdefs =\ # /GF pool strings and place in read-only memory # /Gd use cdecl calling convention by default # /Gy enable function-level linking -# /GX enable C++ exceptions (assumes extern C funcs never throw exceptions) +# /EHsc enable C++ exceptions (assumes extern C funcs never throw exceptions) # /Os favor small (over fast) code; seems to avoid 64-bit bugs in VC compiler -# /Wp64 64-bit porting warnings afscflags =\ /Oy- \ /GF \ /Gd \ /Gy \ - /Os \ - /Wp64 + /Os -!IF ("$(AFSVER_CL)"=="1400") +!IF ("$(AFSVER_CL)"=="1400" || "$(AFSVER_CL)"=="1500") afscflags = $(afscflags) /EHsc /wd4996 !ELSE afscflags = $(afscflags) /GX @@ -249,7 +251,7 @@ afscflags = $(afscflags) /GX !IF ("$(AFSVER_CL)"!="1200") afscflags = $(afscflags) /GT /GS #/Wp64 -!IF ("$(AFSVER_CL)"!="1400") +!IF ("$(AFSVER_CL)"!="1400" && "$(AFSVER_CL)"!="1500") afscflags = $(afscflags) /G7 !ENDIF !ENDIF @@ -259,12 +261,11 @@ afscdefs = $(afscdefs) -DAFSIFS !ENDIF !IF ("$(AFSDEV_BUILDTYPE)" == "FREE") - afscflags = $(afscflags) /Ox /Zi cdebug = $(cdebug:-Od=) # avoid annoying override warning (D4025) cvarsdll = $(cvarsdll:-MDd=-MD) NODEBUG=1 - +_VC_MANIFEST_BASENAME = __OAFW !ELSE # CHECKED BUILD cdebug = $(cdebug:-Z7=-Zi) # avoid annoying override warning (D4025) @@ -279,6 +280,25 @@ afscflags = $(afscflags) -D_DEBUG -D_CRTDBG_MAP_ALLOC !ENDIF !UNDEF NODEBUG +_VC_MANIFEST_BASENAME = __OAFW.Debug +!ENDIF + +!IF ("$(AFSVER_CL)"=="1400" || "$(AFSVER_CL)"=="1500") +_VC_MANIFEST_EMBED_EXE= \ +if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;1 + +_VC_MANIFEST_EMBED_DLL= \ +if exist $@.manifest mt.exe -manifest $@.manifest -outputresource:$@;2 +!ELSE +_VC_MANIFEST_EMBED_EXE= +_VC_MANIFEST_EMBED_DLL= +!ENDIF + +!IF DEFINED(CODESIGN_DESC) && DEFINED(CODESIGN_URL) && DEFINED(CODESIGN_TIMESTAMP) +CODESIGN_USERLAND= signtool.exe sign /a /d "$(CODESIGN_DESC)" /du $(CODESIGN_URL) \ + /t $(CODESIGN_TIMESTAMP) /v $@ +!ELSE +CODESIGN_USERLAND= !ENDIF # Set compiler warning level @@ -294,6 +314,9 @@ AFSDEV_WARNLEVEL = 3 !ERROR Must define AFSDEV_WARNLEVEL to be one of 0 through 4. !ENDIF !ENDIF +!IF ("$(AFSDEV_WARNLEVEL)" == "4" && "$(AFSVER_CL)" == "1500") +_AFSDEV_WARNLEVEL=3 +!ENDIF afscflags = $(afscflags) /W$(AFSDEV_WARNLEVEL) @@ -317,10 +340,6 @@ CPP2OBJ = $(C2OBJ) .rc{$(OUT)\}.res: $(RC) /fo$(OUT)\$($(VERSFILE).c - echo char* AFSVersion = "OpenAFS$(AFSPRODUCT_VERSION)"; >>$(VERSFILE).c + echo char $(CML_PREFIX)cml_version_number[]="@(#)OpenAFS_$(AFSPRODUCT_VERSION)"; >$(VERSFILE).c + echo char* AFSVersion = "OpenAFS_$(AFSPRODUCT_VERSION)"; >>$(VERSFILE).c $(VERSFILE).h: - echo #define AFS_VERINFO_BUILD "OpenAFS$(AFSPRODUCT_VERSION)" >$(VERSFILE).h + echo #define AFS_VERINFO_BUILD "OpenAFS_$(AFSPRODUCT_VERSION)" >$(VERSFILE).h echo #define AFS_VERINFO_FILEVER $(AFSPRODUCT_FILE_VERSION) >>$(VERSFILE).h + echo #define AFSPRODUCT_VERSION "$(AFSPRODUCT_VERSION)" >> $(VERSFILE).h $(VERSFILE).txt: - echo OpenAFS$(AFSPRODUCT_VERSION)>$(VERSFILE).txt + echo OpenAFS_$(AFSPRODUCT_VERSION)>$(VERSFILE).txt diff --git a/src/config/NTVersioninfo.rc b/src/config/NTVersioninfo.rc index 569b0021c..920275003 100644 --- a/src/config/NTVersioninfo.rc +++ b/src/config/NTVersioninfo.rc @@ -27,7 +27,7 @@ BEGIN BLOCK "000004E4" BEGIN VALUE "CompanyName", "OpenAFS Project", "\0" - VALUE "LegalCopyright", "Copyright \251 IBM Corporation and others, 1998, 1999, 2000, 2001, 2002, 2003.", "\0" + VALUE "LegalCopyright", "Copyright \251 IBM Corporation and many others, 1998-2008.", "\0" VALUE "ProductName", "OpenAFS for Windows", "\0" VALUE "ProductVersion", AFSPRODUCT_VERSION, "\0" VALUE "FileVersion", AFSPRODUCT_VERSION, "\0" diff --git a/src/config/afs_args.h b/src/config/afs_args.h index d124efce7..2db7d3443 100644 --- a/src/config/afs_args.h +++ b/src/config/afs_args.h @@ -47,6 +47,7 @@ #define AFSOP_BASIC_INIT 36 /* used to be part of START_AFS */ #define AFSOP_SET_BACKUPTREE 37 /* enable backup tree support */ #define AFSOP_SET_RXPCK 38 /*set rx_extraPackets*/ +#define AFSOP_BUCKETPCT 39 /* bucket percentage */ /* The range 20-30 is reserved for AFS system offsets in the afs_syscall */ #define AFSCALL_PIOCTL 20 @@ -191,6 +192,12 @@ typedef struct cm_initparams_v1 { #define PROC_SYSCALL_FNAME "/proc/fs/openafs/afs_ioctl" #define PROC_SYSCALL_ARLA_FNAME "/proc/fs/nnpfs/afs_ioctl" #define PROC_CELLSERVDB_NAME "CellServDB" +#define PROC_PEER_NAME "rx_peer" +#define PROC_CONN_NAME "rx_conn" +#define PROC_CALL_NAME "rx_call" +#define PROC_RX_NAME "rx" +#define PROC_SERVICES_NAME "rx_services" +#define PROC_RXSTATS_NAME "rx_stats" #define VIOC_SYSCALL_TYPE 'C' #define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE,1,void *) #define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE,1,int) diff --git a/src/config/afs_sysnames.h b/src/config/afs_sysnames.h index 4fdeac5e2..36b18d15f 100644 --- a/src/config/afs_sysnames.h +++ b/src/config/afs_sysnames.h @@ -184,6 +184,8 @@ #define SYS_NAME_ID_i386_fbsd_53 2108 #define SYS_NAME_ID_i386_fbsd_60 2112 #define SYS_NAME_ID_i386_fbsd_61 2113 +#define SYS_NAME_ID_i386_fbsd_62 2114 +#define SYS_NAME_ID_i386_fbsd_70 2115 #define SYS_NAME_ID_ia64_linux2 2200 #define SYS_NAME_ID_ia64_linux22 2201 @@ -240,7 +242,6 @@ #define SYS_NAME_ID_i386_obsd38 2607 #define SYS_NAME_ID_i386_obsd39 2608 #define SYS_NAME_ID_i386_obsd40 2609 -#define SYS_NAME_ID_i386_obsd41 2610 #define SYS_NAME_ID_amd64_linux2 2700 #define SYS_NAME_ID_amd64_linux22 2701 @@ -291,4 +292,6 @@ #ifdef AFS_KERBREALM_ENV #define AFS_REALM_SZ 64 #endif +/* Specifies the number of equivalent local realm names */ +#define AFS_NUM_LREALMS 4 #endif /* __AFS_SYSNAMES_INCL_ENV_ */ diff --git a/src/config/afsconfig-windows.h b/src/config/afsconfig-windows.h index bf51984cd..bf882ca79 100644 --- a/src/config/afsconfig-windows.h +++ b/src/config/afsconfig-windows.h @@ -168,6 +168,12 @@ /* Define if you have the header file. */ #define HAVE_WINSOCK2_H +/* Define if you have vsnprintf */ +#define HAVE_VSNPRINTF 1 + +/* Define if you have snprintf */ +#define HAVE_SNPRINTF 1 + /* Name of package */ #undef PACKAGE diff --git a/src/config/afsconfig.h.in b/src/config/afsconfig.h.in index 241d8bee2..a17e24efb 100644 --- a/src/config/afsconfig.h.in +++ b/src/config/afsconfig.h.in @@ -1,8 +1,18 @@ /* src/config/afsconfig.h.in. Generated from configure.in by autoheader. */ +/* define if you want to decode icmp unreachable packets to discover path mtu + */ +#undef ADAPT_PMTU + +/* define if asynchronous socket errors can be received */ +#undef ADAPT_PMTU_RECVERR + /* define if you want to want search afsdb rr */ #undef AFS_AFSDB_ENV +/* define if you want support for disconnected operation */ +#undef AFS_DISCON_ENV + /* define if you want large file fileserver */ #undef AFS_LARGEFILE_ENV @@ -37,21 +47,33 @@ /* define if prev_task defined */ #undef DEFINED_PREV_TASK +/* define if you want the demand attach fileserver */ +#undef DEMAND_ATTACH_ENABLE + /* define if your dops.d_revalidate takes a nameidata argument */ #undef DOP_REVALIDATE_TAKES_NAMEIDATA /* define if your kernel has do_sync_read() */ #undef DO_SYNC_READ +/* define if d_path() takes a struct path argument */ +#undef D_PATH_TAKES_STRUCT_PATH + /* define if you have redhat buildsystem */ #undef ENABLE_REDHAT_BUILDSYS /* define if sys/param.h defines the endiness */ #undef ENDIANESS_IN_SYS_PARAM_H +/* define if find_task_by_pid() is usable */ +#undef EXPORTED_FIND_TASK_BY_PID + /* define if your kernel exports init_mm */ #undef EXPORTED_INIT_MM +/* define if proc_root_fs is exported */ +#undef EXPORTED_PROC_ROOT_FS + /* define if rcu_read_lock() is usable */ #undef EXPORTED_RCU_READ_LOCK @@ -70,6 +92,9 @@ /* define if tasklist_lock exported */ #undef EXPORTED_TASKLIST_LOCK +/* define if linux/exportfs.h exists */ +#undef EXPORTFS_H_EXISTS + /* define if you want to have fast restart */ #undef FAST_RESTART @@ -152,6 +177,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_KERBEROSV_HEIM_ERR_H +/* define if your linux kernel provides hlist_unhashed */ +#undef HAVE_KERNEL_HLIST_UNHASHED + /* define if your linux kernel has linux/seq_file.h */ #undef HAVE_KERNEL_LINUX_SEQ_FILE_H @@ -200,6 +228,9 @@ /* define if krb5_prompt has type */ #undef HAVE_KRB5_PROMPT_TYPE +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_ERRQUEUE_H + /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H @@ -308,6 +339,9 @@ /* define if you have a struct buf */ #undef HAVE_STRUCT_BUF +/* define if svc_add_in exists */ +#undef HAVE_SVC_ADDR_IN + /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H @@ -379,6 +413,9 @@ /* Define to 1 if you have the `utimes' function. */ #undef HAVE_UTIMES +/* Define to 1 if you have the header file. */ +#undef HAVE_VALUES_H + /* define if struct ufsvfs has vfs_dqrwlock */ #undef HAVE_VFS_DQRWLOCK @@ -436,6 +473,9 @@ /* define if your refrigerator takes PF_FREEZE */ #undef LINUX_REFRIGERATOR_TAKES_PF_FREEZE +/* define if kernel uses new export ops */ +#undef NEW_EXPORT_OPS + /* Name of package */ #undef PACKAGE diff --git a/src/config/make_libafs_tree.pl b/src/config/make_libafs_tree.pl old mode 100644 new mode 100755 diff --git a/src/config/param.alpha_linux_26.h b/src/config/param.alpha_linux_26.h index 1d44da6d7..33ef100a4 100644 --- a/src/config/param.alpha_linux_26.h +++ b/src/config/param.alpha_linux_26.h @@ -23,7 +23,6 @@ #define AFS_ALPHA_LINUX26_ENV 1 #define __alpha 1 #define AFS_LINUX_64BIT_KERNEL 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 338 @@ -80,7 +79,11 @@ #define SYS_NAME "alpha_linux_26" #define SYS_NAME_ID SYS_NAME_ID_alpha_linux_26 - +#ifdef __GLIBC__ +#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) +#define USE_UCONTEXT +#endif +#endif #endif /* AFS_PARAM_H */ #else /* !defined(UKERNEL) */ diff --git a/src/config/param.amd64_linux26.h b/src/config/param.amd64_linux26.h index 9d417c0ed..570fdb546 100644 --- a/src/config/param.amd64_linux26.h +++ b/src/config/param.amd64_linux26.h @@ -20,7 +20,6 @@ #define AFS_AMD64_LINUX24_ENV 1 #define AFS_AMD64_LINUX26_ENV 1 #define AFS_LINUX_64BIT_KERNEL 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 183 diff --git a/src/config/param.amd64_w2k.h b/src/config/param.amd64_w2k.h index c7ed94e7a..3b7eb7684 100644 --- a/src/config/param.amd64_w2k.h +++ b/src/config/param.amd64_w2k.h @@ -32,7 +32,7 @@ * and has no typedef for ssize_t (a signed size_t). * So, we make our own. */ -typedef int ssize_t; +typedef __int64 ssize_t; /* these macros define Unix-style functions missing in VC++5.0/NT4.0 */ #define MAXPATHLEN _MAX_PATH diff --git a/src/config/param.arm_linux24.h b/src/config/param.arm_linux24.h index 83f85a86d..b2f25c0f7 100644 --- a/src/config/param.arm_linux24.h +++ b/src/config/param.arm_linux24.h @@ -5,7 +5,7 @@ #define AFS_PARAM_H /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel, - * it's a judgment call. If something is obviously arm specific, use that + * it's a judgment call. If something is obviously i386 specific, use that * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2" * in the sysname is the current version of the client. This takes into * account the perferred OS user space configuration as well as the kernel. @@ -92,7 +92,7 @@ #define AFS_PARAM_H /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel, - * it's a judgment call. If something is obviously arm specific, use that + * it's a judgment call. If something is obviously i386 specific, use that * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2" * in the sysname is the current version of the client. This takes into * account the perferred OS user space configuration as well as the kernel. diff --git a/src/config/param.arm_linux26.h b/src/config/param.arm_linux26.h index 9a8c8c1fb..2e142c770 100644 --- a/src/config/param.arm_linux26.h +++ b/src/config/param.arm_linux26.h @@ -5,7 +5,7 @@ #define AFS_PARAM_H /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel, - * it's a judgment call. If something is obviously arm specific, use that + * it's a judgment call. If something is obviously i386 specific, use that * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2" * in the sysname is the current version of the client. This takes into * account the perferred OS user space configuration as well as the kernel. @@ -19,14 +19,13 @@ #define AFS_ARM_LINUX22_ENV 1 #define AFS_ARM_LINUX24_ENV 1 #define AFS_ARM_LINUX26_ENV 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 +#define AFS_64BIT_IOPS_ENV 1 #ifndef __NR_afs_syscall #define __NR_afs_syscall 137 #endif -#define AFS_64BIT_IOPS_ENV 1 #define AFS_NAMEI_ENV 1 /* User space interface to file system */ #define AFS_64BIT_ENV 1 #define AFS_64BIT_CLIENT 1 @@ -96,7 +95,7 @@ #define AFS_PARAM_H /* In user space the AFS_LINUX20_ENV should be sufficient. In the kernel, - * it's a judgment call. If something is obviously arm specific, use that + * it's a judgment call. If something is obviously i386 specific, use that * #define instead. Note that "20" refers to the linux 2.0 kernel. The "2" * in the sysname is the current version of the client. This takes into * account the perferred OS user space configuration as well as the kernel. diff --git a/src/config/param.i386_fbsd_62.h b/src/config/param.i386_fbsd_62.h new file mode 100644 index 000000000..1e1e5d4f5 --- /dev/null +++ b/src/config/param.i386_fbsd_62.h @@ -0,0 +1,209 @@ +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +/* Machine / Operating system information */ +#define SYS_NAME "i386_fbsd_62" +#define SYS_NAME_ID SYS_NAME_ID_i386_fbsd_62 + +#define AFSLITTLE_ENDIAN 1 +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ +#define AFS_HAVE_STATVFS 1 /* System doesn't support statvfs */ +#define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */ + + +#ifndef UKERNEL +/* This section for kernel libafs compiles only */ + +#ifndef IGNORE_STDS_H +#include +#endif + +#define AFS_XBSD_ENV 1 /* {Free,Open,Net}BSD */ +#define AFS_X86_XBSD_ENV 1 + +#define AFS_NAMEI_ENV 1 /* User space interface to file system */ +#define AFS_64BIT_ENV 1 +#define AFS_64BIT_CLIENT 1 +#define AFS_64BIT_IOPS_ENV 1 /* Needed for NAMEI */ +#define AFS_FBSD_ENV 1 +#define AFS_FBSD40_ENV 1 +#define AFS_FBSD42_ENV 1 +#define AFS_FBSD43_ENV 1 +#define AFS_FBSD44_ENV 1 +#define AFS_FBSD45_ENV 1 +#define AFS_FBSD46_ENV 1 +#define AFS_FBSD47_ENV 1 +#define AFS_FBSD50_ENV 1 +#define AFS_FBSD51_ENV 1 +#define AFS_FBSD52_ENV 1 +#define AFS_FBSD53_ENV 1 +#define AFS_FBSD60_ENV 1 +#define AFS_FBSD61_ENV 1 +#define AFS_FBSD62_ENV 1 +#define AFS_X86_FBSD_ENV 1 +#define AFS_X86_FBSD40_ENV 1 +#define AFS_X86_FBSD42_ENV 1 +#define AFS_X86_FBSD43_ENV 1 +#define AFS_X86_FBSD46_ENV 1 +#define AFS_X86_FBSD47_ENV 1 +#define AFS_X86_FBSD50_ENV 1 +#define AFS_X86_FBSD60_ENV 1 +#define AFS_X86_FBSD62_ENV 1 +#define AFS_X86_ENV 1 +#define AFS_NONFSTRANS 1 +#define FTRUNC O_TRUNC + +#define IUPD 0x0010 +#define IACC 0x0020 +#define ICHG 0x0040 +#define IMOD 0x0080 + +#define IN_LOCK(ip) lockmgr(&ip->i_lock, LK_EXCLUSIVE, \ + NULL, curproc) +#define IN_UNLOCK(ip) lockmgr(&ip->i_lock, LK_RELEASE, \ + NULL, curproc) + +#include + +#define AFS_VFS_ENV 1 +#define AFS_VFSINCL_ENV 1 +#define AFS_GREEDY43_ENV 1 +#define AFS_ENV 1 + +#define AFS_SYSCALL 339 +#define AFS_MOUNT_AFS "afs" + +#ifndef MOUNT_UFS +#define MOUNT_UFS "ufs" +#endif + +#ifndef MOUNT_AFS +#define MOUNT_AFS AFS_MOUNT_AFS +#endif + +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ +#define AFS_USE_GETTIMEOFDAY 1 /* use gettimeofday to implement rx clock */ + +/* Extra kernel definitions (from kdefs file) */ +#ifdef _KERNEL +#define AFS_GLOBAL_SUNLOCK 1 +#define AFS_VFS34 1 /* What is VFS34??? */ +#define AFS_SHORTGID 0 /* are group id's short? */ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES CLBYTES +#define osi_GetTime(x) microtime(x) +#define AFS_KALLOC(x) osi_fbsd_alloc((x), 1) +#undef AFS_KALLOC_NOSLEEP +#define AFS_KALLOC_NOSLEEP(x) osi_fbsd_alloc((x), 0) +#define AFS_KFREE(x,y) osi_fbsd_free((x)) +#define v_count v_usecount +#define v_vfsp v_mount +#define vfs_bsize mnt_stat.f_bsize +#define vfs_fsid mnt_stat.f_fsid +#define va_nodeid va_fileid +#define vfs_vnodecovered mnt_vnodecovered +#define direct dirent +#define vnode_t struct vnode + +#ifndef MUTEX_DEFAULT +#define MUTEX_DEFAULT 0 +#endif /* MUTEX_DEFAULT */ + +#ifndef SSYS +#define SSYS 0x00002 +#endif /* SSYS */ + +#define p_rcred p_ucred + +#if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) +enum vcexcl { NONEXCL, EXCL }; + +#ifdef KERNEL +#ifndef MIN +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#endif +#ifndef MAX +#define MAX(A,B) ((A) > (B) ? (A) : (B)) +#endif +#endif /* KERNEL */ + +#endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */ +#endif /* _KERNEL */ + +#else /* !defined(UKERNEL) */ + +/* This section for user space compiles only */ + +#define UKERNEL 1 /* user space kernel */ +#define AFS_ENV 1 +#define AFS_VFSINCL_ENV 1 +#define AFS_USR_FBSD40_ENV 1 +#define AFS_USR_FBSD42_ENV 1 +#define AFS_USR_FBSD43_ENV 1 +#define AFS_USR_FBSD44_ENV 1 +#define AFS_USR_FBSD45_ENV 1 +#define AFS_USR_FBSD46_ENV 1 +#define AFS_USR_FBSD47_ENV 1 +#define AFS_USR_FBSD50_ENV 1 +#define AFS_USR_FBSD51_ENV 1 +#define AFS_USR_FBSD52_ENV 1 +#define AFS_USR_FBSD53_ENV 1 +#define AFS_USR_FBSD60_ENV 1 +#define AFS_USR_FBSD61_ENV 1 +#define AFS_USR_FBSD62_ENV 1 +#define AFS_USR_FBSD_ENV 1 +#define AFS_NONFSTRANS 1 + +#define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ +#define AFS_SYSCALL 339 +#define AFS_NAMEI_ENV 1 /* User space interface to file system */ +#define AFS_64BIT_ENV 1 +#define AFS_64BIT_IOPS_ENV 1 /* Needed for NAMEI */ +#define AFS_USERSPACE_IP_ADDR 1 +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ + +#include + +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_fmode uio_fmode +#define afsio_resid uio_resid +#define AFS_UIOSYS 1 +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES MCLBYTES +#define AFS_MINCHANGE 2 +#define VATTR_NULL usr_vattr_null + +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif /* !defined(UKERNEL) */ + +/* general user-space compiles */ + +#if defined(UKERNEL) || !defined(KERNEL) +#define STDLIB_HAS_MALLOC_PROTOS 1 +#endif + +#endif /* AFS_PARAM_H */ diff --git a/src/config/param.i386_fbsd_70.h b/src/config/param.i386_fbsd_70.h new file mode 100644 index 000000000..e2b74b8f0 --- /dev/null +++ b/src/config/param.i386_fbsd_70.h @@ -0,0 +1,211 @@ +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +/* Machine / Operating system information */ +#define SYS_NAME "i386_fbsd_70" +#define SYS_NAME_ID SYS_NAME_ID_i386_fbsd_70 + +#define AFSLITTLE_ENDIAN 1 +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ +#define AFS_HAVE_STATVFS 1 /* System doesn't support statvfs */ +#define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */ + + +#ifndef UKERNEL +/* This section for kernel libafs compiles only */ + +#ifndef IGNORE_STDS_H +#include +#endif + +#define AFS_XBSD_ENV 1 /* {Free,Open,Net}BSD */ +#define AFS_X86_XBSD_ENV 1 + +#define AFS_NAMEI_ENV 1 /* User space interface to file system */ +#define AFS_64BIT_ENV 1 +#define AFS_64BIT_CLIENT 1 +#define AFS_64BIT_IOPS_ENV 1 /* Needed for NAMEI */ +#define AFS_FBSD_ENV 1 +#define AFS_FBSD40_ENV 1 +#define AFS_FBSD42_ENV 1 +#define AFS_FBSD43_ENV 1 +#define AFS_FBSD44_ENV 1 +#define AFS_FBSD45_ENV 1 +#define AFS_FBSD46_ENV 1 +#define AFS_FBSD47_ENV 1 +#define AFS_FBSD50_ENV 1 +#define AFS_FBSD51_ENV 1 +#define AFS_FBSD52_ENV 1 +#define AFS_FBSD53_ENV 1 +#define AFS_FBSD60_ENV 1 +#define AFS_FBSD61_ENV 1 +#define AFS_FBSD62_ENV 1 +#define AFS_FBSD70_ENV 1 +#define AFS_X86_FBSD_ENV 1 +#define AFS_X86_FBSD40_ENV 1 +#define AFS_X86_FBSD42_ENV 1 +#define AFS_X86_FBSD43_ENV 1 +#define AFS_X86_FBSD46_ENV 1 +#define AFS_X86_FBSD47_ENV 1 +#define AFS_X86_FBSD50_ENV 1 +#define AFS_X86_FBSD60_ENV 1 /* added at 70--ie, some changes should port <-- */ +#define AFS_X86_FBSD62_ENV 1 +#define AFS_X86_FBSD70_ENV 1 +#define AFS_X86_ENV 1 +#define AFS_NONFSTRANS 1 +#define FTRUNC O_TRUNC + +#define IUPD 0x0010 +#define IACC 0x0020 +#define ICHG 0x0040 +#define IMOD 0x0080 + +#define IN_LOCK(ip) lockmgr(&ip->i_lock, LK_EXCLUSIVE, \ + NULL, curproc) +#define IN_UNLOCK(ip) lockmgr(&ip->i_lock, LK_RELEASE, \ + NULL, curproc) + +#include + +#define AFS_VFS_ENV 1 +#define AFS_VFSINCL_ENV 1 +#define AFS_GREEDY43_ENV 1 +#define AFS_ENV 1 + +#define AFS_SYSCALL 339 +#define AFS_MOUNT_AFS "afs" + +#ifndef MOUNT_UFS +#define MOUNT_UFS "ufs" +#endif + +#ifndef MOUNT_AFS +#define MOUNT_AFS AFS_MOUNT_AFS +#endif + +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ +#define AFS_USE_GETTIMEOFDAY 1 /* use gettimeofday to implement rx clock */ + +/* Extra kernel definitions (from kdefs file) */ +#ifdef _KERNEL +#define AFS_GLOBAL_SUNLOCK 1 +#define AFS_VFS34 1 /* What is VFS34??? */ +#define AFS_SHORTGID 0 /* are group id's short? */ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES CLBYTES +#define osi_GetTime(x) microtime(x) +#define AFS_KALLOC(x) osi_fbsd_alloc((x), 1) +#undef AFS_KALLOC_NOSLEEP +#define AFS_KALLOC_NOSLEEP(x) osi_fbsd_alloc((x), 0) +#define AFS_KFREE(x,y) osi_fbsd_free((x)) +#define v_count v_usecount +#define v_vfsp v_mount +#define vfs_bsize mnt_stat.f_bsize +#define vfs_fsid mnt_stat.f_fsid +#define va_nodeid va_fileid +#define vfs_vnodecovered mnt_vnodecovered +#define direct dirent +#define vnode_t struct vnode + +#ifndef MUTEX_DEFAULT +#define MUTEX_DEFAULT 0 +#endif /* MUTEX_DEFAULT */ + +#ifndef SSYS +#define SSYS 0x00002 +#endif /* SSYS */ + +#define p_rcred p_ucred + +#if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) +enum vcexcl { NONEXCL, EXCL }; + +#ifdef KERNEL +#ifndef MIN +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#endif +#ifndef MAX +#define MAX(A,B) ((A) > (B) ? (A) : (B)) +#endif +#endif /* KERNEL */ + +#endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */ +#endif /* _KERNEL */ + +#else /* !defined(UKERNEL) */ + +/* This section for user space compiles only */ + +#define UKERNEL 1 /* user space kernel */ +#define AFS_ENV 1 +#define AFS_VFSINCL_ENV 1 +#define AFS_USR_FBSD40_ENV 1 +#define AFS_USR_FBSD42_ENV 1 +#define AFS_USR_FBSD43_ENV 1 +#define AFS_USR_FBSD44_ENV 1 +#define AFS_USR_FBSD45_ENV 1 +#define AFS_USR_FBSD46_ENV 1 +#define AFS_USR_FBSD47_ENV 1 +#define AFS_USR_FBSD50_ENV 1 +#define AFS_USR_FBSD51_ENV 1 +#define AFS_USR_FBSD52_ENV 1 +#define AFS_USR_FBSD53_ENV 1 +#define AFS_USR_FBSD60_ENV 1 +#define AFS_USR_FBSD61_ENV 1 +#define AFS_USR_FBSD70_ENV 1 +#define AFS_USR_FBSD_ENV 1 +#define AFS_NONFSTRANS 1 + +#define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ +#define AFS_SYSCALL 339 +#define AFS_NAMEI_ENV 1 /* User space interface to file system */ +#define AFS_64BIT_ENV 1 +#define AFS_64BIT_IOPS_ENV 1 /* Needed for NAMEI */ +#define AFS_USERSPACE_IP_ADDR 1 +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ + +#include + +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_fmode uio_fmode +#define afsio_resid uio_resid +#define AFS_UIOSYS 1 +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES MCLBYTES +#define AFS_MINCHANGE 2 +#define VATTR_NULL usr_vattr_null + +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif /* !defined(UKERNEL) */ + +/* general user-space compiles */ + +#if defined(UKERNEL) || !defined(KERNEL) +#define STDLIB_HAS_MALLOC_PROTOS 1 +#endif + +#endif /* AFS_PARAM_H */ diff --git a/src/config/param.i386_linux26.h b/src/config/param.i386_linux26.h index 0f59404ff..33a937623 100644 --- a/src/config/param.i386_linux26.h +++ b/src/config/param.i386_linux26.h @@ -19,7 +19,6 @@ #define AFS_I386_LINUX22_ENV 1 #define AFS_I386_LINUX24_ENV 1 #define AFS_I386_LINUX26_ENV 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 diff --git a/src/config/param.i386_obsd33.h b/src/config/param.i386_obsd33.h index f31a16327..a1d880955 100644 --- a/src/config/param.i386_obsd33.h +++ b/src/config/param.i386_obsd33.h @@ -42,7 +42,9 @@ /* Extra kernel definitions (from kdefs file) */ #ifdef _KERNEL +#ifdef MULTIPROCESSOR #define AFS_GLOBAL_SUNLOCK 1 +#endif #define AFS_SHORTGID 0 /* are group id's short? */ #if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) diff --git a/src/config/param.i386_obsd34.h b/src/config/param.i386_obsd34.h index 78016daf2..67b4f2a27 100644 --- a/src/config/param.i386_obsd34.h +++ b/src/config/param.i386_obsd34.h @@ -43,7 +43,9 @@ /* Extra kernel definitions (from kdefs file) */ #ifdef _KERNEL +#ifdef MULTIPROCESSOR #define AFS_GLOBAL_SUNLOCK 1 +#endif #define AFS_SHORTGID 0 /* are group id's short? */ #if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) diff --git a/src/config/param.i386_obsd35.h b/src/config/param.i386_obsd35.h index 46a027dae..7f82271d8 100644 --- a/src/config/param.i386_obsd35.h +++ b/src/config/param.i386_obsd35.h @@ -43,7 +43,9 @@ /* Extra kernel definitions (from kdefs file) */ #ifdef _KERNEL +#ifdef MULTIPROCESSOR #define AFS_GLOBAL_SUNLOCK 1 +#endif #define AFS_SHORTGID 0 /* are group id's short? */ #if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) diff --git a/src/config/param.i386_obsd36.h b/src/config/param.i386_obsd36.h index 4fb745486..4f59df741 100644 --- a/src/config/param.i386_obsd36.h +++ b/src/config/param.i386_obsd36.h @@ -45,7 +45,9 @@ /* Extra kernel definitions (from kdefs file) */ #ifdef _KERNEL +#ifdef MULTIPROCESSOR #define AFS_GLOBAL_SUNLOCK 1 +#endif #define AFS_SHORTGID 0 /* are group id's short? */ #if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) diff --git a/src/config/param.i386_obsd37.h b/src/config/param.i386_obsd37.h index 35a68c283..67460348b 100644 --- a/src/config/param.i386_obsd37.h +++ b/src/config/param.i386_obsd37.h @@ -46,7 +46,9 @@ /* Extra kernel definitions (from kdefs file) */ #ifdef _KERNEL +#ifdef MULTIPROCESSOR #define AFS_GLOBAL_SUNLOCK 1 +#endif #define AFS_SHORTGID 0 /* are group id's short? */ #if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) diff --git a/src/config/param.i386_obsd38.h b/src/config/param.i386_obsd38.h index 52b03fdca..7c2a38e3e 100644 --- a/src/config/param.i386_obsd38.h +++ b/src/config/param.i386_obsd38.h @@ -47,7 +47,9 @@ /* Extra kernel definitions (from kdefs file) */ #ifdef _KERNEL +#ifdef MULTIPROCESSOR #define AFS_GLOBAL_SUNLOCK 1 +#endif #define AFS_SHORTGID 0 /* are group id's short? */ #if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) diff --git a/src/config/param.i386_obsd41.h b/src/config/param.i386_obsd41.h deleted file mode 100644 index eb556cc28..000000000 --- a/src/config/param.i386_obsd41.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Jim Rees, University of Michigan CITI - */ - -#ifndef AFS_PARAM_H -#define AFS_PARAM_H - -#ifndef IGNORE_STDS_H -#include -#endif - -#define SYS_NAME "i386_obsd41" -#define SYS_NAME_ID SYS_NAME_ID_i386_obsd41 - -#define AFS_XBSD_ENV 1 /* {Free,Open,Net}BSD */ -#define AFS_X86_XBSD_ENV 1 - -#define AFS_NAMEI_ENV 1 /* User space interface to file system */ -#define AFS_64BIT_ENV 1 -#define AFS_64BIT_CLIENT 1 -#define AFS_64BIT_IOPS_ENV 1 /* Needed for NAMEI */ -#define AFS_OBSD_ENV 1 -#define AFS_OBSD34_ENV 1 -#define AFS_OBSD35_ENV 1 -#define AFS_OBSD36_ENV 1 -#define AFS_OBSD37_ENV 1 -#define AFS_OBSD38_ENV 1 -#define AFS_OBSD39_ENV 1 -#define AFS_OBSD40_ENV 1 -#define AFS_OBSD41_ENV 1 -#define AFS_NONFSTRANS 1 -#define AFS_VM_RDWR_ENV 1 -#define AFS_VFS_ENV 1 -#define AFS_VFSINCL_ENV 1 - -#define FTRUNC O_TRUNC - -#define AFS_SYSCALL 208 -#define AFS_MOUNT_AFS "afs" - -#define RXK_LISTENER_ENV 1 -#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ -#define AFS_USE_GETTIMEOFDAY 1 /* use gettimeofday to implement rx clock */ - -#define AFSLITTLE_ENDIAN 1 - -#ifndef IGNORE_STDS_H -#include -#endif - -/* Extra kernel definitions (from kdefs file) */ -#ifdef _KERNEL -#ifdef MULTIPROCESSOR -#define AFS_GLOBAL_SUNLOCK 1 -#endif -#define AFS_SHORTGID 0 /* are group id's short? */ - -#if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) -enum vcexcl { NONEXCL, EXCL }; - -#ifndef MIN -#define MIN(A,B) ((A) < (B) ? (A) : (B)) -#endif -#ifndef MAX -#define MAX(A,B) ((A) > (B) ? (A) : (B)) -#endif - -#endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */ -#endif /* _KERNEL */ - -#endif /* AFS_PARAM_H */ diff --git a/src/config/param.i386_umlinux26.h b/src/config/param.i386_umlinux26.h index 3a158eaff..c17b11ce5 100644 --- a/src/config/param.i386_umlinux26.h +++ b/src/config/param.i386_umlinux26.h @@ -19,7 +19,6 @@ #define AFS_I386_LINUX22_ENV 1 #define AFS_I386_LINUX24_ENV 1 #define AFS_I386_LINUX26_ENV 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 diff --git a/src/config/param.i64_w2k.h b/src/config/param.i64_w2k.h index 3fe108708..186df1525 100644 --- a/src/config/param.i64_w2k.h +++ b/src/config/param.i64_w2k.h @@ -32,7 +32,7 @@ * and has no typedef for ssize_t (a signed size_t). * So, we make our own. */ -typedef int ssize_t; +typedef __int64 ssize_t; /* these macros define Unix-style functions missing in VC++5.0/NT4.0 */ #define MAXPATHLEN _MAX_PATH diff --git a/src/config/param.ia64_linux24.h b/src/config/param.ia64_linux24.h index 47c369800..e5f9a49bb 100644 --- a/src/config/param.ia64_linux24.h +++ b/src/config/param.ia64_linux24.h @@ -87,7 +87,6 @@ #endif #endif /* KERNEL */ -#define USE_UCONTEXT /* should be in afsconfig.h */ #endif /* _PARAM_IA64_LINUX20_H_ */ @@ -158,7 +157,6 @@ #define CMSERVERPREF #endif -#define USE_UCONTEXT /* should be in afsconfig.h */ #endif /* AFS_PARAM_H */ diff --git a/src/config/param.ia64_linux26.h b/src/config/param.ia64_linux26.h index d534f06c3..563e2068d 100644 --- a/src/config/param.ia64_linux26.h +++ b/src/config/param.ia64_linux26.h @@ -30,7 +30,6 @@ #define AFS_IA64_LINUX24_ENV 1 #define AFS_IA64_LINUX26_ENV 1 #define AFS_LINUX_64BIT_KERNEL 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 1141 @@ -96,7 +95,6 @@ #endif #endif /* KERNEL */ -#define USE_UCONTEXT /* should be in afsconfig.h */ #endif /* _PARAM_IA64_LINUX20_H_ */ @@ -168,7 +166,6 @@ #define CMSERVERPREF #endif -#define USE_UCONTEXT /* should be in afsconfig.h */ #endif /* AFS_PARAM_H */ diff --git a/src/config/param.ppc64_linux26.h b/src/config/param.ppc64_linux26.h index 97737ef91..bae7a8857 100644 --- a/src/config/param.ppc64_linux26.h +++ b/src/config/param.ppc64_linux26.h @@ -18,7 +18,6 @@ #define AFS_PPC64_LINUX24_ENV 1 #define AFS_PPC64_LINUX26_ENV 1 #define AFS_LINUX_64BIT_KERNEL 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 diff --git a/src/config/param.ppc_darwin_80.h b/src/config/param.ppc_darwin_80.h index f099a51fa..447508209 100644 --- a/src/config/param.ppc_darwin_80.h +++ b/src/config/param.ppc_darwin_80.h @@ -28,7 +28,8 @@ #define AFS_NONFSTRANS #define AFS_SYSCALL 230 #define AFS_NAMEI_ENV 1 -#define DARWIN_REFBASE 3 + +#define AFS_BOZONLOCK_ENV 1 /* File system entry (used if mount.h doesn't define MOUNT_AFS */ #define AFS_MOUNT_AFS "afs" diff --git a/src/config/param.ppc_linux26.h b/src/config/param.ppc_linux26.h index efa4f2acd..136a3cb02 100644 --- a/src/config/param.ppc_linux26.h +++ b/src/config/param.ppc_linux26.h @@ -19,7 +19,6 @@ #define AFS_PPC_LINUX22_ENV 1 #define AFS_PPC_LINUX24_ENV 1 #define AFS_PPC_LINUX26_ENV 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 diff --git a/src/config/param.s390_linux26.h b/src/config/param.s390_linux26.h index a941c28c3..abd67e603 100644 --- a/src/config/param.s390_linux26.h +++ b/src/config/param.s390_linux26.h @@ -29,7 +29,6 @@ #define AFS_S390_LINUX22_ENV 1 #define AFS_S390_LINUX24_ENV 1 #define AFS_S390_LINUX26_ENV 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 @@ -86,6 +85,11 @@ #endif #endif /* KERNEL */ +#ifdef __GLIBC__ +#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) +#define USE_UCONTEXT +#endif +#endif #endif /* AFS_PARAM_H */ #else /* !defined(UKERNEL) */ diff --git a/src/config/param.s390x_linux26.h b/src/config/param.s390x_linux26.h index 5ad1806f4..6324c3adc 100644 --- a/src/config/param.s390x_linux26.h +++ b/src/config/param.s390x_linux26.h @@ -32,7 +32,6 @@ #define AFS_S390X_LINUX22_ENV 1 #define AFS_S390X_LINUX24_ENV 1 #define AFS_S390X_LINUX26_ENV 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 137 @@ -89,6 +88,11 @@ #endif #endif /* KERNEL */ +#ifdef __GLIBC__ +#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) +#define USE_UCONTEXT +#endif +#endif #endif /* AFS_PARAM_H */ #else /* !defined(UKERNEL) */ diff --git a/src/config/param.sparc64_linux26.h b/src/config/param.sparc64_linux26.h index 438709dca..175b47f40 100644 --- a/src/config/param.sparc64_linux26.h +++ b/src/config/param.sparc64_linux26.h @@ -30,7 +30,6 @@ #define AFS_SPARC64_LINUX24_ENV 1 #define AFS_SPARC64_LINUX26_ENV 1 #define AFS_LINUX_64BIT_KERNEL 1 -#define AFS_NONFSTRANS 1 #define AFS_MOUNT_AFS "afs" /* The name of the filesystem type. */ #define AFS_SYSCALL 227 diff --git a/src/config/stds.h b/src/config/stds.h index 7b256b673..4e5d9d181 100644 --- a/src/config/stds.h +++ b/src/config/stds.h @@ -44,6 +44,11 @@ pragma Off(Prototype_override_warnings); #error We require size of long and pointers to be equal #endif */ +#define MAX_AFS_INT32 0x7FFFFFFF +#define MAX_AFS_UINT32 0xFFFFFFFF +#define MAX_AFS_INT64 0x7FFFFFFFFFFFFFFFL +#define MAX_AFS_UINT64 0xFFFFFFFFFFFFFFFFL + typedef short afs_int16; typedef unsigned short afs_uint16; #ifdef AFS_64BIT_ENV @@ -56,8 +61,16 @@ typedef unsigned __int64 afs_uint64; typedef long long afs_int64; typedef unsigned long long afs_uint64; #endif -#define ZeroInt64(a) (a) = 0 +#define ZeroInt64(a) (a = 0) #define AssignInt64(a, b) *(b) = (a) +#define IncInt64(a) (*(a))++ +#define IncUInt64(a) (*(a))++ +#define DecInt64(a) (*(a))-- +#define DecUInt64(a) (*(a))-- +#define GTInt64(a,b) ((a) > (b)) +#define GEInt64(a,b) ((a) >= (b)) +#define LEInt64(a,b) ((a) <= (b)) +#define LTInt64(a,b) ((a) < (b)) #define AddInt64(a,b,c) *(c) = (afs_int64)(a) + (afs_int64)(b) #define AddUInt64(a,b,c) *(c) = (afs_uint64)(a) + (afs_uint64)(b) #define SubtractInt64(a,b,c) *(c) = (afs_int64)(a) - (afs_int64)(b) @@ -65,9 +78,11 @@ typedef unsigned long long afs_uint64; #define CompareInt64(a,b) (afs_int64)(a) - (afs_int64)(b) #define CompareUInt64(a,b) (afs_uint64)(a) - (afs_uint64)(b) #define NonZeroInt64(a) (a) -#define Int64ToInt32(a) (a) & 0xFFFFFFFFL +#define Int64ToInt32(a) (a) & MAX_AFS_UINT32 #define FillInt64(t,h,l) (t) = (h); (t) <<= 32; (t) |= (l); -#define SplitInt64(t,h,l) (h) = (t) >> 32; (l) = (t) & 0xFFFFFFFF; +#define SplitInt64(t,h,l) (h) = (t) >> 32; (l) = (t) & MAX_AFS_UINT32; +#define RoundInt64ToInt32(a) (a > MAX_AFS_UINT32) ? MAX_AFS_UINT32 : a; +#define RoundInt64ToInt31(a) (a > MAX_AFS_INT32) ? MAX_AFS_INT32 : a; #else /* AFS_64BIT_ENV */ typedef long afs_int32; typedef unsigned long afs_uint32; @@ -83,8 +98,16 @@ struct u_Int64 { afs_uint32 low; }; typedef struct u_Int64 afs_uint64; -#define ZeroInt64(a) (a).high = (a).low = 0 +#define ZeroInt64(a) ((a).high = (a).low = 0) #define AssignInt64(a, b) (b)->high = (a).high; (b)->low = (a).low +#define IncInt64(a) ((++((a)->low)) ? 0 : (a)->high++ ) +#define IncUInt64(a) ((++((a)->low)) ? 0 : (a)->high++ ) +#define DecInt64(a) (((a)->low)-- ? 0 : (a)->high-- ) +#define DecUInt64(a) (((a)->low)-- ? 0 : (a)->high-- ) +#define GTInt64(a,b) (((a).high > (b).high) || (((a).high == (b).high) && ((a).low > (b).low))) +#define GEInt64(a,b) (((a).high > (b).high) || (((a).high == (b).high) && ((a).low >= (b).low))) +#define LEInt64(a,b) (((a).high < (b).high) || (((a).high == (b).high) && ((a).low <= (b).low))) +#define LTInt64(a,b) (((a).high < (b).high) || (((a).high == (b).high) && ((a).low < (b).low))) #define CompareInt64(a,b) (((afs_int32)(a).high - (afs_int32)(b).high) || (((a).high == (b).high) && ((a).low - (b).low))) #define AddInt64(a, b, c) { afs_int64 _a, _b; _a = a; _b = b; (c)->low = _a.low + _b.low; (c)->high = _a.high + _b.high + ((c)->low < _b.low); } #define SubtractInt64(a, b, c) { afs_int64 _a, _b; _a = a; _b = b; (c)->low = _a.low - _b.low; (c)->high = _a.high - _b.high - (_a.low < _b.low); } @@ -95,6 +118,8 @@ typedef struct u_Int64 afs_uint64; #define Int64ToInt32(a) (a).low #define FillInt64(t,h,l) (t).high = (h); (t).low = (l); #define SplitInt64(t,h,l) (h) = (t).high; (l) = (t).low; +#define RoundInt64ToInt32(a) (a.high > 0) ? MAX_AFS_UINT32 : a.low; +#define RoundInt64ToInt31(a) (a.high > 0) ? MAX_AFS_INT32 : a.low; #endif /* AFS_64BIT_ENV */ /* AFS_64BIT_CLIENT should presently be set only for AFS_64BIT_ENV systems */ @@ -246,4 +271,9 @@ struct afsUUID { }; typedef struct afsUUID afsUUID; +/* for now, demand attach fileserver is only support on unix pthreads builds */ +#if defined(DEMAND_ATTACH_ENABLE) && defined(AFS_PTHREAD_ENV) && !defined(AFS_NT40_ENV) +#define AFS_DEMAND_ATTACH_FS 1 +#endif + #endif /* OPENAFS_CONFIG_AFS_STDS_H */ diff --git a/src/config/touch.c b/src/config/touch.c index 75955018b..687ccb847 100644 --- a/src/config/touch.c +++ b/src/config/touch.c @@ -7,14 +7,19 @@ directory or online at http://www.openafs.org/dl/license10.html */ +#include #include "io.h" #include #include #include #include +#ifndef intptr_t +#define intptr_t INT_PTR +#endif + void -usuage() +usage() { printf("touch filename/Wildcard \n"); exit(1); @@ -23,12 +28,13 @@ usuage() int main(int argc, char *argv[]) { - int fh, fs; + int fh; + intptr_t fs; long pos; char buffer[1]; struct _finddata_t finfo; if (argc < 2) - usuage(); + usage(); fs = _findfirst(argv[1], &finfo); if (fs == -1) return 0; diff --git a/src/config/util_cr.c b/src/config/util_cr.c index 5e2762d9c..2dc0f5f56 100644 --- a/src/config/util_cr.c +++ b/src/config/util_cr.c @@ -19,14 +19,13 @@ #include "malloc.h" #include "time.h" #include "stdlib.h" -#include "windows.h" #ifndef intptr_t -#define intptr_t long +#define intptr_t INT_PTR #endif void -usuage() +usage() { printf("util_cr file ;remove cr (from crlf)\n\ OR util_cr } ProductVersion in_filename out_filename ; substitute for %%1-%%5 in file\n\ @@ -115,7 +114,7 @@ Addkey(const char *hkey, const char *subkey, const char *stag, if (strcmp(hkey, "HKEY_LOCAL_MACHINE") == 0) kHkey = HKEY_LOCAL_MACHINE; if (kHkey == 0) - usuage(); + usage(); result = (RegCreateKeyEx(kHkey /*HKEY_LOCAL_MACHINE */ , subkey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &kPkey, @@ -130,11 +129,11 @@ Addkey(const char *hkey, const char *subkey, const char *stag, if (*stag == '@') result = RegSetValueEx(kPkey, "", 0, REG_SZ, (CONST BYTE *) sval, - strlen(sval)); + (DWORD)strlen(sval)); else result = RegSetValueEx(kPkey, stag, 0, REG_SZ, (CONST BYTE *) sval, - strlen(sval)); + (DWORD)strlen(sval)); } else { if (*stag == '@') @@ -162,7 +161,7 @@ Subkey(const char *hkey, const char *subkey) if (strcmp(hkey, "HKEY_LOCAL_MACHINE") == 0) kHkey = HKEY_LOCAL_MACHINE; if (kHkey == 0) - usuage(); + usage(); result = RegDeleteKey(kHkey, subkey); if (result != ERROR_SUCCESS) { printf("AFS Error - Could Not create a registration key\n"); @@ -319,7 +318,7 @@ isequal(char *msg1, char *msg2, char *disp) int SetSysEnv(int argc, char *argv[]) { - DWORD dwResult; + DWORD_PTR dwResult; printf("assignment %s %s\n", argv[2], argv[3]); Addkey("HKEY_LOCAL_MACHINE", "System\\CurrentControlSet\\Control\\Session Manager\\Environment", @@ -334,28 +333,27 @@ SetSysEnv(int argc, char *argv[]) int main(int argc, char *argv[]) { -/* typedef char * CHARP;*/ char fname[128]; FILE *file; - int l, i; + int i; char **pvar, *ch, *save; - long len; + size_t len; BOOL bRecurse = FALSE; BOOL bQuiet = FALSE; if (argc < 2) - usuage(); + usage(); /* RSM4: Add an "ECHO" that doesn't append a new line... */ if (strcmp(argv[1], "_echo") == 0) { if(argc<3) - usuage(); + usage(); printf("%s",argv[2]); return 0; } if (strcmp(argv[1], "_sysvar") == 0) { if (argc < 4) - usuage(); + usage(); return (SetSysEnv(argc, argv)); } @@ -390,7 +388,7 @@ main(int argc, char *argv[]) return _MSC_VER; } if (argc < 3) - usuage(); + usage(); if (strcmp(argv[1], "_isOS") == 0) return CheckVersion(argc, argv); if (strcmp(argv[1], "}") == 0) { @@ -403,7 +401,7 @@ main(int argc, char *argv[]) int pat, pat2; strcpy(v5, argv[2]); if (argc < 5) - usuage(); + usage(); if ((ptr = strtok(argv[2], ". \n")) == NULL) return 0; maj = atoi(ptr); @@ -415,15 +413,15 @@ main(int argc, char *argv[]) pat2 = -1; switch (strlen(ptr)) { case 0: - usuage(); + usage(); case 1: pat = atoi(ptr); if (isdigit(*ptr) != 0) break; - usuage(); + usage(); case 2: //ONLY 1.0.44 is interpreted as 1.0.4.4 or 1.0.4a as 1.0.4.a if (isdigit(*ptr) == 0) - usuage(); + usage(); pat = *ptr - '0'; ptr++; if (isalpha(*ptr) == 0) { @@ -431,14 +429,14 @@ main(int argc, char *argv[]) } else if (isalpha(*ptr) != 0) { pat2 = tolower(*ptr) - 'a' + 1; } else - usuage(); + usage(); break; case 3: //1.0.401 or 1.0.40a are the same; if ((isdigit(*ptr) == 0) // first 2 must be digit || (isdigit(*(ptr + 1)) == 0) || (*(ptr + 1) != '0' && isdigit(*(ptr + 2)) == 0) // disallow 1.0.4b0 or 1.0.41a ) - usuage(); + usage(); pat = *ptr - '0'; ptr++; pat2 = atoi(ptr); @@ -447,28 +445,28 @@ main(int argc, char *argv[]) pat2 = tolower(*ptr) - 'a' + 1; break; default: - usuage(); + usage(); } // last can be 1-2 digits or one alpha (if pat2 hasn't been set) if ((ptr = strtok(NULL, ". \n")) != NULL) { if (pat2 >= 0) - usuage(); + usage(); switch (strlen(ptr)) { case 1: pat2 = (isdigit(*ptr)) ? atoi(ptr) : tolower(*ptr) - 'a' + 1; break; case 2: if (isdigit(*ptr) == 0 || isdigit(*(ptr + 1)) == 0) - usuage(); + usage(); pat2 = atoi(ptr); break; default: - usuage(); + usage(); } } file = fopen(argv[3], "r"); if (file == NULL) - usuage(); + usage(); len = filelength(_fileno(file)); save = (char *)malloc(len + 1); buf = save; @@ -477,7 +475,7 @@ main(int argc, char *argv[]) fclose(file); file = fopen(argv[4], "w"); if (file == NULL) - usuage(); + usage(); sprintf(v1, "%i", maj); sprintf(v2, "%i", min); sprintf(v3, "%i", pat); @@ -530,7 +528,7 @@ main(int argc, char *argv[]) } if (strcmp(argv[1], "*") == 0) { /* "[HKEY_CLASSES_ROOT\CLSID\{DC515C27-6CAC-11D1-BAE7-00C04FD140D2}] @=AFS Client Shell Extension" */ if (argc < 3) - usuage(); + usage(); for (i = 2; argc >= 3; i++) { char *ssub = strtok(argv[i], "["); BOOL option; @@ -569,7 +567,7 @@ main(int argc, char *argv[]) char msg[256], msgt[256]; char *ptr; if (argc < 4) - usuage(); + usage(); for (i = 3; argc >= 4; i++) { char *ssect = strstr(argv[i], "["); diff --git a/src/config/venus.h b/src/config/venus.h index 055f29958..2e5317f5d 100644 --- a/src/config/venus.h +++ b/src/config/venus.h @@ -181,6 +181,11 @@ struct cm_initparams { #define VIOC_NEWALIAS _CVICEIOCTL(1) /* create new cell alias */ #define VIOC_GETALIAS _CVICEIOCTL(2) /* get alias info */ #define VIOC_CBADDR _CVICEIOCTL(3) /* push callback addr */ -#define VIOC_NEWUUID _CVICEIOCTL(9) /* new uuid */ +#define VIOC_DISCON _CVICEIOCTL(5) /* set/get discon mode */ +#define VIOC_NEWUUID _CVICEIOCTL(9) /* new uuid */ +#define VIOCPRECACHE _CVICEIOCTL(12) /* precache size */ + +/* OpenAFS-specific 'O' pioctl's */ +#define VIOC_NFS_NUKE_CREDS _OVICEIOCTL(1) /* nuke creds for all PAG's */ #endif /* AFS_VENUS_H */ diff --git a/src/dauth/dlog.c b/src/dauth/dlog.c index 06773ae1f..9311226fe 100644 --- a/src/dauth/dlog.c +++ b/src/dauth/dlog.c @@ -72,7 +72,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/dauth/Attic/dlog.c,v 1.9.2.2 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/dauth/Attic/dlog.c,v 1.9.14.2 2007/04/10 18:39:51 shadow Exp $"); #include #include diff --git a/src/dauth/dpass.c b/src/dauth/dpass.c index 962d56d7b..82279864a 100644 --- a/src/dauth/dpass.c +++ b/src/dauth/dpass.c @@ -19,7 +19,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/dauth/Attic/dpass.c,v 1.7.2.2 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/dauth/Attic/dpass.c,v 1.7 2003/07/15 23:14:59 shadow Exp $"); #include #include @@ -109,7 +109,7 @@ CommandProc(as, arock) cell_p); } else { strncpy(cell, cellinfo.name, sizeof(cell) - 1); - cell[sizeof(cell)-1] = '\0'; + cell[sizeof(cell)] = '\0'; cell_p = cell; } } else { @@ -136,7 +136,6 @@ CommandProc(as, arock) #define s(n) ((k(n) << 8) | k(n+1)) printf("\nThe new DCE password is: %0.4x-%0.4x-%0.4x-%0.4x\n", s(0), s(2), s(4), s(6)); - return 0; } main(argc, argv) diff --git a/src/des/NTMakefile b/src/des/NTMakefile index dd0ca9b99..04e456318 100644 --- a/src/des/NTMakefile +++ b/src/des/NTMakefile @@ -32,6 +32,7 @@ INCFILEDIR = $(DESTDIR)\include INCFILES =\ $(INCFILEDIR)\des.h \ $(INCFILEDIR)\des_conf.h \ + $(INCFILEDIR)\des_prototypes.h \ $(INCFILEDIR)\mit-cpyright.h \ $(INCFILEDIR)\des_odd.h \ $(INCFILEDIR)\crypt.h \ @@ -118,27 +119,35 @@ $(OUT)\main.obj: main.c $(OUT)\make_keyperm.exe: $(OUT)\make_keyperm.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_p_table.exe: $(OUT)\make_p_table.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_s_table.exe: $(OUT)\make_s_table.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_odd.exe: $(OUT)\make_odd.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_p.exe: $(OUT)\make_p.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_s.exe: $(OUT)\make_s.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_fp.exe: $(OUT)\make_fp.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(OUT)\make_ip.exe: $(OUT)\make_ip.obj $(OUT)\misc.obj $(OUT)\main.obj $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) GENOBJS = $(OUT)\make_keyperm.obj \ $(OUT)\make_p_table.obj \ diff --git a/src/des/cbc_encrypt.c b/src/des/cbc_encrypt.c index 0115836c3..ae26ef867 100644 --- a/src/des/cbc_encrypt.c +++ b/src/des/cbc_encrypt.c @@ -29,7 +29,7 @@ #include "des_prototypes.h" RCSID - ("$Header: /cvs/openafs/src/des/cbc_encrypt.c,v 1.9.2.1 2004/10/18 07:11:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/cbc_encrypt.c,v 1.10 2004/10/05 20:40:59 rees Exp $"); #define XPRT_CBC_ENCRYPT diff --git a/src/des/crypt.c b/src/des/crypt.c index d0d9f29e8..865b138ca 100644 --- a/src/des/crypt.c +++ b/src/des/crypt.c @@ -38,7 +38,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/crypt.c,v 1.13.2.2 2006/07/25 14:46:18 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/crypt.c,v 1.14.8.1 2006/07/25 14:47:41 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/des/des.c b/src/des/des.c index 02aad289f..bb7fb4cce 100644 --- a/src/des/des.c +++ b/src/des/des.c @@ -37,7 +37,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/des.c,v 1.11.2.6 2007/07/03 04:24:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/des.c,v 1.19.4.1 2007/07/03 04:23:12 shadow Exp $"); #ifndef KERNEL #include diff --git a/src/des/key_sched.c b/src/des/key_sched.c index 2ac21859a..272539dbb 100644 --- a/src/des/key_sched.c +++ b/src/des/key_sched.c @@ -31,7 +31,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/key_sched.c,v 1.6.2.5 2005/08/18 04:56:14 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/key_sched.c,v 1.11 2005/08/18 04:55:00 shadow Exp $"); #include #include "des_internal.h" diff --git a/src/des/make_fp.c b/src/des/make_fp.c index 44faac201..ed0fedb78 100644 --- a/src/des/make_fp.c +++ b/src/des/make_fp.c @@ -12,7 +12,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/make_fp.c,v 1.6.2.1 2006/03/09 06:41:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/make_fp.c,v 1.7 2006/03/09 06:34:36 shadow Exp $"); #include #include diff --git a/src/des/make_ip.c b/src/des/make_ip.c index 8f66b3c0b..ddc92dd97 100644 --- a/src/des/make_ip.c +++ b/src/des/make_ip.c @@ -12,7 +12,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/make_ip.c,v 1.7.2.1 2006/03/09 06:41:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/make_ip.c,v 1.8 2006/03/09 06:34:36 shadow Exp $"); #include #include diff --git a/src/des/make_keyperm.c b/src/des/make_keyperm.c index 53e0b665b..2bfd567ba 100644 --- a/src/des/make_keyperm.c +++ b/src/des/make_keyperm.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/make_keyperm.c,v 1.7.2.1 2005/04/03 18:48:30 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/make_keyperm.c,v 1.8 2005/04/03 18:48:19 shadow Exp $"); #include #include diff --git a/src/des/make_p.c b/src/des/make_p.c index 57efe1ba1..aec9081a7 100644 --- a/src/des/make_p.c +++ b/src/des/make_p.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/make_p.c,v 1.5.2.1 2006/03/09 06:41:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/make_p.c,v 1.6 2006/03/09 06:34:36 shadow Exp $"); #include #include diff --git a/src/des/misc.c b/src/des/misc.c index 94fb6850b..a75492d05 100644 --- a/src/des/misc.c +++ b/src/des/misc.c @@ -14,7 +14,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/misc.c,v 1.7.2.1 2006/03/09 06:41:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/misc.c,v 1.8 2006/03/09 06:34:36 shadow Exp $"); #include #ifndef KERNEL diff --git a/src/des/new_rnd_key.c b/src/des/new_rnd_key.c index 98ce4c2dd..1b99ecdef 100644 --- a/src/des/new_rnd_key.c +++ b/src/des/new_rnd_key.c @@ -19,7 +19,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/new_rnd_key.c,v 1.13.2.3 2005/08/18 04:56:14 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/new_rnd_key.c,v 1.16 2005/08/18 04:55:00 shadow Exp $"); #ifndef KERNEL #include diff --git a/src/des/pcbc_encrypt.c b/src/des/pcbc_encrypt.c index 8bc2a14bc..cfba38534 100644 --- a/src/des/pcbc_encrypt.c +++ b/src/des/pcbc_encrypt.c @@ -30,7 +30,7 @@ #include "des_prototypes.h" RCSID - ("$Header: /cvs/openafs/src/des/pcbc_encrypt.c,v 1.9.2.2 2007/07/09 19:16:48 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/pcbc_encrypt.c,v 1.10.8.1 2007/07/09 19:15:26 shadow Exp $"); #include "des_internal.h" diff --git a/src/des/stats.h b/src/des/stats.h index 67fa9cf4b..3fd1fb6bd 100644 --- a/src/des/stats.h +++ b/src/des/stats.h @@ -106,6 +106,7 @@ extern int rxkad_stats_agg(rxkad_stats_t *); } \ rxkad_stats->stats_elem--; \ END +#ifndef AFS_OBSD38_ENV #define ADD_RXKAD_STATS(stats_elem, inc_value) \ BEGIN \ rxkad_stats_t * rxkad_stats; \ @@ -124,6 +125,11 @@ extern int rxkad_stats_agg(rxkad_stats_t *); } \ rxkad_stats->stats_elem -= dec_value; \ END +#else /* AFS_OBSD38_ENV */ +/* segfaults but we don't know why */ +#define ADD_RXKAD_STATS(stats_elem, inc_value) +#define SUB_RXKAD_STATS(stats_elem, dec_value) +#endif /* AFS_OBSD38_ENV */ #else /* AFS_PTHREAD_ENV */ #define INC_RXKAD_STATS(stats_elem) rxkad_stats.stats_elem++ #define DEC_RXKAD_STATS(stats_elem) rxkad_stats.stats_elem-- diff --git a/src/des/util.c b/src/des/util.c index 607e6bf5a..f1004ae59 100644 --- a/src/des/util.c +++ b/src/des/util.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/des/util.c,v 1.6.2.2 2005/06/21 20:19:58 shadow Exp $"); + ("$Header: /cvs/openafs/src/des/util.c,v 1.9 2005/06/19 00:14:17 shadow Exp $"); #include "mit-cpyright.h" #ifndef KERNEL diff --git a/src/dir/dir.c b/src/dir/dir.c index 82ffda314..4ebf7aecb 100644 --- a/src/dir/dir.c +++ b/src/dir/dir.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/dir/dir.c,v 1.21.2.7 2007/10/30 15:23:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/dir/dir.c,v 1.24.4.4 2007/10/30 15:16:39 shadow Exp $"); #ifdef KERNEL #if !defined(UKERNEL) diff --git a/src/dir/salvage.c b/src/dir/salvage.c index 35abac9b1..7a6b4f44c 100644 --- a/src/dir/salvage.c +++ b/src/dir/salvage.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/dir/salvage.c,v 1.10.2.1 2007/10/30 15:23:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/dir/salvage.c,v 1.10.14.1 2007/10/30 15:16:39 shadow Exp $"); #include #include diff --git a/src/dir/test/NTMakefile b/src/dir/test/NTMakefile index 22c127923..12624bfb2 100644 --- a/src/dir/test/NTMakefile +++ b/src/dir/test/NTMakefile @@ -12,6 +12,8 @@ tests: $(OUT)\dtest.exe $(OUT)\dtest.exe: $(OUT)\dtest.obj $(DESTDIR)\lib\afs\afsdir.lib $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) mkdir: diff --git a/src/export/.cvsignore b/src/export/.cvsignore index f3c7a7c5d..08a93c931 100644 --- a/src/export/.cvsignore +++ b/src/export/.cvsignore @@ -1 +1,5 @@ Makefile +cfgafs64 +cfgexport64 +export.ext.nonfs +export64.ext.nonfs diff --git a/src/export/cfgexport.c b/src/export/cfgexport.c index 4eca30fe6..e12ef61d7 100644 --- a/src/export/cfgexport.c +++ b/src/export/cfgexport.c @@ -14,7 +14,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/export/cfgexport.c,v 1.11.2.1 2004/12/07 16:48:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/export/cfgexport.c,v 1.12 2004/12/07 16:49:07 shadow Exp $"); #include #include diff --git a/src/finale/NTMakefile b/src/finale/NTMakefile index 8ffe8e8f6..b89ccebe2 100644 --- a/src/finale/NTMakefile +++ b/src/finale/NTMakefile @@ -25,8 +25,9 @@ TRANSLATE_ET_EXELIBS =\ $(TRANSLATE_ET_EXEFILE): $(TRANSLATE_ET_EXEOBJS) $(TRANSLATE_ET_EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) - + $(CODESIGN_USERLAND) ############################################################################ # Definitions for generating versioninfo resources diff --git a/src/finale/translate_et.c b/src/finale/translate_et.c index 5cfa5235e..2a761e0ca 100644 --- a/src/finale/translate_et.c +++ b/src/finale/translate_et.c @@ -11,12 +11,11 @@ #include RCSID - ("$Header: /cvs/openafs/src/finale/translate_et.c,v 1.8.2.1 2007/04/10 18:43:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/finale/translate_et.c,v 1.8.14.2 2007/04/10 18:39:52 shadow Exp $"); #include #include #include -#include #include #include #include diff --git a/src/fsint/.cvsignore b/src/fsint/.cvsignore index a27cc9114..86c740e36 100644 --- a/src/fsint/.cvsignore +++ b/src/fsint/.cvsignore @@ -4,6 +4,10 @@ Kcallback.ss.c Kvice.cs.c Kvice.h Kvice.xdr.c +Kpagcb.cs.c +Kpagcb.ss.c +Kpagcb.h +Kpagcb.xdr.c Makefile afscbint.cs.c afscbint.h @@ -13,3 +17,4 @@ afsint.cs.c afsint.h afsint.ss.c afsint.xdr.c +pagcb.h diff --git a/src/fsint/Makefile.in b/src/fsint/Makefile.in index 55ac0047d..a528e18b5 100644 --- a/src/fsint/Makefile.in +++ b/src/fsint/Makefile.in @@ -16,7 +16,10 @@ all: \ depinstall: \ ${TOP_INCDIR}/afs/afsint.h \ ${TOP_INCDIR}/afs/afscbint.h \ - Kcallback.ss.c Kcallback.h Kvice.cs.c Kvice.h Kvice.xdr.c afscbint.h afsint.h + ${TOP_INCDIR}/afs/pagcb.h \ + Kcallback.ss.c Kcallback.h Kvice.cs.c Kvice.h Kvice.xdr.c \ + Kpagcb.ss.c Kpagcb.h Kpagcb.cs.c Kpagcb.xdr.c \ + afscbint.h afsint.h pagcb.h libafsint.a: ${OBJS} AFS_component_version_number.o -$(RM) -f $@ @@ -26,52 +29,67 @@ libafsint.a: ${OBJS} AFS_component_version_number.o afsaux.o: afsaux.c afsint.h Kcallback.cs.c: common.xg afscbint.xg Kvice.h Kcallback.h - ${RXGEN} -x -k -A -C -o Kcallback.cs.c ${srcdir}/afscbint.xg + ${RXGEN} -A -x -k -C -o Kcallback.cs.c ${srcdir}/afscbint.xg Kcallback.ss.c: common.xg afscbint.xg Kvice.h Kcallback.h - ${RXGEN} -x -k -A -S -o Kcallback.ss.c ${srcdir}/afscbint.xg + ${RXGEN} -A -x -k -S -o Kcallback.ss.c ${srcdir}/afscbint.xg Kcallback.xdr.c: common.xg afscbint.xg Kvice.h Kcallback.h - ${RXGEN} -x -k -A -y -c -o Kcallback.xdr.c ${srcdir}/afscbint.xg + ${RXGEN} -A -x -k -y -c -o Kcallback.xdr.c ${srcdir}/afscbint.xg Kvice.cs.c: common.xg afsint.xg Kvice.h - ${RXGEN} -x -k -A -C -o Kvice.cs.c ${srcdir}/afsint.xg + ${RXGEN} -A -x -k -C -o Kvice.cs.c ${srcdir}/afsint.xg Kvice.ss.c: common.xg afsint.xg Kvice.h - ${RXGEN} -x -k -A -S -o Kvice.ss.c ${srcdir}/afsint.xg + ${RXGEN} -A -x -k -S -o Kvice.ss.c ${srcdir}/afsint.xg Kvice.xdr.c: common.xg afsint.xg - ${RXGEN} -x -k -A -c -o Kvice.xdr.c ${srcdir}/afsint.xg + ${RXGEN} -A -x -k -c -o Kvice.xdr.c ${srcdir}/afsint.xg Kvice.h: common.xg afsint.xg - ${RXGEN} -x -k -A -h -o Kvice.h ${srcdir}/afsint.xg + ${RXGEN} -A -x -k -h -o Kvice.h ${srcdir}/afsint.xg + +Kpagcb.cs.c: pagcb.xg Kpagcb.h + ${RXGEN} -A -x -k -C -o Kpagcb.cs.c ${srcdir}/pagcb.xg + +Kpagcb.ss.c: pagcb.xg Kpagcb.h + ${RXGEN} -A -x -k -S -o Kpagcb.ss.c ${srcdir}/pagcb.xg + +Kpagcb.xdr.c: pagcb.xg + ${RXGEN} -A -x -k -c -o Kpagcb.xdr.c ${srcdir}/pagcb.xg + +Kpagcb.h: pagcb.xg + ${RXGEN} -A -x -k -h -o Kpagcb.h ${srcdir}/pagcb.xg + +pagcb.h: pagcb.xg + ${RXGEN} -A -x -h -o pagcb.h ${srcdir}/pagcb.xg Kcallback.h: common.xg afscbint.xg - ${RXGEN} -x -k -A -h -o Kcallback.h ${srcdir}/afscbint.xg + ${RXGEN} -A -x -k -h -o Kcallback.h ${srcdir}/afscbint.xg afscbint.cs.c: common.xg afscbint.xg afsint.h afscbint.h - ${RXGEN} -x -A -C -o afscbint.cs.c ${srcdir}/afscbint.xg + ${RXGEN} -A -x -C -o afscbint.cs.c ${srcdir}/afscbint.xg afscbint.ss.c: common.xg afscbint.xg afsint.h afscbint.h - ${RXGEN} -x -A -S -o afscbint.ss.c ${srcdir}/afscbint.xg + ${RXGEN} -A -x -S -o afscbint.ss.c ${srcdir}/afscbint.xg afscbint.xdr.c: common.xg afscbint.xg afsint.h afscbint.h - ${RXGEN} -x -y -A -c -o afscbint.xdr.c ${srcdir}/afscbint.xg + ${RXGEN} -A -x -y -c -o afscbint.xdr.c ${srcdir}/afscbint.xg afsint.cs.c: common.xg afsint.xg afsint.h - ${RXGEN} -x -A -C -o afsint.cs.c ${srcdir}/afsint.xg + ${RXGEN} -A -x -C -o afsint.cs.c ${srcdir}/afsint.xg afsint.ss.c: common.xg afsint.xg afsint.h - ${RXGEN} -x -A -S -o afsint.ss.c ${srcdir}/afsint.xg + ${RXGEN} -A -x -S -o afsint.ss.c ${srcdir}/afsint.xg afsint.xdr.c: common.xg afsint.xg - ${RXGEN} -x -A -c -o afsint.xdr.c ${srcdir}/afsint.xg + ${RXGEN} -A -x -c -o afsint.xdr.c ${srcdir}/afsint.xg afsint.h: common.xg afsint.xg - ${RXGEN} -x -A -h -o afsint.h ${srcdir}/afsint.xg + ${RXGEN} -A -x -h -o afsint.h ${srcdir}/afsint.xg afscbint.h: common.xg afscbint.xg - ${RXGEN} -x -A -h -o afscbint.h ${srcdir}/afscbint.xg + ${RXGEN} -A -x -h -o afscbint.h ${srcdir}/afscbint.xg # # Installation targets @@ -85,6 +103,9 @@ ${TOP_INCDIR}/afs/afsint.h: afsint.h ${TOP_INCDIR}/afs/afscbint.h: afscbint.h ${INSTALL} $? $@ +${TOP_INCDIR}/afs/pagcb.h: pagcb.h + ${INSTALL} $? $@ + install: \ ${DESTDIR}${libdir}/afs/libafsint.a \ ${DESTDIR}${includedir}/afs/afsint.h \ @@ -119,8 +140,8 @@ ${DEST}/include/afs/afsint.h: afsint.h clean: $(RM) -f *.o *.cs.c *.ss.c *.er.c *.a *.xdr.c core \ - afsint.h afscbint.h AFS_component_version_number.c \ - Kvice.h Kcallback.h + afsint.h afscbint.h pagcb.h AFS_component_version_number.c \ + Kvice.h Kcallback.h Kpagcb.h include ../config/Makefile.version diff --git a/src/fsint/afsaux.c b/src/fsint/afsaux.c index 7be632edc..5d26a34d6 100644 --- a/src/fsint/afsaux.c +++ b/src/fsint/afsaux.c @@ -15,7 +15,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/fsint/afsaux.c,v 1.12.2.1 2005/04/03 18:15:50 shadow Exp $"); + ("$Header: /cvs/openafs/src/fsint/afsaux.c,v 1.13 2005/04/03 18:09:29 shadow Exp $"); #ifdef KERNEL #if defined(UKERNEL) diff --git a/src/fsint/afscbint.xg b/src/fsint/afscbint.xg index 8edc66ff5..448971393 100644 --- a/src/fsint/afscbint.xg +++ b/src/fsint/afscbint.xg @@ -111,3 +111,15 @@ proc TellMeAboutYourself( OUT struct interfaceAddr *addr, OUT Capabilities *capabilities ) = 65538; + +/* +proc GetDE( + IN afs_int32 index, + OUT afs_int32 addr, + OUT afs_int32 inode, + OUT afs_int32 flags, + OUT afs_int32 time, + OUT string fileName +) = 65539; +*/ + diff --git a/src/fsint/afsint.xg b/src/fsint/afsint.xg index c50037797..b2b12d7e8 100644 --- a/src/fsint/afsint.xg +++ b/src/fsint/afsint.xg @@ -702,3 +702,80 @@ GetCapabilities( CallBackRxConnAddr( IN afs_int32 *addr ) = 65541; + +%#define STATS64_CURRENTTIME 0 +%#define STATS64_BOOTTIME 1 +%#define STATS64_STARTTIME 2 +%#define STATS64_CURRENTCONNECTIONS 3 +%#define STATS64_TOTALFETCHES 4 +%#define STATS64_FETCHDATAS 5 +%#define STATS64_FETCHEDBYTES 6 +%#define STATS64_FETCHDATARATE 7 +%#define STATS64_TOTALSTORES 8 +%#define STATS64_STOREDATAS 9 +%#define STATS64_STOREDBYTES 10 +%#define STATS64_STOREDATARATE 11 +%#define STATS64_TOTALVICECALLS 12 +%#define STATS64_WORKSTATIONS 13 +%#define STATS64_ACTIVEWORKSTATIONS 14 +%#define STATS64_PROCESSSIZE 15 + +const STATS64_VERSION = 16; +typedef afs_uint64 ViceStatistics64; + +/* the "version" is a number representing the number of + array elements to return, from 0 to N-1 */ + +GetStatistics64( + IN afs_int32 statsVersion, + OUT ViceStatistics64 *Statistics +) = 65542; + +/* rx osd. put here now to hold version numbers. +ServerPath( + IN AFSFid *Fid, + afs_int32 writing, + OUT FilePath *NameiInfo, + AFSFetchStatus *OutStatus, + AFSCallBack *CallBack +) = 65551; + +PerfTest( + IN afs_int32 type, + afs_int64 bytes, + afs_int32 bufsize +) split = 65552; + +GetOSDlocation( + IN AFSFid *Fid, + afs_uint64 offset, + afs_uint64 length, + afs_int32 flag, + afsUUID uuid, + OUT AFSFetchStatus *OutStatus, + AFSCallBack *CallBack, + struct osd_file *osd +) = 65557; + +InverseLookup( + IN AFSFid *Fid, + afs_uint32 parent, + OUT struct afs_filename *file, + afs_uint32 *nextparent +) = 65558; + +CheckOSDconns() = 65559; + +OsdPolicy(IN AFSFid *Fid, + afs_uint64 length, + OUT afs_uint32 *protocol +) = 65560; + +SetOsdFileReady( + IN AFSFid *Fid +) = 65561; + +GetOsdMetadata( + IN AFSFid *Fid +) split = 65562; +*/ diff --git a/src/fsint/common.xg b/src/fsint/common.xg index 7d8f6751e..cb3b43626 100644 --- a/src/fsint/common.xg +++ b/src/fsint/common.xg @@ -75,6 +75,22 @@ struct AFSDBLock { struct AFSDBLockDesc lock; }; +struct AFSDEntry { + afs_int32 addr; + afs_int32 cell; /*Cell part of the fid*/ + AFSFid netFid; /*Network part of the fid*/ + afs_int32 Length; + afs_int32 DataVersion; + struct AFSDBLockDesc lock; + afs_int32 callback; + afs_int32 cbExpires; + short refCount; + short opens; + short writers; + char mvstat; + char states; +}; + /* * Callback types. */ @@ -158,6 +174,15 @@ typedef afs_int32 serverList; typedef afs_uint32 cacheConfig<>; const AFSCAPABILITIESMAX = 196; -typedef afs_int32 Capabilities; +typedef afs_uint32 Capabilities; + +/* Viced Capability Flags */ +const VICED_CAPABILITY_ERRORTRANS = 0x0001; +const VICED_CAPABILITY_64BITFILES = 0x0002; +const VICED_CAPABILITY_WRITELOCKACL = 0x0004; +const VICED_CAPABILITY_SANEACLS = 0x0008; + +/* Cache Manager Capability Flags */ +const CLIENT_CAPABILITY_ERRORTRANS = 0x0001; %#endif /* FSINT_COMMON_XG */ diff --git a/src/fsint/pagcb.xg b/src/fsint/pagcb.xg new file mode 100644 index 000000000..d6b6ab495 --- /dev/null +++ b/src/fsint/pagcb.xg @@ -0,0 +1,58 @@ +/* + * Copyright 2006, International Business Machines Corporation and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +/* + * pagcb.xg: + * Definition of the PAG Manager callback RPC interface. + */ + +package PAGCB_ +prefix S +statindex 21 +%#define PAGCB_SERVICEID 2 + +const PAGCB_MAXREALMLEN = 256; +const PAGCB_MAXTICKETLEN = 12000; +const PAGCB_MAXCREDS = 256; +const PAGCB_MAXSYSNAMELEN = 128; +const PAGCB_MAXSYSNAMES = 16; + +struct PAGCB_ClearToken { + afs_int32 AuthHandle; + char HandShakeKey[8]; + afs_int32 ViceId; + afs_int32 BeginTimestamp; + afs_int32 EndTimestamp; +}; + +struct CredInfo { + string cellname; + afs_int32 vid; + afs_int32 states; + PAGCB_ClearToken ct; + opaque st; +}; + +typedef CredInfo CredInfos; + +struct SysNameEnt { + string sysname; +}; + +typedef SysNameEnt SysNameList; + +proc GetCreds( + IN afs_int32 uid, + OUT CredInfos *creds +) = 1; + +proc GetSysName( + IN afs_int32 uid, + OUT SysNameList *sysnames +) = 2; diff --git a/src/fsprobe/fsprobe.c b/src/fsprobe/fsprobe.c index 7abbd07ac..94ce0bd0d 100644 --- a/src/fsprobe/fsprobe.c +++ b/src/fsprobe/fsprobe.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/fsprobe/fsprobe.c,v 1.9.2.2 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/fsprobe/fsprobe.c,v 1.9.14.3 2008/03/10 22:32:33 shadow Exp $"); #include @@ -25,6 +25,7 @@ RCSID #include /*Interface for this module */ #include /*Lightweight process package */ #include +#include #define LWP_STACK_SIZE (16 * 1024) @@ -242,7 +243,9 @@ fsprobe_LWP(void *unused) struct fsprobe_ConnectionInfo *curr_conn; /*Current connection */ struct ProbeViceStatistics *curr_stats; /*Current stats region */ int *curr_probeOK; /*Current probeOK field */ - + ViceStatistics64 stats64; /*Current stats region */ + stats64.ViceStatistics64_val = (afs_uint64 *)malloc(STATS64_VERSION * + sizeof(afs_uint64)); while (1) { /*Service loop */ /* * Iterate through the server connections, gathering data. @@ -274,8 +277,19 @@ fsprobe_LWP(void *unused) "[%s] Connection valid, calling RXAFS_GetStatistics\n", rn); *curr_probeOK = - RXAFS_GetStatistics(curr_conn->rxconn, curr_stats); - + RXAFS_GetStatistics64(curr_conn->rxconn, STATS64_VERSION, &stats64); + if (*curr_probeOK == RXGEN_OPCODE) + *curr_probeOK = + RXAFS_GetStatistics(curr_conn->rxconn, curr_stats); + else if (*curr_probeOK == 0) { + curr_stats->CurrentTime = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_CURRENTTIME]); + curr_stats->BootTime = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_BOOTTIME]); + curr_stats->StartTime = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_STARTTIME]); + curr_stats->CurrentConnections = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_CURRENTCONNECTIONS]); + curr_stats->TotalFetchs = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_TOTALFETCHES]); + curr_stats->TotalStores = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_TOTALSTORES]); + curr_stats->WorkStations = RoundInt64ToInt32(stats64.ViceStatistics64_val[STATS64_WORKSTATIONS]); + } } /*Valid Rx connection */ @@ -289,6 +303,8 @@ fsprobe_LWP(void *unused) int i, code; char pname[10]; struct diskPartition partition; + struct diskPartition64 *partition64p = + (struct diskPartition64 *)malloc(sizeof(struct diskPartition64)); if (fsprobe_debug) fprintf(stderr, @@ -299,22 +315,36 @@ fsprobe_LWP(void *unused) MapPartIdIntoName(curr_conn->partList.partId[i], pname); code = - AFSVolPartitionInfo(curr_conn->rxVolconn, pname, - &partition); + AFSVolPartitionInfo64(curr_conn->rxVolconn, pname, + partition64p); + + if (!code) { + curr_stats->Disk[i].BlocksAvailable = + RoundInt64ToInt31(partition64p->free); + curr_stats->Disk[i].TotalBlocks = + RoundInt64ToInt31(partition64p->minFree); + strcpy(curr_stats->Disk[i].Name, pname); + } + if (code == RXGEN_OPCODE) { + code = + AFSVolPartitionInfo(curr_conn->rxVolconn, + pname, &partition); + if (!code) { + curr_stats->Disk[i].BlocksAvailable = + partition.free; + curr_stats->Disk[i].TotalBlocks = + partition.minFree; + strcpy(curr_stats->Disk[i].Name, pname); + } + } if (code) { fprintf(stderr, "Could not get information on server %s partition %s\n", curr_conn->hostName, pname); - } else { - curr_stats->Disk[i].BlocksAvailable = - partition.free; - curr_stats->Disk[i].TotalBlocks = - partition.minFree; - strcpy(curr_stats->Disk[i].Name, pname); } } - } + free(partition64p); } @@ -358,6 +388,7 @@ fsprobe_LWP(void *unused) if (code) fprintf(stderr, "[%s] IOMGR_Select returned code %d\n", rn, code); } /*Service loop */ + free(stats64.ViceStatistics64_val); return NULL; } /*fsprobe_LWP */ diff --git a/src/fsprobe/fsprobe_callback.c b/src/fsprobe/fsprobe_callback.c index b360c27f6..a0fbcfc62 100644 --- a/src/fsprobe/fsprobe_callback.c +++ b/src/fsprobe/fsprobe_callback.c @@ -25,7 +25,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/fsprobe/fsprobe_callback.c,v 1.12 2003/07/15 23:15:08 shadow Exp $"); + ("$Header: /cvs/openafs/src/fsprobe/fsprobe_callback.c,v 1.13 2005/10/07 20:11:05 shadow Exp $"); #include #include /*Standard I/O stuff */ @@ -761,3 +761,15 @@ SRXAFSCB_TellMeAboutYourself(struct rx_call * rxcall, */ return (0); } + +int SRXAFSCB_GetDE(a_call, a_index, addr, inode, flags, time, fileName) + struct rx_call *a_call; + afs_int32 a_index; + afs_int32 addr; + afs_int32 inode; + afs_int32 flags; + afs_int32 time; + char ** fileName; +{ + return RXGEN_OPCODE; +} diff --git a/src/fsprobe/fsprobe_test.c b/src/fsprobe/fsprobe_test.c index 3338254fc..3b907ba98 100644 --- a/src/fsprobe/fsprobe_test.c +++ b/src/fsprobe/fsprobe_test.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/fsprobe/fsprobe_test.c,v 1.8.2.2 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/fsprobe/fsprobe_test.c,v 1.9.2.1 2007/10/30 15:16:39 shadow Exp $"); #include #include /*Interface for fsprobe module */ diff --git a/src/ftpd43+/.cvsignore b/src/ftpd43+/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/src/ftpd43+/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/src/gtx/curseswindows.c b/src/gtx/curseswindows.c index f5eba5300..7d2969a90 100644 --- a/src/gtx/curseswindows.c +++ b/src/gtx/curseswindows.c @@ -19,7 +19,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/curseswindows.c,v 1.10.2.2 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/curseswindows.c,v 1.10.14.2 2008/03/10 22:32:33 shadow Exp $"); #if defined(AFS_HPUX110_ENV) && !defined(__HP_CURSES) diff --git a/src/gtx/frame.c b/src/gtx/frame.c index 448463458..11b7b75d0 100644 --- a/src/gtx/frame.c +++ b/src/gtx/frame.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/frame.c,v 1.7.2.3 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/frame.c,v 1.7.14.3 2008/03/10 22:32:33 shadow Exp $"); #ifdef AFS_HPUX_ENV #include diff --git a/src/gtx/gtxtest.c b/src/gtx/gtxtest.c index e69982405..bf2955923 100644 --- a/src/gtx/gtxtest.c +++ b/src/gtx/gtxtest.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/gtxtest.c,v 1.6.2.3 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/gtxtest.c,v 1.7.4.2 2007/11/26 21:08:42 shadow Exp $"); #include diff --git a/src/gtx/input.c b/src/gtx/input.c index f3b92b7fc..b74fe22fc 100644 --- a/src/gtx/input.c +++ b/src/gtx/input.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/input.c,v 1.7.2.2 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/input.c,v 1.7.14.2 2008/03/10 22:32:33 shadow Exp $"); #ifdef AFS_HPUX_ENV #include diff --git a/src/gtx/keymap.c b/src/gtx/keymap.c index 462c8f1d4..aac5c1859 100644 --- a/src/gtx/keymap.c +++ b/src/gtx/keymap.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/keymap.c,v 1.7.2.1 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/keymap.c,v 1.7.14.1 2007/10/30 15:16:39 shadow Exp $"); #include #include diff --git a/src/gtx/lightobject.c b/src/gtx/lightobject.c index 582582ed7..74ec3730a 100644 --- a/src/gtx/lightobject.c +++ b/src/gtx/lightobject.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/lightobject.c,v 1.6.2.1 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/lightobject.c,v 1.6.14.1 2007/10/30 15:16:39 shadow Exp $"); #include "gtxlightobj.h" /*Interface for this module */ #include /*Standard I/O stuff */ diff --git a/src/gtx/object_test.c b/src/gtx/object_test.c index badb3e435..9ea2c785a 100644 --- a/src/gtx/object_test.c +++ b/src/gtx/object_test.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/object_test.c,v 1.7.2.1 2007/10/31 04:13:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/object_test.c,v 1.7.14.1 2007/10/31 04:09:27 shadow Exp $"); #include "gtxscreenobj.h" /*Gator screen object interface */ #include "gtxtextobj.h" /*Gator text object interface */ diff --git a/src/gtx/objects.c b/src/gtx/objects.c index 8851b3f35..075778d5c 100644 --- a/src/gtx/objects.c +++ b/src/gtx/objects.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/objects.c,v 1.6.2.1 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/objects.c,v 1.6.14.1 2007/10/30 15:16:39 shadow Exp $"); #include "gtxobjects.h" /*Interface for this module */ #include "gtxtextobj.h" /*Text object interface */ diff --git a/src/gtx/screen_test.c b/src/gtx/screen_test.c index 42abe5608..c25479fb4 100644 --- a/src/gtx/screen_test.c +++ b/src/gtx/screen_test.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/screen_test.c,v 1.7.2.1 2007/10/31 04:13:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/screen_test.c,v 1.7.14.1 2007/10/31 04:09:27 shadow Exp $"); #include "gtxwindows.h" /*Generalized window interface */ #include "gtxcurseswin.h" /*Curses window interface */ diff --git a/src/gtx/textcb.c b/src/gtx/textcb.c index 86af2939e..3ca3781a0 100644 --- a/src/gtx/textcb.c +++ b/src/gtx/textcb.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/textcb.c,v 1.7.2.1 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/textcb.c,v 1.7.14.1 2007/10/30 15:16:39 shadow Exp $"); #include "gtxtextcb.h" /*Module interface */ #include /*Standard I/O stuff */ diff --git a/src/gtx/textobject.c b/src/gtx/textobject.c index 160b081ff..483083605 100644 --- a/src/gtx/textobject.c +++ b/src/gtx/textobject.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/gtx/textobject.c,v 1.6.2.2 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/gtx/textobject.c,v 1.6.14.2 2007/11/26 21:08:42 shadow Exp $"); #include "gtxtextobj.h" /*Interface for this module */ #include "gtxwindows.h" /*Gator window interface */ diff --git a/src/include/Makefile.am b/src/include/Makefile.am deleted file mode 100644 index de52ef3a2..000000000 --- a/src/include/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:51 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -SUBDIRS = \ - afs \ - rx - -CLEANFILES = \ - com_err.h \ - error_table.h \ - mit-sipb-cr.h - diff --git a/src/include/afs/Makefile.am b/src/include/afs/Makefile.am deleted file mode 100644 index bd85f8876..000000000 --- a/src/include/afs/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:51 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -CLEANFILES = \ - param.h diff --git a/src/include/rx/Makefile.am b/src/include/rx/Makefile.am deleted file mode 100644 index bd29f3fd0..000000000 --- a/src/include/rx/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -# $Id: Makefile.am,v 1.1 2001/06/05 20:17:51 shadow Exp $ - -include $(top_srcdir)/Makefile.am.common - -CLEANFILES = \ - afs_sysnames.h \ - param.h diff --git a/src/inetd/.cvsignore b/src/inetd/.cvsignore deleted file mode 100644 index f3c7a7c5d..000000000 --- a/src/inetd/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile diff --git a/src/kauth/NTMakefile b/src/kauth/NTMakefile index d2f25758d..75a1bc978 100644 --- a/src/kauth/NTMakefile +++ b/src/kauth/NTMakefile @@ -98,7 +98,8 @@ AFSLIBS = \ $(DESTDIR)\lib\afsubik.lib \ $(DESTDIR)\lib\afs\afseventlog.lib \ $(DESTDIR)\lib\afsrxkad.lib \ - $(DESTDIR)\lib\cm_dns.obj + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj TOKENLIB = $(DESTDIR)\lib\afs\afspioctl.lib @@ -125,8 +126,10 @@ KASERVER_EXELIBS =\ $(DESTDIR)\lib\afs\afsprocmgmt.lib $(KASERVER): $(KASERVER_OBJS) $(AFSLIBS) $(KASERVER_EXELIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) #build $(OUT)\kadatabase.obj @@ -149,8 +152,10 @@ KAS_OBJS =\ $(OUT)\kas.res $(KAS): $(KAS_OBJS) $(AFSLIBS) $(KAUTH_LIBFILE) $(TOKENLIB) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) ########### Misc Exes ####################################################### #kpasswd.exe @@ -162,20 +167,28 @@ KPASSWD_OBJS =\ $(OUT)\kpasswd.res $(KPASSWD_EXEFILE): $(KPASSWD_OBJS) $(AFSLIBS) $(KAUTH_LIBFILE) $(TOKENLIB) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) #kpwvalid.exe $(OUT)\kpwvalid.exe: $(OUT)\kpwvalid.obj $(AFSLIBS) $(KAUTH_LIBFILE) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) #kdb.exe - Not implemented for NT - because dbm not available on NT #kdb.exe: $(OUT)\kdb.obj $(AFSLIBS) $(KAUTH_LIBFILE) -# $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib +# $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib +# $(_VC_MANIFEST_EMBED_EXE) +# $(CODESIGN_USERLAND) #rebuild.exe $(OUT)\rebuild.exe: $(OUT)\rebuild.obj $(OUT)\kautils.obj $(AFSLIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) ############################################################################ # Definitions for generating versioninfo resources diff --git a/src/kauth/admin_tools.c b/src/kauth/admin_tools.c index 71918b5b8..b6869b6ee 100644 --- a/src/kauth/admin_tools.c +++ b/src/kauth/admin_tools.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/admin_tools.c,v 1.16.2.5 2007/10/31 04:13:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/admin_tools.c,v 1.19.8.2 2007/10/31 04:09:30 shadow Exp $"); #include #include diff --git a/src/kauth/authclient.c b/src/kauth/authclient.c index d3a44fb1b..050b5dc15 100644 --- a/src/kauth/authclient.c +++ b/src/kauth/authclient.c @@ -17,7 +17,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/kauth/authclient.c,v 1.14.2.8 2007/11/26 20:41:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/authclient.c,v 1.18.8.4 2007/11/26 20:39:46 shadow Exp $"); #if defined(UKERNEL) #include "afs/sysincludes.h" diff --git a/src/kauth/client.c b/src/kauth/client.c index bd017d4e9..ea75a73d7 100644 --- a/src/kauth/client.c +++ b/src/kauth/client.c @@ -15,7 +15,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/kauth/client.c,v 1.12.2.3 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/client.c,v 1.14.4.1 2007/10/30 15:16:39 shadow Exp $"); #if defined(UKERNEL) #ifdef HAVE_UNISTD_H diff --git a/src/kauth/decode_ticket.c b/src/kauth/decode_ticket.c index 2fd4ca7df..c12a362c8 100644 --- a/src/kauth/decode_ticket.c +++ b/src/kauth/decode_ticket.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/decode_ticket.c,v 1.6.2.1 2007/04/10 18:43:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/decode_ticket.c,v 1.6.14.1 2007/04/10 18:39:52 shadow Exp $"); #include #include diff --git a/src/kauth/ka-forwarder.c b/src/kauth/ka-forwarder.c index 3e3a610b9..865c56318 100644 --- a/src/kauth/ka-forwarder.c +++ b/src/kauth/ka-forwarder.c @@ -9,8 +9,8 @@ /* * HISTORY * $Log: ka-forwarder.c,v $ - * Revision 1.2.4.2 2007/08/19 22:17:44 rra - * DELTA STABLE14-ka-forwarder-20060731 + * Revision 1.2.2.2 2007/08/19 22:15:29 rra + * DELTA DEVEL15-ka-forwarder-20060731 * AUTHOR rra@stanford.edu * * Add ka-forwarder. diff --git a/src/kauth/kaauxdb.c b/src/kauth/kaauxdb.c index 3cf67524e..3b04c2632 100644 --- a/src/kauth/kaauxdb.c +++ b/src/kauth/kaauxdb.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kaauxdb.c,v 1.9.2.1 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kaauxdb.c,v 1.9.14.1 2007/10/30 15:16:39 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/kauth/kadatabase.c b/src/kauth/kadatabase.c index bbb4c250d..c7270c128 100644 --- a/src/kauth/kadatabase.c +++ b/src/kauth/kadatabase.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kadatabase.c,v 1.10.2.3 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kadatabase.c,v 1.11.8.2 2007/11/26 21:08:42 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/kauth/kalocalcell.c b/src/kauth/kalocalcell.c index 23461746f..f5db91ac0 100644 --- a/src/kauth/kalocalcell.c +++ b/src/kauth/kalocalcell.c @@ -15,7 +15,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/kauth/kalocalcell.c,v 1.8.2.2 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kalocalcell.c,v 1.9.8.1 2007/10/30 15:16:39 shadow Exp $"); #if defined(UKERNEL) #include "afs/pthread_glock.h" diff --git a/src/kauth/kalog.c b/src/kauth/kalog.c index bebdd9771..710ac2189 100644 --- a/src/kauth/kalog.c +++ b/src/kauth/kalog.c @@ -20,7 +20,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kalog.c,v 1.6.2.1 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kalog.c,v 1.6.14.1 2007/10/30 15:16:39 shadow Exp $"); #include #include diff --git a/src/kauth/kaprocs.c b/src/kauth/kaprocs.c index d72e5a0f2..0517f6203 100644 --- a/src/kauth/kaprocs.c +++ b/src/kauth/kaprocs.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kaprocs.c,v 1.16.2.2 2007/04/10 18:43:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kaprocs.c,v 1.17.8.1 2007/04/10 18:39:52 shadow Exp $"); #include #include diff --git a/src/kauth/kas.c b/src/kauth/kas.c index 505af02e8..9b7bffe1b 100644 --- a/src/kauth/kas.c +++ b/src/kauth/kas.c @@ -12,7 +12,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kas.c,v 1.7.2.2 2007/10/30 15:23:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kas.c,v 1.7.14.2 2007/10/30 15:16:39 shadow Exp $"); #include #ifdef AFS_AIX32_ENV diff --git a/src/kauth/kaserver.c b/src/kauth/kaserver.c index e28630818..33a3e95ae 100644 --- a/src/kauth/kaserver.c +++ b/src/kauth/kaserver.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kaserver.c,v 1.17.2.8 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kaserver.c,v 1.19.2.6 2008/03/10 22:32:33 shadow Exp $"); #include #include diff --git a/src/kauth/kautils.c b/src/kauth/kautils.c index 44c69a9f0..984f44bf9 100644 --- a/src/kauth/kautils.c +++ b/src/kauth/kautils.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kautils.c,v 1.9.2.1 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kautils.c,v 1.9.14.1 2007/10/30 15:16:39 shadow Exp $"); #include #include diff --git a/src/kauth/kdb.c b/src/kauth/kdb.c index c2a5e1a29..e03157363 100644 --- a/src/kauth/kdb.c +++ b/src/kauth/kdb.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kdb.c,v 1.7.2.3 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kdb.c,v 1.8.8.2 2007/11/26 21:08:42 shadow Exp $"); #include #include diff --git a/src/kauth/kkids.c b/src/kauth/kkids.c index 4a286f241..fba81e1bf 100644 --- a/src/kauth/kkids.c +++ b/src/kauth/kkids.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kkids.c,v 1.6.2.1 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kkids.c,v 1.7.4.1 2007/11/26 21:08:42 shadow Exp $"); #include #include @@ -353,7 +353,7 @@ kpwvalid_is(char *dir) struct stat statbuff; int len; - len = strlen(dir); + len = (int)strlen(dir); strcpy(dir + len, "/kpwvalid"); if (stat(dir, &statbuff) < 0) { diff --git a/src/kauth/klog.c b/src/kauth/klog.c index 733c53c2c..51bd218a1 100644 --- a/src/kauth/klog.c +++ b/src/kauth/klog.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/klog.c,v 1.8.2.3 2007/10/31 04:13:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/klog.c,v 1.8.14.4 2007/10/31 04:09:30 shadow Exp $"); #include #include @@ -26,7 +26,6 @@ RCSID #include #include #include -#include #include #include #include "kauth.h" diff --git a/src/kauth/knfs.c b/src/kauth/knfs.c index 8b87ec52a..207d871c9 100644 --- a/src/kauth/knfs.c +++ b/src/kauth/knfs.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/knfs.c,v 1.8.2.2 2007/10/31 04:13:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/knfs.c,v 1.8.14.2 2007/10/31 04:09:30 shadow Exp $"); #include #include diff --git a/src/kauth/kpasswd.c b/src/kauth/kpasswd.c index 2165db1c8..9db295945 100644 --- a/src/kauth/kpasswd.c +++ b/src/kauth/kpasswd.c @@ -12,7 +12,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kpasswd.c,v 1.14.2.4 2007/10/31 04:13:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kpasswd.c,v 1.15.8.3 2007/10/31 04:09:30 shadow Exp $"); #include #include diff --git a/src/kauth/kpwvalid.c b/src/kauth/kpwvalid.c index d86f9c246..eb2da2df7 100644 --- a/src/kauth/kpwvalid.c +++ b/src/kauth/kpwvalid.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/kpwvalid.c,v 1.6.2.2 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/kpwvalid.c,v 1.6.14.2 2007/11/26 21:08:42 shadow Exp $"); #include #include diff --git a/src/kauth/krb_tf.c b/src/kauth/krb_tf.c index 76ecab4ce..fd6094bea 100644 --- a/src/kauth/krb_tf.c +++ b/src/kauth/krb_tf.c @@ -48,7 +48,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/krb_tf.c,v 1.6.2.3 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/krb_tf.c,v 1.6.14.3 2007/10/30 15:16:39 shadow Exp $"); #ifdef HAVE_FCNTL_H #include diff --git a/src/kauth/krb_udp.c b/src/kauth/krb_udp.c index 782df22f4..344ffd3d0 100644 --- a/src/kauth/krb_udp.c +++ b/src/kauth/krb_udp.c @@ -16,7 +16,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/krb_udp.c,v 1.23.2.5 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/krb_udp.c,v 1.23.14.5 2008/03/10 22:32:33 shadow Exp $"); #include #include diff --git a/src/kauth/manyklog.c b/src/kauth/manyklog.c index 1c0240ef8..12e9666a3 100644 --- a/src/kauth/manyklog.c +++ b/src/kauth/manyklog.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/manyklog.c,v 1.7.2.2 2007/10/31 04:13:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/manyklog.c,v 1.7.14.3 2007/10/31 04:09:30 shadow Exp $"); #include #include @@ -26,7 +26,6 @@ RCSID #include #include #include -#include #include #include #include "kauth.h" diff --git a/src/kauth/read_passwd.c b/src/kauth/read_passwd.c index 4efaaed4c..6fbe9bffb 100644 --- a/src/kauth/read_passwd.c +++ b/src/kauth/read_passwd.c @@ -14,7 +14,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/read_passwd.c,v 1.6.2.1 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/read_passwd.c,v 1.6.14.1 2007/10/30 15:16:39 shadow Exp $"); #include #include diff --git a/src/kauth/rebuild.c b/src/kauth/rebuild.c index a88f1f78f..80b66f8fe 100644 --- a/src/kauth/rebuild.c +++ b/src/kauth/rebuild.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/rebuild.c,v 1.11.2.5 2007/11/26 21:21:52 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/rebuild.c,v 1.13.2.4 2007/11/26 21:08:42 shadow Exp $"); #include #include @@ -118,6 +118,9 @@ PrintEntry(index, entry) char Time[100]; struct tm *tm_p; time_t tt; + time_t modification_time = entry->modification_time; + time_t change_password_time = entry->change_password_time; + time_t max_ticket_lifetime = entry->max_ticket_lifetime; printf("\n"); @@ -198,12 +201,12 @@ PrintEntry(index, entry) (!entry->pwsums[0] && !entry->pwsums[1]) ? "yes" : "no"); printf(" Mod Time = %u: %s", entry->modification_time, - ctime((time_t *) & entry->modification_time)); + ctime(&modification_time)); printf(" Mod ID = %u\n", entry->modification_id); printf(" Change Password Time = %u: %s", entry->change_password_time, - ctime((time_t *) & entry->change_password_time)); + ctime(&change_password_time)); printf(" Ticket lifetime = %u: %s", entry->max_ticket_lifetime, - ctime((time_t *) & entry->max_ticket_lifetime)); + ctime(&max_ticket_lifetime)); printf(" Key Version = %d\n", entry->key_version); printf(" Key = "); diff --git a/src/kauth/test/NTMakefile b/src/kauth/test/NTMakefile index b4a9b2103..d976faf99 100644 --- a/src/kauth/test/NTMakefile +++ b/src/kauth/test/NTMakefile @@ -24,28 +24,43 @@ EXELIBS = \ $(OUT)\multiklog.exe: $(OUT)\multiklog.obj $(EXECONLINK) $(EXELIBS) - + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\test_date.exe: $(OUT)\test_date.obj $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\test_badtix.exe: $(OUT)\test_badtix.obj $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\decode_ticket.exe: $(OUT)\decode_ticket.obj $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\test_interim_ktc.exe: $(OUT)\test_interim_ktc.obj $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\test_rxkad_free: test_rxkad_free.o $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\test_getticket.exe: $(OUT)\test_getticket.obj $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) $(OUT)\background.exe: $(OUT)\background.obj $(EXECONLINK) $(EXELIBS) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) test tests all: $(OUT)\multiklog.exe $(OUT)\test_date.exe $(OUT)\test_badtix.exe $(OUT)\decode_ticket.exe \ diff --git a/src/kauth/test/multiklog.c b/src/kauth/test/multiklog.c index bc55a2218..95dd5603f 100644 --- a/src/kauth/test/multiklog.c +++ b/src/kauth/test/multiklog.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/test/multiklog.c,v 1.7.2.2 2007/10/31 04:13:40 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/test/multiklog.c,v 1.7.14.3 2007/10/31 04:09:31 shadow Exp $"); #include #include @@ -30,7 +30,6 @@ RCSID #include #include #include -#include #include #include #include "kauth.h" diff --git a/src/kauth/test/test_badtix.c b/src/kauth/test/test_badtix.c index 41cdefae2..8f77f8bf5 100644 --- a/src/kauth/test/test_badtix.c +++ b/src/kauth/test/test_badtix.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/test/test_badtix.c,v 1.7.2.1 2007/04/10 18:43:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/test/test_badtix.c,v 1.7.14.1 2007/04/10 18:39:52 shadow Exp $"); #include #include diff --git a/src/kauth/test/test_getticket.c b/src/kauth/test/test_getticket.c index c3d07c168..bcc0e3579 100644 --- a/src/kauth/test/test_getticket.c +++ b/src/kauth/test/test_getticket.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/test/test_getticket.c,v 1.7.2.3 2007/10/31 04:13:40 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/test/test_getticket.c,v 1.8.4.2 2007/10/31 04:09:31 shadow Exp $"); #include #include diff --git a/src/kauth/test/test_interim_ktc.c b/src/kauth/test/test_interim_ktc.c index 8236aeea4..5d38baa30 100644 --- a/src/kauth/test/test_interim_ktc.c +++ b/src/kauth/test/test_interim_ktc.c @@ -19,7 +19,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/test/test_interim_ktc.c,v 1.7.2.1 2007/04/10 18:43:43 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/test/test_interim_ktc.c,v 1.7.14.1 2007/04/10 18:39:52 shadow Exp $"); #include #include diff --git a/src/kauth/test/test_rxkad_free.c b/src/kauth/test/test_rxkad_free.c index 9961d998a..87ccfbf20 100644 --- a/src/kauth/test/test_rxkad_free.c +++ b/src/kauth/test/test_rxkad_free.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/test/test_rxkad_free.c,v 1.7.2.3 2007/10/31 04:13:40 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/test/test_rxkad_free.c,v 1.8.4.2 2007/10/31 04:09:31 shadow Exp $"); #include #include diff --git a/src/kauth/token.c b/src/kauth/token.c index 23eb6dcdd..53d0781e3 100644 --- a/src/kauth/token.c +++ b/src/kauth/token.c @@ -19,7 +19,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/kauth/token.c,v 1.9.2.2 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/token.c,v 1.10.8.1 2007/10/30 15:16:39 shadow Exp $"); #if defined(UKERNEL) #include "afs/sysincludes.h" diff --git a/src/kauth/user.c b/src/kauth/user.c index 4bb207af6..eaa1a5ef9 100644 --- a/src/kauth/user.c +++ b/src/kauth/user.c @@ -18,7 +18,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/kauth/user.c,v 1.11.2.3 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/user.c,v 1.12.8.2 2007/10/30 15:16:39 shadow Exp $"); #if defined(UKERNEL) #include "afs/sysincludes.h" diff --git a/src/kauth/user_nt.c b/src/kauth/user_nt.c index e0a9d00b1..1be847964 100644 --- a/src/kauth/user_nt.c +++ b/src/kauth/user_nt.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/kauth/user_nt.c,v 1.12.2.1 2004/08/25 07:09:38 shadow Exp $"); + ("$Header: /cvs/openafs/src/kauth/user_nt.c,v 1.13 2004/08/19 01:07:47 kolya Exp $"); #include diff --git a/src/libacl/acl.h b/src/libacl/acl.h index 96567f374..71aa1fe3a 100644 --- a/src/libacl/acl.h +++ b/src/libacl/acl.h @@ -62,4 +62,16 @@ for now */ typedef struct acl_accessList AL_AccessList; +extern int acl_NewACL(int nEntries, struct acl_accessList **acl); +extern int acl_FreeACL(struct acl_accessList **acl); +extern int acl_NewExternalACL(int nEntries, char **r); +extern int acl_FreeExternalACL(char **r); +extern int acl_Externalize(struct acl_accessList *acl, char **elist); +extern int acl_Internalize(char *elist, struct acl_accessList **acl); +extern int acl_Initialize(char *version); +#ifdef _RXGEN_PTINT_ +extern int acl_CheckRights(struct acl_accessList *acl, prlist *groups, int *rights); +extern int acl_IsAMember(afs_int32 aid, prlist *cps); +#endif + #endif diff --git a/src/libacl/aclprocs.c b/src/libacl/aclprocs.c index 3063bd445..67ac6dbb8 100644 --- a/src/libacl/aclprocs.c +++ b/src/libacl/aclprocs.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libacl/aclprocs.c,v 1.13.2.1 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/libacl/aclprocs.c,v 1.14.2.1 2007/10/30 15:16:40 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -84,9 +84,7 @@ CmpInt(x, y) int -acl_NewACL(nEntries, acl) - int nEntries; - struct acl_accessList **acl; +acl_NewACL(int nEntries, struct acl_accessList **acl) { /* Creates an access list capable of holding at least nEntries entries. * Returns 0 on success; aborts if we run out of memory. */ @@ -117,8 +115,7 @@ acl_NewACL(nEntries, acl) int -acl_FreeACL(acl) - struct acl_accessList **acl; +acl_FreeACL(struct acl_accessList **acl) { /* Releases the access list defined by acl. Returns 0 always. */ struct freeListEntry *x; @@ -130,9 +127,7 @@ acl_FreeACL(acl) } int -acl_NewExternalACL(nEntries, r) - int nEntries; - char **r; +acl_NewExternalACL(int nEntries, char **r) { /* Puts an external acl big enough to hold nEntries in r. Returns 0 on success, aborts if insufficient memory. */ @@ -159,8 +154,7 @@ acl_NewExternalACL(nEntries, r) } int -acl_FreeExternalACL(r) - char **r; +acl_FreeExternalACL(char **r) { /* Releases the external access list defined by r. Returns 0 always. */ @@ -174,9 +168,7 @@ acl_FreeExternalACL(r) int -acl_Externalize(acl, elist) - struct acl_accessList *acl; - char **elist; +acl_Externalize(struct acl_accessList *acl, char **elist) { /* Converts the access list defined by acl into the external access list in elist. Non-translatable id's are converted to their ASCII string representations. Returns 0 on success, -1 if number of entries exceeds ACL_MAXENTRIES, or a failure code from the protection server if the problem occured there. */ @@ -234,9 +226,7 @@ acl_Externalize(acl, elist) int -acl_Internalize(elist, acl) - char *elist; - struct acl_accessList **acl; +acl_Internalize(char *elist, struct acl_accessList **acl) { /* Converts the external access list elist into the access list acl. Returns 0 on success, -1 if ANY name is not translatable, or if the number of entries exceeds al_maxExtEntries. */ register int i; @@ -336,10 +326,7 @@ acl_Internalize(elist, acl) int -acl_CheckRights(acl, groups, rights) - struct acl_accessList *acl; - prlist *groups; - int *rights; +acl_CheckRights(struct acl_accessList *acl, prlist *groups, int *rights) { /* Returns the rights given by acl to groups */ @@ -410,8 +397,7 @@ acl_CheckRights(acl, groups, rights) } int -acl_Initialize(version) - char *version; +acl_Initialize(char *version) { /* I'm sure we need to do some initialization, I'm just not quite sure what yet! */ if (strcmp(version, ACL_VERSION) != 0) { @@ -426,9 +412,7 @@ acl_Initialize(version) } int -acl_IsAMember(aid, cps) - afs_int32 aid; - prlist *cps; +acl_IsAMember(afs_int32 aid, prlist *cps) { afs_int32 i; diff --git a/src/libadmin/adminutil/NTMakefile b/src/libadmin/adminutil/NTMakefile index 9cd71b5ae..d6b085e44 100644 --- a/src/libadmin/adminutil/NTMakefile +++ b/src/libadmin/adminutil/NTMakefile @@ -143,8 +143,10 @@ DLLLIBS =\ $(DESTDIR)\lib\afs\afsreg.lib $(DLLFILE): $(DLLOBJS) $(DLLLIBS) - $(DLLCONLINK) /DEF:afsadminutil.def + $(DLLCONLINK) /DEF:afsadminutil.def shell32.lib + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp diff --git a/src/libadmin/adminutil/afs_AdminInternal.h b/src/libadmin/adminutil/afs_AdminInternal.h index ad58c2dd7..96629bdd5 100644 --- a/src/libadmin/adminutil/afs_AdminInternal.h +++ b/src/libadmin/adminutil/afs_AdminInternal.h @@ -50,6 +50,12 @@ typedef struct afs_cell_handle { int pts_valid; int vos_valid; int vos_new; + /* need to add server lists with TTL + * so we don't pound the dns servers constantly + * when generating the iterators + */ + void *server_list; + time_t server_ttl; /* expiration time */ int end_magic; } afs_cell_handle_t, *afs_cell_handle_p; diff --git a/src/libadmin/adminutil/afs_utilAdmin.c b/src/libadmin/adminutil/afs_utilAdmin.c index ae36a04bb..e48191a1a 100644 --- a/src/libadmin/adminutil/afs_utilAdmin.c +++ b/src/libadmin/adminutil/afs_utilAdmin.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/adminutil/afs_utilAdmin.c,v 1.7.2.3 2007/04/10 18:43:44 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/adminutil/afs_utilAdmin.c,v 1.9.4.1 2007/04/10 18:39:53 shadow Exp $"); #include #include diff --git a/src/libadmin/bos/NTMakefile b/src/libadmin/bos/NTMakefile index da8508e04..d3e9d0646 100644 --- a/src/libadmin/bos/NTMakefile +++ b/src/libadmin/bos/NTMakefile @@ -43,7 +43,9 @@ DLLLIBS =\ $(DLLFILE): $(DLLOBJS) $(DLLLIBS) $(DLLCONLINK) /DEF:bosadmin.def + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp diff --git a/src/libadmin/bos/afs_bosAdmin.c b/src/libadmin/bos/afs_bosAdmin.c index a4976c20b..39a98954c 100644 --- a/src/libadmin/bos/afs_bosAdmin.c +++ b/src/libadmin/bos/afs_bosAdmin.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/bos/afs_bosAdmin.c,v 1.11.2.1 2007/10/30 15:23:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/bos/afs_bosAdmin.c,v 1.11.14.1 2007/10/30 15:16:40 shadow Exp $"); #include #include diff --git a/src/libadmin/cfg/NTMakefile b/src/libadmin/cfg/NTMakefile index 992daf2cc..0867464a0 100644 --- a/src/libadmin/cfg/NTMakefile +++ b/src/libadmin/cfg/NTMakefile @@ -55,11 +55,14 @@ DLLLIBS =\ $(DESTDIR)\lib\afs\afsvosadmin.lib \ $(DESTDIR)\lib\afsrpc.lib \ $(DESTDIR)\lib\afsauthent.lib \ - $(DESTDIR)\lib\afs\afsreg.lib + $(DESTDIR)\lib\afs\afsreg.lib \ + $(DESTDIR)\lib\libafsconf.lib $(DLLFILE): $(DLLOBJS) $(DLLLIBS) - $(DLLCONLINK) /DEF:afscfgadmin.def + $(DLLCONLINK) /DEF:afscfgadmin.def shell32.lib + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp diff --git a/src/libadmin/cfg/cfgclient.c b/src/libadmin/cfg/cfgclient.c index 5bc382400..d525a50ee 100644 --- a/src/libadmin/cfg/cfgclient.c +++ b/src/libadmin/cfg/cfgclient.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/cfg/cfgclient.c,v 1.6.2.2 2007/11/26 21:21:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/cfg/cfgclient.c,v 1.6.14.2 2007/11/26 21:08:42 shadow Exp $"); #include diff --git a/src/libadmin/cfg/cfginternal.c b/src/libadmin/cfg/cfginternal.c index 67176c44e..4e0eeb7f6 100644 --- a/src/libadmin/cfg/cfginternal.c +++ b/src/libadmin/cfg/cfginternal.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/cfg/cfginternal.c,v 1.6.2.1 2007/11/26 21:21:53 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/cfg/cfginternal.c,v 1.6.14.1 2007/11/26 21:08:42 shadow Exp $"); #include diff --git a/src/libadmin/cfg/test/NTMakefile b/src/libadmin/cfg/test/NTMakefile index 69d4d0cd0..7772f2e82 100644 --- a/src/libadmin/cfg/test/NTMakefile +++ b/src/libadmin/cfg/test/NTMakefile @@ -22,6 +22,8 @@ CFGTEST_EXELIBS =\ $(OUT)\cfgtest.exe: $(OUT)\cfgtest.obj $(CFGTEST_EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) mkdir: diff --git a/src/libadmin/cfg/test/cfgtest.c b/src/libadmin/cfg/test/cfgtest.c index f1b3b0e63..3226fb273 100644 --- a/src/libadmin/cfg/test/cfgtest.c +++ b/src/libadmin/cfg/test/cfgtest.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/cfg/test/cfgtest.c,v 1.5.2.1 2007/10/31 04:13:41 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/cfg/test/cfgtest.c,v 1.5.14.1 2007/10/31 04:09:31 shadow Exp $"); #include diff --git a/src/libadmin/client/NTMakefile b/src/libadmin/client/NTMakefile index 1cc338216..2a7f0fdc0 100644 --- a/src/libadmin/client/NTMakefile +++ b/src/libadmin/client/NTMakefile @@ -31,7 +31,9 @@ DLLLIBS =\ $(DLLFILE): $(DLLOBJS) $(DLLLIBS) $(DLLCONLINK) /DEF:clientadmin.def + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp diff --git a/src/libadmin/client/afs_clientAdmin.c b/src/libadmin/client/afs_clientAdmin.c index bebee7068..3066e8080 100644 --- a/src/libadmin/client/afs_clientAdmin.c +++ b/src/libadmin/client/afs_clientAdmin.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/client/afs_clientAdmin.c,v 1.9.2.3 2007/07/16 00:00:37 jaltman Exp $"); + ("$Header: /cvs/openafs/src/libadmin/client/afs_clientAdmin.c,v 1.11.4.3 2008/02/29 01:27:57 jaltman Exp $"); #include #include "afs_clientAdmin.h" @@ -24,6 +24,7 @@ RCSID #include #include #include +#define close(x) closesocket(x) #else #include #include @@ -59,6 +60,8 @@ RCSID static const unsigned long ADMIN_TICKET_LIFETIME = 24 * 3600; +static const unsigned long SERVER_TTL = 10 * 60; + /* * We need a way to track whether or not the client library has been * initialized. We count on the fact that the other library initialization @@ -946,6 +949,8 @@ afsclient_CellOpen(const char *cellName, const void *tokenHandle, c_handle->begin_magic = BEGIN_MAGIC; c_handle->is_valid = 1; c_handle->is_null = 0; + c_handle->server_list = NULL; + c_handle->server_ttl = 0; c_handle->end_magic = END_MAGIC; *cellHandleP = (void *)c_handle; } @@ -1020,9 +1025,11 @@ afsclient_NullCellOpen(void **cellHandleP, afs_status_p st) c_handle->kas_valid = 0; c_handle->pts_valid = 0; c_handle->vos_valid = 0; - c_handle->kas = 0; - c_handle->pts = 0; - c_handle->vos = 0; + c_handle->kas = NULL; + c_handle->pts = NULL; + c_handle->vos = NULL; + c_handle->server_list = NULL; + c_handle->server_ttl = 0; *cellHandleP = (void *)c_handle; rc = 1; @@ -1071,6 +1078,8 @@ afsclient_CellClose(const void *cellHandle, afs_status_p st) goto fail_afsclient_CellClose; } + if (c_handle->server_list) + free(c_handle->server_list); if (c_handle->kas_valid) ubik_ClientDestroy(c_handle->kas); if (c_handle->pts_valid) @@ -1825,6 +1834,7 @@ afsclient_AFSServerGetBegin(const void *cellHandle, void **iterationIdP, afs_admin_iterator_p iter = (afs_admin_iterator_p) malloc(sizeof(afs_admin_iterator_t)); server_get_p serv = (server_get_p) calloc(1, sizeof(server_get_t)); + server_get_p serv_cache = NULL; const char *cellName; void *database_iter; util_databaseServerEntry_t database_entry; @@ -1847,57 +1857,77 @@ afsclient_AFSServerGetBegin(const void *cellHandle, void **iterationIdP, goto fail_afsclient_AFSServerGetBegin; } - /* - * Retrieve the list of database servers for this cell. - */ - - if (!afsclient_CellNameGet(cellHandle, &cellName, &tst)) { - goto fail_afsclient_AFSServerGetBegin; + restart: + LOCK_GLOBAL_MUTEX; + if (c_handle->server_list != NULL && c_handle->server_ttl < time(NULL)) { + serv_cache = c_handle->server_list; + c_handle->server_list = NULL; } + UNLOCK_GLOBAL_MUTEX; - if (!util_DatabaseServerGetBegin(cellName, &database_iter, &tst)) { - goto fail_afsclient_AFSServerGetBegin; - } + if (c_handle->server_list == NULL) { + if (serv_cache == NULL) { + serv_cache = (server_get_p) calloc(1, sizeof(server_get_t)); - while (util_DatabaseServerGetNext(database_iter, &database_entry, &tst)) { - serv->server[serv->total].serverAddress[0] = - database_entry.serverAddress; - serv->server[serv->total].serverType = DATABASE_SERVER; - serv->total++; - } + if (serv_cache == NULL) { + tst = ADMNOMEM; + goto fail_afsclient_AFSServerGetBegin; + } + } - if (tst != ADMITERATORDONE) { - util_DatabaseServerGetDone(database_iter, 0); - goto fail_afsclient_AFSServerGetBegin; - } + /* + * Retrieve the list of database servers for this cell. + */ - if (!util_DatabaseServerGetDone(database_iter, &tst)) { - goto fail_afsclient_AFSServerGetBegin; - } + if (!afsclient_CellNameGet(c_handle, &cellName, &tst)) { + goto fail_afsclient_AFSServerGetBegin; + } - /* - * Retrieve the list of file servers for this cell. - */ + if (!util_DatabaseServerGetBegin(cellName, &database_iter, &tst)) { + goto fail_afsclient_AFSServerGetBegin; + } - if (!vos_FileServerGetBegin(cellHandle, 0, &fileserver_iter, &tst)) { - goto fail_afsclient_AFSServerGetBegin; - } + while (util_DatabaseServerGetNext(database_iter, &database_entry, &tst)) { + serv->server[serv->total].serverAddress[0] = + database_entry.serverAddress; + serv->server[serv->total].serverType = DATABASE_SERVER; + serv->total++; + } + + if (tst != ADMITERATORDONE) { + util_DatabaseServerGetDone(database_iter, 0); + goto fail_afsclient_AFSServerGetBegin; + } + + if (!util_DatabaseServerGetDone(database_iter, &tst)) { + goto fail_afsclient_AFSServerGetBegin; + } - while (vos_FileServerGetNext(fileserver_iter, &fileserver_entry, &tst)) { /* - * See if any of the addresses returned in this fileserver_entry - * structure already exist in the list of servers we're building. - * If not, create a new record for this server. + * Retrieve the list of file servers for this cell. */ - is_dup = 0; - for (iserv = 0; iserv < serv->total; iserv++) { - for (ientryaddr = 0; ientryaddr < fileserver_entry.count; - ientryaddr++) { - for (iservaddr = 0; iservaddr < AFS_MAX_SERVER_ADDRESS; - iservaddr++) { - if (serv->server[iserv].serverAddress[iservaddr] == - fileserver_entry.serverAddress[ientryaddr]) { - is_dup = 1; + + if (!vos_FileServerGetBegin(c_handle, 0, &fileserver_iter, &tst)) { + goto fail_afsclient_AFSServerGetBegin; + } + + while (vos_FileServerGetNext(fileserver_iter, &fileserver_entry, &tst)) { + /* + * See if any of the addresses returned in this fileserver_entry + * structure already exist in the list of servers we're building. + * If not, create a new record for this server. + */ + is_dup = 0; + for (iserv = 0; iserv < serv->total; iserv++) { + for (ientryaddr = 0; ientryaddr < fileserver_entry.count; ientryaddr++) { + for (iservaddr = 0; iservaddr < AFS_MAX_SERVER_ADDRESS; iservaddr++) { + if (serv->server[iserv].serverAddress[iservaddr] == + fileserver_entry.serverAddress[ientryaddr]) { + is_dup = 1; + break; + } + } + if (is_dup) { break; } } @@ -1905,72 +1935,80 @@ afsclient_AFSServerGetBegin(const void *cellHandle, void **iterationIdP, break; } } + if (is_dup) { - break; + serv->server[iserv].serverType |= FILE_SERVER; + } else { + iserv = serv->total++; + serv->server[iserv].serverType = FILE_SERVER; } - } - - if (is_dup) { - serv->server[iserv].serverType |= FILE_SERVER; - } else { - iserv = serv->total++; - serv->server[iserv].serverType = FILE_SERVER; - } - /* - * Add the addresses from the vldb list to the serv->server[iserv] - * record. Remember that VLDB's list-of-addrs is not guaranteed - * to be unique in a particular entry, or to return only one entry - * per machine--so when we add addresses, always check for - * duplicate entries. - */ + /* + * Add the addresses from the vldb list to the serv->server[iserv] + * record. Remember that VLDB's list-of-addrs is not guaranteed + * to be unique in a particular entry, or to return only one entry + * per machine--so when we add addresses, always check for + * duplicate entries. + */ - for (ientryaddr = 0; ientryaddr < fileserver_entry.count; - ientryaddr++) { - for (iservaddr = 0; iservaddr < AFS_MAX_SERVER_ADDRESS; - iservaddr++) { - if (serv->server[iserv].serverAddress[iservaddr] == - fileserver_entry.serverAddress[ientryaddr]) { - break; - } - } - if (iservaddr == AFS_MAX_SERVER_ADDRESS) { - for (iservaddr = 0; iservaddr < AFS_MAX_SERVER_ADDRESS; - iservaddr++) { - if (!serv->server[iserv].serverAddress[iservaddr]) { - serv->server[iserv].serverAddress[iservaddr] = - fileserver_entry.serverAddress[ientryaddr]; + for (ientryaddr = 0; ientryaddr < fileserver_entry.count; ientryaddr++) { + for (iservaddr = 0; iservaddr < AFS_MAX_SERVER_ADDRESS; iservaddr++) { + if (serv->server[iserv].serverAddress[iservaddr] == + fileserver_entry.serverAddress[ientryaddr]) { break; } } + if (iservaddr == AFS_MAX_SERVER_ADDRESS) { + for (iservaddr = 0; iservaddr < AFS_MAX_SERVER_ADDRESS; + iservaddr++) { + if (!serv->server[iserv].serverAddress[iservaddr]) { + serv->server[iserv].serverAddress[iservaddr] = + fileserver_entry.serverAddress[ientryaddr]; + break; + } + } + } } } - } - if (tst != ADMITERATORDONE) { - vos_FileServerGetDone(fileserver_iter, 0); - goto fail_afsclient_AFSServerGetBegin; - } + if (tst != ADMITERATORDONE) { + vos_FileServerGetDone(fileserver_iter, 0); + goto fail_afsclient_AFSServerGetBegin; + } - if (!vos_FileServerGetDone(fileserver_iter, &tst)) { - goto fail_afsclient_AFSServerGetBegin; - } + if (!vos_FileServerGetDone(fileserver_iter, &tst)) { + goto fail_afsclient_AFSServerGetBegin; + } - /* - * Iterate over the list and fill in the hostname of each of the servers - */ + /* + * Iterate over the list and fill in the hostname of each of the servers + */ - LOCK_GLOBAL_MUTEX; - for (iserv = 0; iserv < serv->total; iserv++) { - int addr = htonl(serv->server[iserv].serverAddress[0]); - host = gethostbyaddr((const char *)&addr, sizeof(int), AF_INET); - if (host != NULL) { - strncpy(serv->server[iserv].serverName, host->h_name, - AFS_MAX_SERVER_NAME_LEN); - serv->server[iserv].serverName[AFS_MAX_SERVER_NAME_LEN - 1] = '\0'; + for (iserv = 0; iserv < serv->total; iserv++) { + int addr = htonl(serv->server[iserv].serverAddress[0]); + LOCK_GLOBAL_MUTEX; + host = gethostbyaddr((const char *)&addr, sizeof(int), AF_INET); + if (host != NULL) { + strncpy(serv->server[iserv].serverName, host->h_name, + AFS_MAX_SERVER_NAME_LEN); + serv->server[iserv].serverName[AFS_MAX_SERVER_NAME_LEN - 1] = '\0'; + } + UNLOCK_GLOBAL_MUTEX; } + + memcpy(serv_cache, serv, sizeof(server_get_t)); + } else { + int race = 0; + LOCK_GLOBAL_MUTEX; + if (c_handle->server_list == NULL) + race = 1; + else + memcpy(serv, c_handle->server_list, sizeof(server_get_t)); + UNLOCK_GLOBAL_MUTEX; + if (race) + goto restart; } - UNLOCK_GLOBAL_MUTEX; + if (IteratorInit (iter, (void *)serv, GetServerRPC, GetServerFromCache, NULL, NULL, &tst)) { @@ -1981,17 +2019,28 @@ afsclient_AFSServerGetBegin(const void *cellHandle, void **iterationIdP, fail_afsclient_AFSServerGetBegin: if (rc == 0) { - if (iter != NULL) { + if (iter != NULL) free(iter); - } - if (serv != NULL) { + if (serv != NULL) free(serv); + if (serv_cache != NULL) + free(serv_cache); + } else { + if (serv_cache) { + LOCK_GLOBAL_MUTEX; + /* in case there was a race and we constructed the list twice */ + if (c_handle->server_list) + free(c_handle->server_list); + + c_handle->server_list = serv_cache; + c_handle->server_ttl = time(NULL) + SERVER_TTL; + UNLOCK_GLOBAL_MUTEX; } } - if (st != NULL) { + if (st != NULL) *st = tst; - } + return rc; } diff --git a/src/libadmin/kas/NTMakefile b/src/libadmin/kas/NTMakefile index b94081ea4..e138b6d05 100644 --- a/src/libadmin/kas/NTMakefile +++ b/src/libadmin/kas/NTMakefile @@ -40,7 +40,9 @@ DLLLIBS =\ $(DLLFILE): $(DLLOBJS) $(DLLLIBS) $(DLLCONLINK) /DEF:kasadmin.def + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp diff --git a/src/libadmin/kas/afs_kasAdmin.c b/src/libadmin/kas/afs_kasAdmin.c index f8913e2a6..debf0564c 100644 --- a/src/libadmin/kas/afs_kasAdmin.c +++ b/src/libadmin/kas/afs_kasAdmin.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/kas/afs_kasAdmin.c,v 1.9.2.5 2007/10/30 15:23:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/kas/afs_kasAdmin.c,v 1.13.4.2 2007/10/30 15:16:40 shadow Exp $"); #include #include diff --git a/src/libadmin/pts/NTMakefile b/src/libadmin/pts/NTMakefile index d581fdb1d..145986025 100644 --- a/src/libadmin/pts/NTMakefile +++ b/src/libadmin/pts/NTMakefile @@ -43,7 +43,9 @@ DLLLIBS =\ $(DLLFILE): $(DLLOBJS) $(DLLLIBS) $(DLLCONLINK) /DEF:ptsadmin.def + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp diff --git a/src/libadmin/pts/afs_ptsAdmin.c b/src/libadmin/pts/afs_ptsAdmin.c index 80c3c56fa..d148cb9f6 100644 --- a/src/libadmin/pts/afs_ptsAdmin.c +++ b/src/libadmin/pts/afs_ptsAdmin.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/pts/afs_ptsAdmin.c,v 1.11.2.2 2007/10/30 15:23:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/pts/afs_ptsAdmin.c,v 1.11.14.2 2007/10/30 15:16:40 shadow Exp $"); #include #include diff --git a/src/libadmin/samples/rxdebug_conns.c b/src/libadmin/samples/rxdebug_conns.c index 30b2565ab..82fcf2840 100644 --- a/src/libadmin/samples/rxdebug_conns.c +++ b/src/libadmin/samples/rxdebug_conns.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/samples/rxdebug_conns.c,v 1.6.2.1 2007/11/26 21:21:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/samples/rxdebug_conns.c,v 1.6.14.1 2007/11/26 21:08:42 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/libadmin/samples/rxdebug_rx_stats.c b/src/libadmin/samples/rxdebug_rx_stats.c index a3c6f5952..d25f6ddfd 100644 --- a/src/libadmin/samples/rxdebug_rx_stats.c +++ b/src/libadmin/samples/rxdebug_rx_stats.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/samples/rxdebug_rx_stats.c,v 1.7.2.1 2007/10/30 15:23:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/samples/rxdebug_rx_stats.c,v 1.7.14.1 2007/10/30 15:16:41 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/libadmin/samples/rxstat_get_peer.c b/src/libadmin/samples/rxstat_get_peer.c index a78b6dce2..b6d9cb70e 100644 --- a/src/libadmin/samples/rxstat_get_peer.c +++ b/src/libadmin/samples/rxstat_get_peer.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/samples/rxstat_get_peer.c,v 1.7.2.1 2007/10/30 15:23:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/samples/rxstat_get_peer.c,v 1.7.14.1 2007/10/30 15:16:41 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/libadmin/samples/rxstat_get_process.c b/src/libadmin/samples/rxstat_get_process.c index df67ac4e0..ccd3ba994 100644 --- a/src/libadmin/samples/rxstat_get_process.c +++ b/src/libadmin/samples/rxstat_get_process.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/samples/rxstat_get_process.c,v 1.7.2.1 2007/10/30 15:23:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/samples/rxstat_get_process.c,v 1.7.14.1 2007/10/30 15:16:41 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/libadmin/test/NTMakefile b/src/libadmin/test/NTMakefile index 762158fa0..9f05d6f94 100644 --- a/src/libadmin/test/NTMakefile +++ b/src/libadmin/test/NTMakefile @@ -35,6 +35,8 @@ AFSCP_EXEOBJS =\ $(OUT)\afscp.exe: $(OUT)\afscp.obj $(AFSCP_EXEOBJS) $(AFSCP_EXELIBS) $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) mkdir: diff --git a/src/libadmin/test/afscp.c b/src/libadmin/test/afscp.c index 648a9d454..c1809fd7e 100644 --- a/src/libadmin/test/afscp.c +++ b/src/libadmin/test/afscp.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/test/afscp.c,v 1.7.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/afscp.c,v 1.7.14.1 2007/10/31 04:09:31 shadow Exp $"); #include diff --git a/src/libadmin/test/bos.c b/src/libadmin/test/bos.c index fdc331b58..85d01be5e 100644 --- a/src/libadmin/test/bos.c +++ b/src/libadmin/test/bos.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/test/bos.c,v 1.10.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/bos.c,v 1.10.14.1 2007/10/31 04:09:31 shadow Exp $"); #include "bos.h" diff --git a/src/libadmin/test/client.c b/src/libadmin/test/client.c index 2cce9685e..e4d1921aa 100644 --- a/src/libadmin/test/client.c +++ b/src/libadmin/test/client.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/test/client.c,v 1.8.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/client.c,v 1.8.14.1 2007/10/31 04:09:31 shadow Exp $"); #include "client.h" #include diff --git a/src/libadmin/test/kas.c b/src/libadmin/test/kas.c index e60a0a77d..31a69383a 100644 --- a/src/libadmin/test/kas.c +++ b/src/libadmin/test/kas.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/test/kas.c,v 1.8.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/kas.c,v 1.8.14.1 2007/10/31 04:09:31 shadow Exp $"); #include "kas.h" #include diff --git a/src/libadmin/test/pts.c b/src/libadmin/test/pts.c index ae5452b4a..a42991842 100644 --- a/src/libadmin/test/pts.c +++ b/src/libadmin/test/pts.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/test/pts.c,v 1.5.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/pts.c,v 1.5.14.1 2007/10/31 04:09:31 shadow Exp $"); #include "pts.h" diff --git a/src/libadmin/test/util.c b/src/libadmin/test/util.c index b3304b7d1..2c32f939f 100644 --- a/src/libadmin/test/util.c +++ b/src/libadmin/test/util.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/test/util.c,v 1.5.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/util.c,v 1.5.14.1 2007/10/31 04:09:31 shadow Exp $"); #include "util.h" diff --git a/src/libadmin/test/vos.c b/src/libadmin/test/vos.c index d96e402e5..f430bba94 100644 --- a/src/libadmin/test/vos.c +++ b/src/libadmin/test/vos.c @@ -13,9 +13,15 @@ #include #include +#ifndef AFS_NT40_ENV +#include +#include +#include +#include +#endif RCSID - ("$Header: /cvs/openafs/src/libadmin/test/vos.c,v 1.6.2.1 2007/10/31 04:13:42 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/test/vos.c,v 1.9.4.2 2008/04/21 19:40:01 shadow Exp $"); #include "vos.h" @@ -1613,6 +1619,190 @@ DoVosVolumeQuotaChange(struct cmd_syndesc *as, void *arock) return 0; } +/* + * Parse a server name/address and return the address in HOST BYTE order + */ +static afs_uint32 +GetServer(char *aname) +{ + register struct hostent *th; + afs_uint32 addr; + int b1, b2, b3, b4; + register afs_int32 code; + char hostname[MAXHOSTCHARS]; + + code = sscanf(aname, "%d.%d.%d.%d", &b1, &b2, &b3, &b4); + if (code == 4) { + addr = (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; + addr = ntohl(addr); /* convert to host order */ + } else { + th = gethostbyname(aname); + if (!th) + return 0; + memcpy(&addr, th->h_addr, sizeof(addr)); + } + + if (addr == htonl(0x7f000001)) { /* local host */ + code = gethostname(hostname, MAXHOSTCHARS); + if (code) + return 0; + th = gethostbyname(hostname); /* returns host byte order */ + if (!th) + return 0; + memcpy(&addr, th->h_addr, sizeof(addr)); + } + + return (addr); +} + +static void +Print_vos_volintInfo(afs_uint32 server, afs_uint32 partition, volintInfo* pinfo, const char *prefix) +{ + static afs_uint32 server_cache; + static int cache_valid = 0; + static char hostname[256], address[32]; + + if (!cache_valid || server != server_cache) { + struct in_addr s; + + s.s_addr = server; + strcpy(hostname, hostutil_GetNameByINet(server)); + strcpy(address, inet_ntoa(s)); + server_cache = server; + cache_valid = 1; + } + + + printf("%sname\t\t%s\n",prefix, pinfo->name); + printf("%sid\t\t%lu\n",prefix, pinfo->volid); + printf("%sserv\t\t%s\t%s\n",prefix, address,hostname); + printf("%spart\t\t%u\n", prefix,partition); + + switch (pinfo->status) { + case 2: /* VOK */ + printf("%sstatus\t\tOK\n",prefix); + break; + case 101: /* VBUSY */ + printf("%sstatus\t\tBUSY\n",prefix); + return; + default: + printf("%sstatus\t\tUNATTACHABLE\n",prefix); + return; + } + printf("%sbackupID\t%lu\n",prefix, pinfo->backupID); + printf("%sparentID\t%lu\n",prefix, pinfo->parentID); + printf("%scloneID\t%lu\n",prefix, pinfo->cloneID); + printf("%sinUse\t\t%s\n",prefix, pinfo->inUse ? "Y" : "N"); + printf("%sneedsSalvaged\t%s\n",prefix, pinfo->needsSalvaged ? "Y" : "N"); + /* 0xD3 is from afs/volume.h since I had trouble including the file */ + printf("%sdestroyMe\t%s\n",prefix, pinfo->destroyMe == 0xD3 ? "Y" : "N"); + switch (pinfo->type) { + case 0: + printf("%stype\t\tRW\n",prefix); + break; + case 1: + printf("%stype\t\tRO\n",prefix); + break; + case 2: + printf("%stype\t\tBK\n",prefix); + break; + default: + printf("%stype\t\t?\n",prefix); + break; + } + printf("%screationDate\t%-9lu\n", prefix,pinfo->creationDate); + printf("%saccessDate\t%-9lu\n", prefix,pinfo->accessDate); + printf("%supdateDate\t%-9lu\n", prefix,pinfo->updateDate); + printf("%sbackupDate\t%-9lu\n", prefix,pinfo->backupDate); + printf("%scopyDate\t%-9lu\n", prefix,pinfo->copyDate); + + printf("%sflags\t\t%#lx\t(Optional)\n",prefix, pinfo->flags); + printf("%sdiskused\t%u\n",prefix, pinfo->size); + printf("%smaxquota\t%u\n",prefix, pinfo->maxquota); + printf("%sminquota\t%lu\t(Optional)\n",prefix, pinfo->spare0); + printf("%sfilecount\t%u\n",prefix, pinfo->filecount); + printf("%sdayUse\t\t%u\n",prefix, pinfo->dayUse); + printf("%sweekUse\t%lu\t(Optional)\n",prefix, pinfo->spare1); + printf("%svolUpdateCounter\t\t%lu\t(Optional)\n",prefix, pinfo->spare2); + printf("%sspare3\t\t%lu\t(Optional)\n",prefix, pinfo->spare3); +} + +int +DoVosVolumeGet2(struct cmd_syndesc *as, void *arock) +{ + typedef enum { SERVER, PARTITION, VOLUME } DoVosVolumeGet_parm_t; + afs_status_t st = 0; + void *vos_server = NULL; + afs_uint32 partition_id; + afs_uint32 volume_id; + + volintInfo info; + memset(&info, 0, sizeof(struct volintInfo)); + + if (as->parms[SERVER].items) { + if (!vos_ServerOpen + (cellHandle, as->parms[SERVER].items->data, &vos_server, &st)) { + ERR_ST_EXT("vos_ServerOpen", st); + } + } + + if (as->parms[PARTITION].items) { + partition_id = + GetPartitionIdFromString(as->parms[PARTITION].items->data); + } + + if (as->parms[VOLUME].items) { + const char *volume = as->parms[VOLUME].items->data; + volume_id = GetVolumeIdFromString(volume); + } + + + if (!vos_VolumeGet2 + (cellHandle, vos_server, 0, partition_id, volume_id, &info, &st)) { + ERR_ST_EXT("vos_VolumeGet2", st); + } + + + Print_vos_volintInfo(GetServer(as->parms[SERVER].items->data),partition_id,&info," "); + + return 0; +} + + +int +DoVos_ClearVolUpdateCounter(struct cmd_syndesc *as, void *arock) +{ + typedef enum { SERVER, PARTITION, VOLUME } DoVosVolumeGet_parm_t; + afs_status_t st = 0; + void *vos_server = NULL; + unsigned int partition_id; + unsigned int volume_id; + + if (as->parms[SERVER].items) { + if (!vos_ServerOpen + (cellHandle, as->parms[SERVER].items->data, &vos_server, &st)) { + ERR_ST_EXT("vos_ServerOpen", st); + } + } + + if (as->parms[PARTITION].items) { + partition_id = + GetPartitionIdFromString(as->parms[PARTITION].items->data); + } + + if (as->parms[VOLUME].items) { + const char *volume = as->parms[VOLUME].items->data; + volume_id = GetVolumeIdFromString(volume); + } + + if (!vos_ClearVolUpdateCounter + (cellHandle, vos_server,partition_id, volume_id, &st)) { + ERR_ST_EXT("vos_ClearVolUpdateCounter", st); + } + + return 0; +} + void SetupVosAdminCmd(void) { @@ -1898,4 +2088,25 @@ SetupVosAdminCmd(void) "new quota in 1kb units"); SetupCommonCmdArgs(ts); + ts = cmd_CreateSyntax("VosVolumeGet2", DoVosVolumeGet2, NULL, + "get a volume entry"); + cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED, + "server that houses volume"); + cmd_AddParm(ts, "-partition", CMD_SINGLE, CMD_REQUIRED, + "partition that houses volume"); + cmd_AddParm(ts, "-volume", CMD_SINGLE, CMD_REQUIRED, + "volume to retrieve"); + SetupCommonCmdArgs(ts); + + ts = cmd_CreateSyntax("ClearVolUpdateCounter", DoVos_ClearVolUpdateCounter, NULL, + "clear volUpdateCounter"); + cmd_AddParm(ts, "-server", CMD_SINGLE, CMD_REQUIRED, + "server that houses volume"); + cmd_AddParm(ts, "-partition", CMD_SINGLE, CMD_REQUIRED, + "partition that houses volume"); + cmd_AddParm(ts, "-volume", CMD_SINGLE, CMD_REQUIRED, + "volume"); + SetupCommonCmdArgs(ts); + } + diff --git a/src/libadmin/vos/NTMakefile b/src/libadmin/vos/NTMakefile index 53737d013..28bf5967b 100644 --- a/src/libadmin/vos/NTMakefile +++ b/src/libadmin/vos/NTMakefile @@ -64,13 +64,12 @@ DLLLIBS =\ $(DLLFILE): $(DLLOBJS) $(DLLLIBS) $(DLLCONLINK) /DEF:vosadmin.def + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) $(COPY) $*.lib $(ILIBDIR) $(DEL) $*.lib $*.exp - - - install: $(DLLFILE) $(LIBINCLUDES) $(RXOBJS): $(RX)\$$(@B).c diff --git a/src/libadmin/vos/afs_vosAdmin.c b/src/libadmin/vos/afs_vosAdmin.c index 08fd8a1dd..f206dcba4 100644 --- a/src/libadmin/vos/afs_vosAdmin.c +++ b/src/libadmin/vos/afs_vosAdmin.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/vos/afs_vosAdmin.c,v 1.9.2.3 2007/10/30 15:23:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/vos/afs_vosAdmin.c,v 1.11.4.2 2007/10/30 15:16:41 shadow Exp $"); #include #include @@ -4402,8 +4402,10 @@ vos_VolumeQuotaChange(const void *cellHandle, const void *serverHandle, memset((void *)&tstatus, 0, sizeof(tstatus)); tstatus.dayUse = -1; + tstatus.spare2 = -1; tstatus.maxquota = volumeQuota; + tst = AFSVolTransCreate(f_server->serv, volumeId, partition, ITBusy, &ttid); if (tst) { @@ -4441,3 +4443,187 @@ vos_VolumeQuotaChange(const void *cellHandle, const void *serverHandle, } return rc; } +/* + * vos_VolumeGet2 - get information about a particular volume. + * + * PARAMETERS + * + * IN cellHandle - a previously opened cellHandle that corresponds + * to the cell where the volume exists. + * + * IN serverHandle - a previously opened serverHandle that corresponds + * to the server where the volume exists. + * + * IN callBack - a call back function pointer that may be called to report + * status information. Can be null. + * + * IN partition - the partition where the volume exists. + * + * IN volumeId - the volume id of the volume to be retrieved. + * + * OUT pinfo - upon successful completion, contains the information about the + * specified volume. + * + * LOCKS + * + * No locks are obtained or released by this function + * + * RETURN CODES + * + * Returns != 0 upon successful completion. + */ + +int ADMINAPI +vos_VolumeGet2(const void *cellHandle, const void *serverHandle, + vos_MessageCallBack_t callBack, unsigned int partition, + unsigned int volumeId, volintInfo* pinfo, + afs_status_p st) +{ + int rc = 0; + afs_status_t tst = 0; + file_server_p f_server = (file_server_p) serverHandle; + volintInfo *pinfo_=0; + + /* + * Validate arguments + */ + + if (!IsValidServerHandle(f_server, &tst)) { + goto fail_vos_VolumeGet2; + } + + if (partition > VOLMAXPARTS) { + tst = ADMVOSPARTITIONIDTOOLARGE; + goto fail_vos_VolumeGet2; + } + + if (pinfo == NULL) { + tst = ADMVOSVOLUMEPNULL; + goto fail_vos_VolumeGet2; + } + + /* + * Retrieve the information for the volume + */ + + if (!UV_ListOneVolume(f_server->serv, partition, volumeId, &pinfo_,&tst)) { + goto fail_vos_VolumeGet2; + } + + + rc = 1; + + fail_vos_VolumeGet2: + + if (pinfo_ != NULL) { + memcpy(pinfo,pinfo_,sizeof(volintInfo)); + free(pinfo_); + } + + if (st != NULL) { + *st = tst; + } + return rc; +} + +/* + * vos_ClearVolUpdateCounter - reset volUpdateCounter of a volume to zero + * + * PARAMETERS + * + * IN cellHandle - a previously opened cellHandle that corresponds + * to the cell where the volume exists. + * + * IN serverHandle - a previously opened serverHandle that corresponds + * to the server where the volume exists. + * + * IN partition - the partition where the volume exists. + * + * IN volumeId - the volume id of the volume to be retrieved. + * + * LOCKS + * + * No locks are obtained or released by this function + * + * RETURN CODES + * + * Returns != 0 upon successful completion. + */ + +int ADMINAPI +vos_ClearVolUpdateCounter(const void *cellHandle, + const void *serverHandle, + unsigned int partition, + unsigned int volumeId, + afs_status_p st) +{ + int rc = 0; + afs_status_t tst = 0; + afs_cell_handle_p c_handle = (afs_cell_handle_p) cellHandle; + file_server_p f_server = (file_server_p) serverHandle; + int ttid = 0; + int rcode = 0; + struct volintInfo tstatus; + int active_trans = 0; + + /* + * Verify that the cellHandle is capable of making vos rpc's + */ + + if (!IsValidCellHandle(c_handle, &tst)) { + goto fail_vos_ClearVolUpdateCounter; + } + + if (!IsValidServerHandle(f_server, &tst)) { + goto fail_vos_ClearVolUpdateCounter; + } + + memset((void *)&tstatus, 0, sizeof(tstatus)); + tstatus.maxquota = -1; + tstatus.dayUse = -1; + tstatus.creationDate = -1; + tstatus.updateDate = -1; + tstatus.flags = -1; + tstatus.spare0 = -1; + tstatus.spare1 = -1; + tstatus.spare2 = 0; + tstatus.spare3 = -1; + + tst = + AFSVolTransCreate(f_server->serv, volumeId, partition, ITBusy, &ttid); + if (tst) { + goto fail_vos_ClearVolUpdateCounter; + } + active_trans = 1; + + tst = AFSVolSetInfo(f_server->serv, ttid, &tstatus); + if (tst) { + goto fail_vos_ClearVolUpdateCounter; + } + rc = 1; + + fail_vos_ClearVolUpdateCounter: + + if (active_trans) { + afs_status_t tst2 = 0; + tst2 = AFSVolEndTrans(f_server->serv, ttid, &rcode); + if (tst2) { + if (tst == 0) { + tst = tst2; + rc = 0; + } + } + if (rcode) { + if (tst == 0) { + tst = rcode; + rc = 0; + } + } + } + + if (st != NULL) { + *st = tst; + } + return rc; +} + diff --git a/src/libadmin/vos/afs_vosAdmin.h b/src/libadmin/vos/afs_vosAdmin.h index fe0a5c200..be051ef98 100644 --- a/src/libadmin/vos/afs_vosAdmin.h +++ b/src/libadmin/vos/afs_vosAdmin.h @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef AFS_NT40_ENV #ifndef _MFC_VER #include @@ -466,4 +467,17 @@ extern int ADMINAPI vos_VolumeQuotaChange(const void *cellHandle, unsigned int volumeQuota, afs_status_p st); +extern int ADMINAPI vos_VolumeGet2(const void *cellHandle, + const void *serverHandle, + vos_MessageCallBack_t callBack, + unsigned int partition, + unsigned int volumeId, + volintInfo* pinfo, afs_status_p st); + +extern int ADMINAPI vos_ClearVolUpdateCounter(const void *cellHandle, + const void *serverHandle, + unsigned int partition, + unsigned int volumeId, + afs_status_p st); + #endif /* OPENAFS_VOS_ADMIN_H */ diff --git a/src/libadmin/vos/lockprocs.c b/src/libadmin/vos/lockprocs.c index e404d190b..6540f5544 100644 --- a/src/libadmin/vos/lockprocs.c +++ b/src/libadmin/vos/lockprocs.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/vos/lockprocs.c,v 1.9.2.1 2007/10/30 15:23:58 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/vos/lockprocs.c,v 1.9.14.1 2007/10/30 15:16:41 shadow Exp $"); #include "lockprocs.h" #include diff --git a/src/libadmin/vos/vosadmin.def b/src/libadmin/vos/vosadmin.def index b9ff2d50a..3e107b8b4 100644 --- a/src/libadmin/vos/vosadmin.def +++ b/src/libadmin/vos/vosadmin.def @@ -45,7 +45,8 @@ EXPORTS vos_PartitionIdToName @43 vos_VolumeQuotaChange @44 vos_VLDBUnlock @45 - + vos_VolumeGet2 @46 + vos_ClearVolUpdateCounter @47 diff --git a/src/libadmin/vos/vosutils.c b/src/libadmin/vos/vosutils.c index de8f541c5..efd761233 100644 --- a/src/libadmin/vos/vosutils.c +++ b/src/libadmin/vos/vosutils.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/vos/vosutils.c,v 1.10.2.4 2007/10/30 15:23:58 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/vos/vosutils.c,v 1.12.4.3 2007/10/30 15:16:41 shadow Exp $"); #include "vosutils.h" #include "vsprocs.h" @@ -614,7 +614,7 @@ badaddr_once(void) #ifdef AFS_NT40_ENV -#define cszREG_IGNORE_KEY "Software\\TransarcCorporation\\AFS Control Center" +#define cszREG_IGNORE_KEY "Software\\OpenAFS\\AFS Control Center" #define cszREG_IGNORE_VALUE "IgnoreBadAddrs" /* diff --git a/src/libadmin/vos/vsprocs.c b/src/libadmin/vos/vsprocs.c index 2da3b678b..547e94f5c 100644 --- a/src/libadmin/vos/vsprocs.c +++ b/src/libadmin/vos/vsprocs.c @@ -22,7 +22,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/libadmin/vos/vsprocs.c,v 1.11.2.4 2007/10/30 15:23:58 shadow Exp $"); + ("$Header: /cvs/openafs/src/libadmin/vos/vsprocs.c,v 1.13.4.3 2007/10/30 15:16:41 shadow Exp $"); #include "vsprocs.h" #include "vosutils.h" @@ -2932,6 +2932,66 @@ UV_XListOneVolume(struct rx_connection *server, afs_int32 a_partID, } /*UV_XListOneVolume */ +/*------------------------------------------------------------------------ + * EXPORTED UV_ListOneVolume + * + * Description: + * List the volume information for a volume on a particular File + * Server and partition. + * + * Arguments: + * server : a handle to the server where the volume resides. + * a_partID : Partition for which we want the extended + * volume info. + * a_volID : Volume ID for which we want the info. + * a_resultPP : Ptr to the address of the area containing + * the returned volume info. + * + * Returns: + * 0 on success, + * Otherise, the return value of AFSVolXListOneVolume. + * + * Side Effects: + * As advertised. + *------------------------------------------------------------------------*/ + +int UV_ListOneVolume(struct rx_connection *server, afs_int32 a_partID, + afs_int32 a_volID, struct volintInfo **a_resultPP, + afs_status_p st) +{ + int rc = 0; + afs_status_t tst = 0; + volEntries volumeInfo; /*Area for returned info */ + + /* + * Set the area we're in which we are returning + * the info. Setting the val field to a null pointer tells the stub + * to allocate space for us. + */ + *a_resultPP = (volintInfo *) 0; + volumeInfo.volEntries_val = (volintInfo *) 0; + volumeInfo.volEntries_len = 0; + + tst = AFSVolListOneVolume(server, a_partID, a_volID, &volumeInfo); + + if (tst) { + goto fail_UV_ListOneVolume; + } else { + /* + * We got the info; pull out the pointer to where the results lie. + */ + *a_resultPP = volumeInfo.volEntries_val; + } + rc = 1; + + fail_UV_ListOneVolume: + + if (st != NULL) { + *st = tst; + } + return rc; +}/*UV_ListOneVolume*/ + /*sync vldb with all the entries on on and */ static afs_int32 ProcessEntries(afs_cell_handle_p cellHandle, struct qHead *myQueue, diff --git a/src/libadmin/vos/vsprocs.h b/src/libadmin/vos/vsprocs.h index 416bfabe6..ab30e9e06 100644 --- a/src/libadmin/vos/vsprocs.h +++ b/src/libadmin/vos/vsprocs.h @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include @@ -106,6 +105,10 @@ extern int UV_XListOneVolume(struct rx_connection *server, afs_int32 a_partID, struct volintXInfo **a_resultPP, afs_status_p st); +extern int UV_ListOneVolume(struct rx_connection *server, afs_int32 a_partID, + afs_int32 a_volID, struct volintInfo **a_resultPP, + afs_status_p st); + extern int UV_SyncVldb(afs_cell_handle_p cellHandle, struct rx_connection *server, afs_int32 apart, int flags, int force, afs_status_p st); diff --git a/src/libafs/.cvsignore b/src/libafs/.cvsignore index 657590428..2d6c65b82 100644 --- a/src/libafs/.cvsignore +++ b/src/libafs/.cvsignore @@ -17,3 +17,6 @@ afs afsint config rx +export.exp +export.h +export64.exp diff --git a/src/libafs/Makefile.common.in b/src/libafs/Makefile.common.in index c59b190cc..fb9c0a1de 100644 --- a/src/libafs/Makefile.common.in +++ b/src/libafs/Makefile.common.in @@ -12,6 +12,7 @@ INCLUDE= -I. -I/usr/include -I${TOP_OBJDIR}/src/config TOP_OBJ_FSINT = ${TOP_OBJDIR}/src/fsint TOP_OBJ_RXSTAT = ${TOP_OBJDIR}/src/rxstat +TOP_OBJ_SYS = ${TOP_OBJDIR}/src/sys TOP_OBJ_VLSERVER = ${TOP_OBJDIR}/src/vlserver TOP_SRC_AFS = ${TOP_SRCDIR}/afs @@ -84,20 +85,27 @@ AFSAOBJS = \ afs_daemons.o \ afs_dcache.o \ afs_dir.o \ + afs_disconnected.o \ afs_dynroot.o \ + afs_error.o \ + afs_icl.o \ afs_init.o \ afs_lock.o \ afs_mariner.o \ + afs_md5.o \ afs_memcache.o \ afs_osi.o \ afs_osidnlc.o \ afs_osi_alloc.o \ + afs_osi_gcpags.o \ afs_osi_pag.o \ afs_osi_uio.o \ afs_osi_vget.o \ + afs_osi_vm.o \ afs_segments.o \ afs_server.o \ afs_stat.o \ + afs_syscall.o \ afs_user.o \ afs_util.o \ afs_vcache.o \ @@ -118,6 +126,7 @@ AFSAOBJS = \ afs_vnop_symlink.o \ afs_vnop_write.o \ afs_volume.o \ + afs_warn.o \ afsaux.o \ Kvice.xdr.o \ xdr_arrayn.o \ @@ -161,6 +170,8 @@ AFSNFSOBJS = \ afs_nfsdisp.o \ afs_call_nfs.o \ afs_pioctl_nfs.o \ + Kpagcb.cs.o \ + Kpagcb.xdr.o \ $(AFS_OS_NFSOBJS) AFSNONFSOBJS = \ @@ -168,6 +179,54 @@ AFSNONFSOBJS = \ afs_pioctl.o \ $(AFS_OS_NONFSOBJS) +# init daemons call pioctl +AFSPAGOBJS = \ + afs_atomlist.o \ + afs_error.o \ + afs_icl.o \ + afs_lhash.o \ + afs_lock.o \ + afs_osi.o \ + afs_osi_alloc.o \ + afs_osi_gcpags.o \ + afs_osi_pag.o \ + afs_pag_call.o \ + afs_pag_cred.o \ + afs_pag_user.o \ + afs_stat.o \ + afs_syscall.o \ + afs_warn.o \ + afsaux.o \ + xdr_arrayn.o \ + xdr_array.o \ + xdr_int32.o \ + xdr_int64.o \ + rx.o \ + rx_rdwr.o \ + rx_clock.o \ + rx_event.o \ + rx_globals.o \ + rx_kmutex.o \ + rx_knet.o \ + rx_kcommon.o \ + rx_misc.o \ + rx_null.o \ + rx_getaddr.o \ + rx_packet.o \ + rx_multi.o \ + xdr_rx.o \ + Kpagcb.ss.o \ + Kpagcb.xdr.o \ + Krxstat.ss.o \ + Krxstat.xdr.o \ + Krmtsys.cs.o \ + Krmtsys.xdr.o \ + rxstat.o \ + AFS_component_version_number.o\ + xdr_afsuuid.o \ + xdr.o \ + afs_uuid.o $(AFS_OS_PAGOBJS) + # Compilation rules # These files are to be optimized @@ -189,24 +248,34 @@ afs_conn.o: $(TOP_SRC_AFS)/afs_conn.c $(CRULE_OPT) afs_dcache.o: $(TOP_SRC_AFS)/afs_dcache.c $(CRULE_OPT) +afs_disconnected.o: $(TOP_SRC_AFS)/afs_disconnected.c + $(CRULE_OPT) afs_dynroot.o: $(TOP_SRC_AFS)/afs_dynroot.c $(CRULE_OPT) +afs_error.o: $(TOP_SRC_AFS)/afs_error.c + $(CRULE_OPT) afs_init.o: $(TOP_SRC_AFS)/afs_init.c $(CRULE_OPT) afs_mariner.o: $(TOP_SRC_AFS)/afs_mariner.c $(CRULE_OPT) +afs_md5.o: $(TOP_SRC_AFS)/afs_md5.c + $(CRULE_OPT) afs_osidnlc.o: $(TOP_SRC_AFS)/afs_osidnlc.c $(CRULE_OPT) afs_osi.o: $(TOP_SRC_AFS)/afs_osi.c $(CRULE_OPT) afs_osi_alloc.o: $(TOP_SRC_AFS)/afs_osi_alloc.c $(CRULE_OPT) +afs_osi_gcpags.o: $(TOP_SRC_AFS)/afs_osi_gcpags.c + $(CRULE_OPT) afs_osi_pag.o: $(TOP_SRC_AFS)/afs_osi_pag.c $(CRULE_OPT) afs_osi_uio.o: $(TOP_SRC_AFS)/afs_osi_uio.c $(CRULE_OPT) afs_osi_vget.o: $(TOP_SRC_AFS)/afs_osi_vget.c $(CRULE_NOOPT) +afs_osi_vm.o: $(TOP_SRC_AFS)/afs_osi_vm.c + $(CRULE_OPT) afs_segments.o: $(TOP_SRC_AFS)/afs_segments.c $(CRULE_OPT) afs_server.o: $(TOP_SRC_AFS)/afs_server.c @@ -215,6 +284,8 @@ afs_user.o: $(TOP_SRC_AFS)/afs_user.c $(CRULE_OPT) afs_util.o: $(TOP_SRC_AFS)/afs_util.c $(CRULE_OPT) +afs_warn.o: $(TOP_SRC_AFS)/afs_warn.c + $(CRULE_OPT) afs_vcache.o: $(TOP_SRC_AFS)/afs_vcache.c $(CRULE_OPT) afs_vnop_access.o: $(TOP_SRC_VNOPS)/afs_vnop_access.c @@ -269,14 +340,22 @@ afs_daemons.o: $(TOP_SRC_AFS)/afs_daemons.c $(CRULE_NOOPT) afs_dir.o: $(TOP_SRCDIR)/dir/dir.c $(CRULE_NOOPT) +afs_icl.o: $(TOP_SRC_AFS)/afs_icl.c + $(CRULE_NOOPT) AFS_component_version_number.o: AFS_component_version_number.c $(CRULE_NOOPT) afs_lock.o: $(TOP_SRC_AFS)/afs_lock.c $(CRULE_NOOPT) afs_memcache.o: $(TOP_SRC_AFS)/afs_memcache.c $(CRULE_NOOPT) +afs_pag_call.o: $(TOP_SRC_AFS)/afs_pag_call.c + $(CRULE_NOOPT) +afs_pag_cred.o: $(TOP_SRC_AFS)/afs_pag_cred.c + $(CRULE_NOOPT) afs_stat.o: $(TOP_SRC_AFS)/afs_stat.c $(CRULE_NOOPT) +afs_syscall.o: $(TOP_SRC_AFS)/afs_syscall.c + $(CRULE_NOOPT) fcrypt.o: $(TOP_SRC_RXKAD)/domestic/fcrypt.c $(CRULE_NOOPT) crypt_conn.o: $(TOP_SRC_RXKAD)/domestic/crypt_conn.c @@ -315,6 +394,12 @@ Kcallback.ss.o: $(TOP_OBJ_FSINT)/Kcallback.ss.c $(CRULE_NOOPT) rxstat.o: $(TOP_SRC_RXSTAT)/rxstat.c $(CRULE_NOOPT) +Kpagcb.cs.o: $(TOP_OBJ_FSINT)/Kpagcb.cs.c + $(CRULE_NOOPT) +Kpagcb.ss.o: $(TOP_OBJ_FSINT)/Kpagcb.ss.c + $(CRULE_NOOPT) +Kpagcb.xdr.o: $(TOP_OBJ_FSINT)/Kpagcb.xdr.c + $(CRULE_NOOPT) Krxstat.ss.o: $(TOP_OBJ_RXSTAT)/Krxstat.ss.c $(CRULE_NOOPT) Krxstat.xdr.o: $(TOP_OBJ_RXSTAT)/Krxstat.xdr.c @@ -323,6 +408,10 @@ Kvice.xdr.o: $(TOP_OBJ_FSINT)/Kvice.xdr.c $(CRULE_NOOPT) Kvice.cs.o: $(TOP_OBJ_FSINT)/Kvice.cs.c $(CRULE_NOOPT) +Krmtsys.xdr.o: $(TOP_OBJ_SYS)/Krmtsys.xdr.c + $(CRULE_NOOPT) +Krmtsys.cs.o: $(TOP_OBJ_SYS)/Krmtsys.cs.c + $(CRULE_NOOPT) afsaux.o: $(TOP_SRC_FSINT)/afsaux.c $(CRULE_NOOPT) xdr_arrayn.o: $(TOP_SRC_RX)/xdr_arrayn.c @@ -361,6 +450,10 @@ afs_call_nfs.o: $(TOP_SRC_AFS)/afs_call.c afs_pioctl_nfs.o: $(TOP_SRC_AFS)/afs_pioctl.c $(CRULE_NOOPT) +# Special objects for the PAG module +afs_pag_user.o: $(TOP_SRC_AFS)/afs_user.c + $(CRULE_OPT) -DAFS_PAG_MANAGER + # Files which are specific to particular architectures/targets # but have common build rules. Place here instead of duplicating # in the per-platform Makefiles. @@ -386,8 +479,14 @@ osi_vnodeops.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_vnodeops.c $(CRULE_NOOPT) osi_debug.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_debug.c $(CRULE_OPT) +osi_ioctl.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_ioctl.c + $(CRULE_NOOPT) osi_module.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_module.c $(CRULE_NOOPT) +osi_pag_module.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_pag_module.c + $(CRULE_NOOPT) +osi_proc.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_proc.c + $(CRULE_NOOPT) osi_probe.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_probe.c $(CRULE_NOOPT) osi_syscall.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_syscall.c @@ -396,6 +495,10 @@ osi_sysctl.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_sysctl.c $(CRULE_NOOPT) osi_flush.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_flush.s $(CRULE_OPT) +osi_export.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_export.c + $(CRULE_NOOPT) +osi_nfssrv.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_nfssrv.c + $(CRULE_NOOPT) osi_alloc.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_alloc.c $(CRULE_NOOPT) osi_cred.o: $(TOP_SRCDIR)/afs/$(MKAFS_OSTYPE)/osi_cred.c diff --git a/src/libafs/MakefileProto.DARWIN.in b/src/libafs/MakefileProto.DARWIN.in index 84b927ec9..702eab234 100644 --- a/src/libafs/MakefileProto.DARWIN.in +++ b/src/libafs/MakefileProto.DARWIN.in @@ -4,7 +4,7 @@ # This software has been released under the terms of the IBM Public # License. For details, see the LICENSE file in the top-level source # directory or online at http://www.openafs.org/dl/license10.html -# $Header: /cvs/openafs/src/libafs/MakefileProto.DARWIN.in,v 1.21.2.7 2007/10/09 21:32:01 shadow Exp $ +# $Header: /cvs/openafs/src/libafs/MakefileProto.DARWIN.in,v 1.27.2.2 2007/10/09 21:30:02 shadow Exp $ # # MakefileProto for Digital Unix systems # diff --git a/src/libafs/MakefileProto.FBSD.in b/src/libafs/MakefileProto.FBSD.in index f1df05886..a22495faa 100644 --- a/src/libafs/MakefileProto.FBSD.in +++ b/src/libafs/MakefileProto.FBSD.in @@ -30,16 +30,20 @@ AFS_OS_NONFSOBJS = \ # System specific build commands and flags KSRC = @BSD_KERNEL_PATH@ KBLD = @BSD_KERNEL_BUILD@ -KDEFS=-Wall -ansi -nostdinc -I/usr/include -D_KERNEL -DKLD_MODULE \ +KDEFS=-Wall -nostdinc -I/usr/include -D_KERNEL -DKLD_MODULE \ -elf -mpreferred-stack-boundary=2 \ -fformat-extensions \ - -include ${KBLD}/opt_global.h + + -include ${KBLD}/opt_global.h \ + + -mno-mmx -mno-3dnow -mno-sse -mno-sse2 \ - -mno-align-long-strings -fformat-extensions -fno-common -ffreestanding \ - -I${KBLD} -include opt_global.h -fno-strict-aliasing + -mno-align-long-strings -fno-common -ffreestanding \ + -I${KBLD} -include opt_global.h -fno-strict-aliasing \ + DBUG = -O2 #DBUG = -O -g DEFINES= -DAFSDEBUG -DKERNEL -DAFS -DVICE -DNFS -DUFS -DINET -DQUOTA -DGETMOUNT @@ -65,7 +69,7 @@ setup: ln -fs ../Makefile.common $(KOBJ)/Makefile.common -$(RM) -f h net netinet rpc ufs nfs machine sys vm -ln -fs ${KSRC}/net net - -ln -fs ${KSRC}/i386/include machine + -ln -fs ${KSRC}/@HOST_CPU@/include machine -ln -fs ${KSRC}/netinet netinet -ln -fs ${KSRC}/nfs nfs -ln -fs /usr/include/rpc rpc @@ -153,4 +157,6 @@ vnode_if.h: ${KSRC}/kern/vnode_if.src vnode_if.h: ${KSRC}/kern/vnode_if.src awk -f ${KSRC}/tools/vnode_if.awk ${KSRC}/kern/vnode_if.src -h + awk -f ${KSRC}/tools/vnode_if.awk ${KSRC}/kern/vnode_if.src -q + awk -f ${KSRC}/tools/vnode_if.awk ${KSRC}/kern/vnode_if.src -p diff --git a/src/libafs/MakefileProto.LINUX.in b/src/libafs/MakefileProto.LINUX.in index 14ef62129..672ce5306 100644 --- a/src/libafs/MakefileProto.LINUX.in +++ b/src/libafs/MakefileProto.LINUX.in @@ -26,9 +26,31 @@ AFS_OS_OBJS = \ osi_vm.o \ osi_flush.o \ + + osi_export.o \ + osi_nfssrv.o \ + + osi_ioctl.o \ + osi_proc.o \ osi_vnodeops.o +AFS_OS_PAGOBJS = \ + osi_alloc.o \ + osi_cred.o \ + osi_groups.o \ + osi_inode.o \ + osi_misc.o \ + osi_probe.o \ + osi_sleep.o \ + osi_syscall.o \ + + osi_flush.o \ + + osi_ioctl.o \ + + osi_pag_module.o + AFS_OS_NFSOBJS = AFS_OS_NONFSOBJS = @@ -46,6 +68,9 @@ LINUX_KERNEL_PATH=@LINUX_KERNEL_PATH@ CCFLAGS = -Wno-strict-prototypes DEFINES = $(COMMON_DEFINES) +# CFLAGS_* and AFLAGS_* will be copied into the kbuild makefile +CFLAGS_afs_pag_user.o = -DAFS_PAG_MANAGER + CCFLAGS = $(COMMON_KERN_CFLAGS) @P5PLUS_KOPTS@ DEFINES = $(COMMON_DEFINES) -DCPU=586 @@ -184,6 +209,9 @@ ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}: ln -fs ${LINUX_KERNEL_PATH}/include/asm-ia64 asm + if [ "${LINUX_KERNEL_PACKAGING}" ] ; then \ + TARGPREFIX="pack_"; \ + fi ; \ for m in ${MPS} ; do \ KDIR=${KOBJ}-${LINUX_VERSION}${LINUX_MODULE_NAME}-$$m ; \ echo Building in directory: $${KDIR} ; \ @@ -201,7 +229,7 @@ ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}: TARG=libafs ; \ fi ; \ cd $${KDIR} ; \ - $(MAKE) -f Makefile.afs SMP_DEF="$${SMP_DEF}" $@_$${TARG} CLIENT=${LINUX_VERSION}${LINUX_MODULE_NAME} KDIR=$${KDIR} || exit $$?; \ + $(MAKE) -f Makefile.afs SMP_DEF="$${SMP_DEF}" $@_$${TARGPREFIX}$${TARG} CLIENT=${LINUX_VERSION}${LINUX_MODULE_NAME} KDIR=$${KDIR} || exit $$?; \ cd ../ ; \ done @@ -219,13 +247,16 @@ linux_destdirs_libafs.mp: dest_libafs.mp linux_destdirs_libafs.ep: dest_libafs.ep linux_destdirs_libafs.bm: dest_libafs.bm +linux_compdirs_pack_libafs: depsrcs pack_libafs +linux_instdirs_pack_libafs: install_pack_libafs +linux_destdirs_pack_libafs: dest_pack_libafs # Below this line are targets when in the COMMON directory: # For Linux there is no kernel NFS server. -LIBAFS = libafs-${CLIENT}.${LINUX_MODULE_EXT} -LIBAFS_MP = libafs-${CLIENT}.mp.${LINUX_MODULE_EXT} -LIBAFS_EP = libafs-${CLIENT}.ep.${LINUX_MODULE_EXT} -LIBAFS_BM = libafs-${CLIENT}.bm.${LINUX_MODULE_EXT} +LIBAFS = ${LINUX_LIBAFS_NAME}-${CLIENT}.${LINUX_MODULE_EXT} +LIBAFS_MP = ${LINUX_LIBAFS_NAME}-${CLIENT}.mp.${LINUX_MODULE_EXT} +LIBAFS_EP = ${LINUX_LIBAFS_NAME}-${CLIENT}.ep.${LINUX_MODULE_EXT} +LIBAFS_BM = ${LINUX_LIBAFS_NAME}-${CLIENT}.bm.${LINUX_MODULE_EXT} INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS} INST_LIBAFS_MP = ${DESTDIR}${afskerneldir}/${LIBAFS_MP} @@ -237,6 +268,10 @@ DEST_LIBAFS_MP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_MP} DEST_LIBAFS_EP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_EP} DEST_LIBAFS_BM = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_BM} +SYSTEM_LIBAFS = /lib/modules/${CLIENT}/extra/${LINUX_LIBAFS_NAME}/${LINUX_LIBAFS_NAME}.ko + +INST_SYSTEM = ${DESTDIR}${SYSTEM_LIBAFS} +DEST_SYSTEM = ${DEST}/root.client${SYSTEM_LIBAFS} libafs: $(LIBAFS) echo SP Build Complete @@ -251,11 +286,14 @@ libafs.bm: $(LIBAFS_BM) echo BM Build Complete -${LIBAFS} ${LIBAFS_MP} ${LIBAFS_EP} ${LIBAFS_BM}: libafs.ko - cp libafs.ko $@ +pack_libafs: ${LINUX_LIBAFS_NAME}.ko + echo "Packaging Friendly Build Complete" + +${LIBAFS} ${LIBAFS_MP} ${LIBAFS_EP} ${LIBAFS_BM}: ${LINUX_LIBAFS_NAME}.ko + cp ${LINUX_LIBAFS_NAME}.ko $@ .FORCE: -libafs.ko: .FORCE +${LINUX_LIBAFS_NAME}.ko afspag.ko: .FORCE env EXTRA_CFLAGS="${EXTRA_CFLAGS}" @TOP_SRCDIR@/libafs/make_kbuild_makefile.pl ${KDIR} $@ @TOP_OBJDIR@/src/config/Makefile.config Makefile.afs Makefile.common env EXTRA_CFLAGS="${EXTRA_CFLAGS}" $(MAKE) -C ${LINUX_KERNEL_PATH} M=@TOP_OBJDIR@/src/libafs/${KDIR} modules @@ -289,6 +327,9 @@ install_libafs.ep: $(INST_LIBAFS_EP) install_libafs.bm: $(INST_LIBAFS_BM) echo BM Install Complete +install_pack_libafs: $(INST_SYSTEM) + echo Packinging Friendly Install Complete + dest_libafs: $(DEST_LIBAFS) echo SP Install Complete @@ -301,6 +342,9 @@ dest_libafs.ep: $(DEST_LIBAFS_EP) dest_libafs.bm: $(DEST_LIBAFS_BM) echo BM Install Complete +dest_pack_libafs: $(DEST_SYSTEM) + echo Packaging Friendly Install Complete + $(INST_LIBAFS): $(LIBAFS) ${INSTALL} -f $? $@ @@ -313,6 +357,9 @@ $(INST_LIBAFS_EP): $(LIBAFS_EP) $(INST_LIBAFS_BM): $(LIBAFS_BM) ${INSTALL} -f $? $@ +$(INST_SYSTEM) $(DEST_SYSTEM): $(LINUX_LIBAFS_NAME).ko + ${INSTALL} -f $? $@ + $(DEST_LIBAFS): $(LIBAFS) ${INSTALL} -f $? $@ diff --git a/src/libafs/make_kbuild_makefile.pl b/src/libafs/make_kbuild_makefile.pl index dd10db1e3..9116869a2 100755 --- a/src/libafs/make_kbuild_makefile.pl +++ b/src/libafs/make_kbuild_makefile.pl @@ -6,9 +6,11 @@ # # The specified makefiles will be scanned for variable values # The module ${TARG} will be built in ${TOP_SRCDIR}/src/libafs/${KDIR}. -# It will include objects listed in ${AFSAOBJS} and ${AFSNONFSOBJS} +# It will include objects listed in ${AFSAOBJS} and ${AFSNFSOBJS} +# The afspag.ko module will be built from objects listed in ${AFSPAGOBJS}. # Appropriate source files for each object will be symlinked into ${KDIR} # EXTRA_CFLAGS will be set to ${CFLAGS} ${COMMON_INCLUDE} +# Any CFLAGS_* and AFLAGS_* variables will be copied # Produces ${KDIR}/Makefile, suitable for use with kbuild @@ -16,7 +18,7 @@ use IO::File; if (@ARGV < 3) { - die "Usage: echo objects... | $0 KDIR TARG Makefiles...\n"; + die "Usage: $0 KDIR TARG Makefiles...\n"; } ($KDIR, $TARG, @Makefiles) = @ARGV; @@ -61,7 +63,8 @@ foreach $mf (@Makefiles) { $KDIR = "$vars{TOP_OBJDIR}/src/libafs/$KDIR"; -@objects = (split(' ', $vars{AFSAOBJS}), split(' ', $vars{AFSNONFSOBJS})); +@libafs_objs = (split(' ', $vars{AFSAOBJS}), split(' ', $vars{AFSNFSOBJS})); +@afspag_objs = (split(' ', $vars{AFSPAGOBJS})); $MV = new IO::File("$vars{TOP_OBJDIR}/src/config/Makefile.version", O_RDONLY) or die "$vars{TOP_OBJDIR}/src/config/Makefile.version: $!\n"; @@ -75,8 +78,9 @@ if (! -d $KDIR) { mkdir($KDIR, 0777) or die "$KDIR: $!\n"; } +%all_objs = map(($_ => 1), @libafs_objs, @afspag_objs); -foreach (@objects) { +foreach (keys %all_objs) { die "No source known for $_\n" unless exists $deps{$_}; if($deps{$_} =~ /\.s$/) { ($src = $_) =~ s/\.o$/.S/; @@ -103,9 +107,14 @@ $cflags =~ s#-I(?!/)#-I$KDIR/#g; $cflags =~ s/\s+/ \\\n /g; $F = new IO::File("$KDIR/Makefile", O_WRONLY|O_CREAT|O_TRUNC, 0666) or die "$KDIR/Makefile: $!\n"; +foreach (sort keys %vars) { + next unless /^[AC]FLAGS_/; + print $F "$_ = $vars{$_}\n"; +} print $F "EXTRA_CFLAGS=$cflags\n"; -print $F "obj-m := $TARG.o\n"; -print $F "$TARG-objs := ", join("\\\n $_", @objects), "\n"; +print $F "obj-m := $TARG.o afspag.o\n"; +print $F "$TARG-objs := ", join("\\\n $_", @libafs_objs), "\n"; +print $F "afspag-objs := ", join("\\\n $_", @afspag_objs), "\n"; print $F "\n$MakefileVersion\n"; $F->close() or die "$KDIR/Makefile: $!\n"; diff --git a/src/libafsauthent/NTMakefile b/src/libafsauthent/NTMakefile index af1b33789..576e1cea8 100644 --- a/src/libafsauthent/NTMakefile +++ b/src/libafsauthent/NTMakefile @@ -96,6 +96,7 @@ DLLOBJS =\ $(WINNTAFSDOBJS) \ $(AUDITBJS) \ $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj \ $(OUT)\afsauthent.res $(RXOBJS): $(RX)\$$(@B).c @@ -144,8 +145,10 @@ DLLLIBS =\ $(DESTDIR)\lib\lanahelper.lib $(LIBFILE): $(DLLOBJS) $(DLLLIBS) $(RXOBJS) - $(DLLCONLINK) /DEF:afsauthent.def rpcrt4.lib dnsapi.lib mpr.lib secur32.lib + $(DLLCONLINK) /DEF:afsauthent.def rpcrt4.lib dnsapi.lib mpr.lib secur32.lib shell32.lib + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) # Definitions for generating versioninfo resources $(OUT)\afsauthent.res: AFS_component_version_number.h diff --git a/src/libafsauthent/afsauthent.def b/src/libafsauthent/afsauthent.def index 6794cd48e..2e59483e2 100644 --- a/src/libafsauthent/afsauthent.def +++ b/src/libafsauthent/afsauthent.def @@ -85,32 +85,34 @@ EXPORTS VOTE_function_names @84 DATA pr_End @85 - PR_INewEntry @86 - PR_WhereIsIt @87 - PR_DumpEntry @88 - PR_AddToGroup @89 - PR_NameToID @90 - PR_IDToName @91 - PR_Delete @92 - PR_RemoveFromGroup @93 - PR_GetCPS @94 - PR_NewEntry @95 - PR_ListMax @96 - PR_SetMax @97 - PR_ListEntry @98 - PR_ChangeEntry @99 - PR_ListElements @100 - PR_IsAMemberOf @101 - PR_SetFieldsEntry @102 - PR_ListOwned @103 - PR_GetCPS2 @104 - PR_GetHostCPS @105 - PR_UpdateEntry @106 - PR_ListEntries @107 - PR_ListSuperGroups @108 - ka_AuthSpecificServersConn @109 - ka_KeyCheckSum @110 - rx_Finalize @111 - rx_InitHost @112 - VOTE_GetSyncSite @113 - ubik_RefreshConn @114 + PR_INewEntry @86 + PR_WhereIsIt @87 + PR_DumpEntry @88 + PR_AddToGroup @89 + PR_NameToID @90 + PR_IDToName @91 + PR_Delete @92 + PR_RemoveFromGroup @93 + PR_GetCPS @94 + PR_NewEntry @95 + PR_ListMax @96 + PR_SetMax @97 + PR_ListEntry @98 + PR_ChangeEntry @99 + PR_ListElements @100 + PR_IsAMemberOf @101 + PR_SetFieldsEntry @102 + PR_ListOwned @103 + PR_GetCPS2 @104 + PR_GetHostCPS @105 + PR_UpdateEntry @106 + PR_ListEntries @107 + PR_ListSuperGroups @108 + ka_AuthSpecificServersConn @109 + ka_KeyCheckSum @110 + rx_Finalize @111 + rx_InitHost @112 + VOTE_GetSyncSite @113 + ubik_RefreshConn @114 + rx_SetSecurityConfiguration @115 + pioctl_utf8 @116 diff --git a/src/libafsrpc/Makefile.in b/src/libafsrpc/Makefile.in index 1808a7b44..d4ace3b55 100644 --- a/src/libafsrpc/Makefile.in +++ b/src/libafsrpc/Makefile.in @@ -112,7 +112,8 @@ DESOBJS =\ CRYPT_OBJ = crypt.o LWPOBJS = \ - fasttime.o + fasttime.o \ + lock.o LIBOBJS = \ ${RXOBJS} \ @@ -272,7 +273,7 @@ xdr_afsuuid.o: ${RX}/xdr_afsuuid.c # # $ what /opt/langtools/bin/pxdb32 # /opt/langtools/bin/pxdb32: -# HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.29.2.9 $ +# HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.36.4.5 $ # # The problem occurs when -g and -O are both used when compiling des.c. # The simplest way to work around the problem is to leave out either -g or -O. @@ -351,10 +352,13 @@ base64.o: ${UTIL}/base64.c fasttime.o: ${LWP}/fasttime.c ${CCRULE} ${LWP}/fasttime.c +lock.o: ${LWP}/lock.c + ${CCRULE} ${LWP}/lock.c + syscall.o: ${SYS}/syscall.s case "$(SYS_NAME)" in \ sun4x_5* | sunx86_5*) \ - $(CPP) ${SFLAGS} ${SYS}/syscall.s syscall.ss; \ + $(PATH_CPP) ${SFLAGS} ${SYS}/syscall.s > syscall.ss; \ as -o syscall.o syscall.ss; \ $(RM) syscall.ss;; \ sgi_* | *_darwin_* ) \ @@ -366,7 +370,7 @@ syscall.o: ${SYS}/syscall.s *bsd* ) \ touch syscall.o ;; \ *) \ - $(CPP) ${SFLAGS} ${SYS}/syscall.s syscall.ss; \ + $(PATH_CPP) ${SFLAGS} ${SYS}/syscall.s > syscall.ss; \ as -o syscall.o syscall.ss; \ $(RM) syscall.ss;; \ esac diff --git a/src/libafsrpc/NTMakefile b/src/libafsrpc/NTMakefile index cf470777c..f8d8edbb4 100644 --- a/src/libafsrpc/NTMakefile +++ b/src/libafsrpc/NTMakefile @@ -39,7 +39,7 @@ RXSTATBJS = $(OUT)\rxstat.obj $(OUT)\rxstat.ss.obj $(OUT)\rxstat.xdr.obj $(OUT)\ LIBRXKAD_OBJS = $(OUT)\rxkad_client.obj $(OUT)\rxkad_server.obj $(OUT)\rxkad_common.obj $(OUT)\ticket.obj \ $(OUT)\ticket5.obj $(OUT)\crc.obj $(OUT)\md4.obj $(OUT)\md5.obj $(OUT)\AFS_component_version_number.obj -LIBRXKAD_REGOBJS = $(OUT)\fcrypt.obj $(OUT)\crypt_conn.obj +LIBRXKAD_REGOBJS = $(OUT)\bg-fcrypt.obj DESOBJS_INT = $(OUT)\des.obj $(OUT)\cbc_encrypt.obj $(OUT)\pcbc_encrypt.obj $(OUT)\cksum.obj $(OUT)\new_rnd_key.obj \ $(OUT)\key_sched.obj $(OUT)\debug_decl.obj $(OUT)\quad_cksum.obj $(OUT)\key_parity.obj \ @@ -96,7 +96,9 @@ DLLLIBS =\ $(LIBFILE): $(DLLOBJS) $(DLLLIBS) $(DLLCONLINK) /DEF:afsrpc.def iphlpapi.lib + $(_VC_MANIFEST_EMBED_DLL) $(DLLPREP) + $(CODESIGN_USERLAND) # Definitions for generating versioninfo resources $(OUT)\afsrpc.res: AFS_component_version_number.h diff --git a/src/libafsrpc/afsrpc.def b/src/libafsrpc/afsrpc.def index cd7556779..5f680056b 100644 --- a/src/libafsrpc/afsrpc.def +++ b/src/libafsrpc/afsrpc.def @@ -215,7 +215,14 @@ EXPORTS rx_StartClientThread @220 rxkad_global_stats_lock @221 DATA rxkad_stats_key @222 DATA + rx_DebugOnOff @223 rx_InitHost @224 rx_NewServiceHost @225 - - + osi_AssertFailU @226 + DllMain @227 + rx_SetSecurityConfiguration @228 +; RXAFSCB_ExecuteRequest @229 + EndRXAFS_GetTime @230 + StartRXAFS_GetTime @231 + EndRXAFS_GetCapabilities @232 + StartRXAFS_GetCapabilities @233 diff --git a/src/libuafs/.cvsignore b/src/libuafs/.cvsignore index a2474f66c..e471e9bbf 100644 --- a/src/libuafs/.cvsignore +++ b/src/libuafs/.cvsignore @@ -18,3 +18,6 @@ config des linktest rx +export.exp +export.h +export64.exp diff --git a/src/libuafs/Makefile.common.in b/src/libuafs/Makefile.common.in index 803361531..43fa1d941 100644 --- a/src/libuafs/Makefile.common.in +++ b/src/libuafs/Makefile.common.in @@ -87,6 +87,7 @@ UAFSOBJ = \ $(UOBJ)/afs_atomlist.o \ $(UOBJ)/afs_lhash.o \ $(UOBJ)/afs_analyze.o \ + $(UOBJ)/afs_error.o \ $(UOBJ)/afs_axscache.o \ $(UOBJ)/afs_buffer.o \ $(UOBJ)/afs_callback.o \ @@ -97,19 +98,24 @@ UAFSOBJ = \ $(UOBJ)/afs_daemons.o \ $(UOBJ)/afs_dcache.o \ $(UOBJ)/afs_dir.o \ + $(UOBJ)/afs_disconnected.o \ $(UOBJ)/afs_dynroot.o \ + $(UOBJ)/afs_icl.o \ $(UOBJ)/afs_init.o \ $(UOBJ)/afs_lock.o \ $(UOBJ)/afs_mariner.o \ $(UOBJ)/afs_memcache.o \ + $(UOBJ)/afs_md5.o \ $(UOBJ)/afs_osidnlc.o \ $(UOBJ)/afs_osi_pag.o \ $(UOBJ)/afs_segments.o \ $(UOBJ)/afs_server.o \ $(UOBJ)/afs_stat.o \ + $(UOBJ)/afs_syscall.o \ $(UOBJ)/afs_user.o \ $(UOBJ)/afs_util.o \ $(UOBJ)/afs_vcache.o \ + $(UOBJ)/afs_warn.o \ $(UOBJ)/afs_osi_uio.o \ $(UOBJ)/afs_vnop_access.o \ $(UOBJ)/afs_vnop_attrs.o \ @@ -208,6 +214,7 @@ AFSWEBOBJ = \ $(WEBOBJ)/afs_atomlist.o \ $(WEBOBJ)/afs_lhash.o \ $(WEBOBJ)/afs_analyze.o \ + $(WEBOBJ)/afs_error.o \ $(WEBOBJ)/afs_axscache.o \ $(WEBOBJ)/afs_buffer.o \ $(WEBOBJ)/afs_callback.o \ @@ -218,19 +225,24 @@ AFSWEBOBJ = \ $(WEBOBJ)/afs_daemons.o \ $(WEBOBJ)/afs_dcache.o \ $(WEBOBJ)/afs_dir.o \ + $(WEBOBJ)/afs_disconnected.o \ $(WEBOBJ)/afs_dynroot.o \ + $(WEBOBJ)/afs_icl.o \ $(WEBOBJ)/afs_init.o \ $(WEBOBJ)/afs_lock.o \ $(WEBOBJ)/afs_mariner.o \ $(WEBOBJ)/afs_memcache.o \ + $(WEBOBJ)/afs_md5.o \ $(WEBOBJ)/afs_osidnlc.o \ $(WEBOBJ)/afs_osi_pag.o \ $(WEBOBJ)/afs_segments.o \ $(WEBOBJ)/afs_server.o \ $(WEBOBJ)/afs_stat.o \ + $(WEBOBJ)/afs_syscall.o \ $(WEBOBJ)/afs_user.o \ $(WEBOBJ)/afs_util.o \ $(WEBOBJ)/afs_vcache.o \ + $(WEBOBJ)/afs_warn.o \ $(WEBOBJ)/afs_osi_uio.o \ $(WEBOBJ)/afs_vnop_access.o \ $(WEBOBJ)/afs_vnop_attrs.o \ @@ -330,6 +342,7 @@ AFSWEBOBJKRB = \ $(WEBOBJ)/afs_atomlist.o \ $(WEBOBJ)/afs_lhash.o \ $(WEBOBJ)/afs_analyze.o \ + $(WEBOBJ)/afs_error.o \ $(WEBOBJ)/afs_axscache.o \ $(WEBOBJ)/afs_buffer.o \ $(WEBOBJ)/afs_callback.o \ @@ -341,18 +354,23 @@ AFSWEBOBJKRB = \ $(WEBOBJ)/afs_dcache.o \ $(WEBOBJ)/afs_dir.o \ $(WEBOBJ)/afs_dynroot.o \ + $(WEBOBJ)/afs_disconnected.o \ + $(WEBOBJ)/afs_icl.o \ $(WEBOBJ)/afs_init.o \ $(WEBOBJ)/afs_lock.o \ $(WEBOBJ)/afs_mariner.o \ $(WEBOBJ)/afs_memcache.o \ + $(WEBOBJ)/afs_md5.o \ $(WEBOBJ)/afs_osidnlc.o \ $(WEBOBJ)/afs_osi_pag.o \ $(WEBOBJ)/afs_segments.o \ $(WEBOBJ)/afs_server.o \ $(WEBOBJ)/afs_stat.o \ + $(WEBOBJ)/afs_syscall.o \ $(WEBOBJ)/afs_user.o \ $(WEBOBJ)/afs_util.o \ $(WEBOBJ)/afs_vcache.o \ + $(WEBOBJ)/afs_warn.o \ $(WEBOBJ)/afs_osi_uio.o \ $(WEBOBJ)/afs_vnop_access.o \ $(WEBOBJ)/afs_vnop_attrs.o \ @@ -447,6 +465,7 @@ JUAFSOBJ = \ $(JUAFS)/afs_atomlist.o \ $(JUAFS)/afs_lhash.o \ $(JUAFS)/afs_analyze.o \ + $(JUAFS)/afs_error.o \ $(JUAFS)/afs_axscache.o \ $(JUAFS)/afs_buffer.o \ $(JUAFS)/afs_callback.o \ @@ -458,18 +477,23 @@ JUAFSOBJ = \ $(JUAFS)/afs_dcache.o \ $(JUAFS)/afs_dir.o \ $(JUAFS)/afs_dynroot.o \ + $(JUAFS)/afs_disconnected.o \ + $(JUAFS)/afs_icl.o \ $(JUAFS)/afs_init.o \ $(JUAFS)/afs_lock.o \ $(JUAFS)/afs_mariner.o \ $(JUAFS)/afs_memcache.o \ + $(JUAFS)/afs_md5.o \ $(JUAFS)/afs_osidnlc.o \ $(JUAFS)/afs_osi_pag.o \ $(JUAFS)/afs_segments.o \ $(JUAFS)/afs_server.o \ $(JUAFS)/afs_stat.o \ + $(JUAFS)/afs_syscall.o \ $(JUAFS)/afs_user.o \ $(JUAFS)/afs_util.o \ $(JUAFS)/afs_vcache.o \ + $(JUAFS)/afs_warn.o \ $(JUAFS)/afs_osi_uio.o \ $(JUAFS)/afs_vnop_access.o \ $(JUAFS)/afs_vnop_attrs.o \ @@ -584,6 +608,10 @@ $(UOBJ)/afs_dcache.o: $(TOP_SRC_AFS)/afs_dcache.c $(CRULE1) $(UOBJ)/afs_dynroot.o: $(TOP_SRC_AFS)/afs_dynroot.c $(CRULE1) +$(UOBJ)/afs_disconnected.o: $(TOP_SRC_AFS)/afs_disconnected.c + $(CRULE1) +$(UOBJ)/afs_error.o: $(TOP_SRC_AFS)/afs_error.c + $(CRULE1) $(UOBJ)/afs_init.o: $(TOP_SRC_AFS)/afs_init.c $(CRULE1) $(UOBJ)/afs_mariner.o: $(TOP_SRC_AFS)/afs_mariner.c @@ -604,6 +632,8 @@ $(UOBJ)/afs_util.o: $(TOP_SRC_AFS)/afs_util.c $(CRULE1) $(UOBJ)/afs_vcache.o: $(TOP_SRC_AFS)/afs_vcache.c $(CRULE1) +$(UOBJ)/afs_warn.o: $(TOP_SRC_AFS)/afs_warn.c + $(CRULE1) $(UOBJ)/afs_osi_uio.o: $(TOP_SRC_AFS)/afs_osi_uio.c $(CRULE1) $(UOBJ)/afs_vnop_access.o: $(TOP_SRC_VNOPS)/afs_vnop_access.c @@ -658,6 +688,8 @@ $(UOBJ)/afs_lock.o: $(TOP_SRC_AFS)/afs_lock.c $(CRULE1) $(UOBJ)/afs_memcache.o: $(TOP_SRC_AFS)/afs_memcache.c $(CRULE1) +$(UOBJ)/afs_md5.o: $(TOP_SRC_AFS)/afs_md5.c + $(CRULE1) $(UOBJ)/afs_stat.o: $(TOP_SRC_AFS)/afs_stat.c $(CRULE1) $(UOBJ)/fcrypt.o: $(TOP_SRC_RXKAD)/domestic/fcrypt.c @@ -736,8 +768,12 @@ $(UOBJ)/rx_kcommon.o: $(TOP_SRCDIR)/rx/rx_kcommon.c $(CRULE1) $(UOBJ)/afs_call.o: $(TOP_SRC_AFS)/afs_call.c $(CRULE1) -DAFS_NONFSTRANS +$(UOBJ)/afs_icl.o: $(TOP_SRC_AFS)/afs_icl.c + $(CRULE1) -DAFS_NONFSTRANS $(UOBJ)/afs_pioctl.o: $(TOP_SRC_AFS)/afs_pioctl.c $(CRULE1) -DAFS_NONFSTRANS +$(UOBJ)/afs_syscall.o: $(TOP_SRC_AFS)/afs_syscall.c + $(CRULE1) -DAFS_NONFSTRANS $(UOBJ)/osi_vfsops.o: $(TOP_SRC_AFS)/UKERNEL/osi_vfsops.c $(CRULE1) -DAFS_NONFSTRANS $(UOBJ)/ktc.o: $(TOP_SRCDIR)/auth/ktc.c @@ -831,8 +867,12 @@ $(WEBOBJ)/afs_conn.o: $(TOP_SRC_AFS)/afs_conn.c $(CRULE2) $(WEBOBJ)/afs_dcache.o: $(TOP_SRC_AFS)/afs_dcache.c $(CRULE2) +$(WEBOBJ)/afs_disconnected.o: $(TOP_SRC_AFS)/afs_disconnected.c + $(CRULE2) $(WEBOBJ)/afs_dynroot.o: $(TOP_SRC_AFS)/afs_dynroot.c $(CRULE2) +$(WEBOBJ)/afs_error.o: $(TOP_SRC_AFS)/afs_error.c + $(CRULE2) $(WEBOBJ)/afs_init.o: $(TOP_SRC_AFS)/afs_init.c $(CRULE2) $(WEBOBJ)/afs_mariner.o: $(TOP_SRC_AFS)/afs_mariner.c @@ -853,6 +893,8 @@ $(WEBOBJ)/afs_util.o: $(TOP_SRC_AFS)/afs_util.c $(CRULE2) $(WEBOBJ)/afs_vcache.o: $(TOP_SRC_AFS)/afs_vcache.c $(CRULE2) +$(WEBOBJ)/afs_warn.o: $(TOP_SRC_AFS)/afs_warn.c + $(CRULE2) $(WEBOBJ)/afs_osi_uio.o: $(TOP_SRC_AFS)/afs_osi_uio.c $(CRULE2) $(WEBOBJ)/afs_vnop_access.o: $(TOP_SRC_VNOPS)/afs_vnop_access.c @@ -907,6 +949,8 @@ $(WEBOBJ)/afs_lock.o: $(TOP_SRC_AFS)/afs_lock.c $(CRULE2) $(WEBOBJ)/afs_memcache.o: $(TOP_SRC_AFS)/afs_memcache.c $(CRULE2) +$(WEBOBJ)/afs_md5.o: $(TOP_SRC_AFS)/afs_md5.c + $(CRULE2) $(WEBOBJ)/afs_stat.o: $(TOP_SRC_AFS)/afs_stat.c $(CRULE2) $(WEBOBJ)/fcrypt.o: $(TOP_SRC_RXKAD)/domestic/fcrypt.c @@ -981,8 +1025,12 @@ $(WEBOBJ)/rx_kcommon.o: $(TOP_SRCDIR)/rx/rx_kcommon.c $(CRULE2) $(WEBOBJ)/afs_call.o: $(TOP_SRC_AFS)/afs_call.c $(CRULE2) -DAFS_NONFSTRANS +$(WEBOBJ)/afs_icl.o: $(TOP_SRC_AFS)/afs_icl.c + $(CRULE2) -DAFS_NONFSTRANS $(WEBOBJ)/afs_pioctl.o: $(TOP_SRC_AFS)/afs_pioctl.c $(CRULE2) -DAFS_NONFSTRANS +$(WEBOBJ)/afs_syscall.o: $(TOP_SRC_AFS)/afs_syscall.c + $(CRULE2) -DAFS_NONFSTRANS $(WEBOBJ)/osi_vfsops.o: $(TOP_SRC_AFS)/UKERNEL/osi_vfsops.c $(CRULE2) -DAFS_NONFSTRANS $(WEBOBJ)/ktc.o: $(TOP_SRCDIR)/auth/ktc.c @@ -1084,8 +1132,12 @@ $(JUAFS)/afs_conn.o: $(TOP_SRC_AFS)/afs_conn.c $(CRULE1) $(JUAFS)/afs_dcache.o: $(TOP_SRC_AFS)/afs_dcache.c $(CRULE1) +$(JUAFS)/afs_disconnected.o: $(TOP_SRC_AFS)/afs_disconnected.c + $(CRULE1) $(JUAFS)/afs_dynroot.o: $(TOP_SRC_AFS)/afs_dynroot.c $(CRULE1) +$(JUAFS)/afs_error.o: $(TOP_SRC_AFS)/afs_error.c + $(CRULE1) $(JUAFS)/afs_init.o: $(TOP_SRC_AFS)/afs_init.c $(CRULE1) $(JUAFS)/afs_mariner.o: $(TOP_SRC_AFS)/afs_mariner.c @@ -1106,6 +1158,8 @@ $(JUAFS)/afs_util.o: $(TOP_SRC_AFS)/afs_util.c $(CRULE1) $(JUAFS)/afs_vcache.o: $(TOP_SRC_AFS)/afs_vcache.c $(CRULE1) +$(JUAFS)/afs_warn.o: $(TOP_SRC_AFS)/afs_warn.c + $(CRULE1) $(JUAFS)/afs_osi_uio.o: $(TOP_SRC_AFS)/afs_osi_uio.c $(CRULE1) $(JUAFS)/afs_vnop_access.o: $(TOP_SRC_VNOPS)/afs_vnop_access.c @@ -1160,6 +1214,8 @@ $(JUAFS)/afs_lock.o: $(TOP_SRC_AFS)/afs_lock.c $(CRULE1) $(JUAFS)/afs_memcache.o: $(TOP_SRC_AFS)/afs_memcache.c $(CRULE1) +$(JUAFS)/afs_md5.o: $(TOP_SRC_AFS)/afs_md5.c + $(CRULE1) $(JUAFS)/afs_stat.o: $(TOP_SRC_AFS)/afs_stat.c $(CRULE1) $(JUAFS)/fcrypt.o: $(TOP_SRC_RXKAD)/domestic/fcrypt.c @@ -1234,8 +1290,12 @@ $(JUAFS)/rx_kcommon.o: $(TOP_SRCDIR)/rx/rx_kcommon.c $(CRULE1) $(JUAFS)/afs_call.o: $(TOP_SRC_AFS)/afs_call.c $(CRULE1) -DAFS_NONFSTRANS +$(JUAFS)/afs_icl.o: $(TOP_SRC_AFS)/afs_icl.c + $(CRULE1) -DAFS_NONFSTRANS $(JUAFS)/afs_pioctl.o: $(TOP_SRC_AFS)/afs_pioctl.c $(CRULE1) -DAFS_NONFSTRANS +$(JUAFS)/afs_syscall.o: $(TOP_SRC_AFS)/afs_syscall.c + $(CRULE1) -DAFS_NONFSTRANS $(JUAFS)/osi_vfsops.o: $(TOP_SRC_AFS)/UKERNEL/osi_vfsops.c $(CRULE1) -DAFS_NONFSTRANS $(JUAFS)/ktc.o: $(TOP_SRCDIR)/auth/ktc.c diff --git a/src/libuafs/MakefileProto.FBSD.in b/src/libuafs/MakefileProto.FBSD.in index 91d36eeee..c765ed50b 100644 --- a/src/libuafs/MakefileProto.FBSD.in +++ b/src/libuafs/MakefileProto.FBSD.in @@ -19,7 +19,11 @@ OPTF=-O TEST_CFLAGS=-D_REENTRANT -DAFS_PTHREAD_ENV -DAFS_FBSD40_ENV TEST_LDFLAGS= + TEST_LIBS=-lc_r + +TEST_LIBS=-lpthread + LIBUAFS = libuafs.a LIBJUAFS = libjuafs.a diff --git a/src/log/kseal.c b/src/log/kseal.c index 1cdf3f93a..9203d8622 100644 --- a/src/log/kseal.c +++ b/src/log/kseal.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/log/kseal.c,v 1.7.2.2 2007/10/30 15:23:58 shadow Exp $"); + ("$Header: /cvs/openafs/src/log/kseal.c,v 1.8.4.1 2007/10/30 15:16:42 shadow Exp $"); #include #include diff --git a/src/log/tokens.c b/src/log/tokens.c index 36c0e3d6e..62559a31b 100644 --- a/src/log/tokens.c +++ b/src/log/tokens.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/log/tokens.c,v 1.6.2.3 2007/10/30 15:23:58 shadow Exp $"); + ("$Header: /cvs/openafs/src/log/tokens.c,v 1.8.2.1 2007/10/30 15:16:42 shadow Exp $"); #include #ifdef AFS_AIX32_ENV diff --git a/src/log/unlog.c b/src/log/unlog.c index d7759bfa4..9c09267c5 100644 --- a/src/log/unlog.c +++ b/src/log/unlog.c @@ -30,7 +30,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/log/unlog.c,v 1.6.2.4 2007/11/26 21:21:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/log/unlog.c,v 1.7.4.3 2007/11/26 21:08:43 shadow Exp $"); #include #include diff --git a/src/lwp/Makefile.in b/src/lwp/Makefile.in index 87db1392f..2fd7d63ee 100644 --- a/src/lwp/Makefile.in +++ b/src/lwp/Makefile.in @@ -37,7 +37,7 @@ process.o : process.s process.i386.s process.c pmax_he1) \ $(CCOBJ) ${LWP_DBG} ${LWP_OPTMZ} -c -I${TOP_INCDIR} process.s;; \ sun4c_51 | sun4c_52 | sun4m_51 | sun4m_52 | sun4c_53 | sun4m_53 | sun4_53 | sun4_52 | sun4_54 | sun4c_54 | sun4m_54 | sun4x_5* | arm_linux* ) \ - $(CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s process.ss; \ + $(PATH_CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s > process.ss; \ ${AS} process.ss -o process.o; \ $(RM) process.ss ;; \ sgi_5* ) \ @@ -45,11 +45,11 @@ process.o : process.s process.i386.s process.c sgi_61 | sgi_62 | sgi_63 ) \ $(CCOBJ) ${LWP_DBG} ${LWP_OPTMZ} -c ${XCFLAGS} ${ARCHFLAGS} -I${TOP_INCDIR} -KPIC -G0 ${srcdir}/process.s;; \ s390_*) \ - $(CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s390.s >process.ss; \ + $(PATH_CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s390.s >process.ss; \ ${AS} -ahlns process.ss -o process.o >process.lst; \ $(RM) process.ss ;; \ s390x_*) \ - $(CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s390x.s >process.ss; \ + $(PATH_CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s390x.s >process.ss; \ ${AS} -ahlns process.ss -o process.o >process.lst; \ $(RM) process.ss ;; \ *_darwin* ) \ @@ -88,11 +88,11 @@ process.o : process.s process.i386.s process.c ${AS} process.ss -o process.o ; \ $(RM) -f process.S ;;\ ncrx86_* | sunx86_*) \ - $(CPP) -P -D__sun -D__i386 -DIGNORE_STDS_H -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.i386.s process.ss; \ + $(PATH_CPP) -P -D__sun -D__i386 -DIGNORE_STDS_H -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.i386.s > process.ss; \ ${AS} -o process.o process.ss; \ $(RM) process.ss ;; \ alpha_nbsd* ) \ - $(CPP) -DASSEMBLER -P -I${TOP_INCDIR} ${srcdir}/process.s > process.ss; \ + $(PATH_CPP) -DASSEMBLER -P -I${TOP_INCDIR} ${srcdir}/process.s > process.ss; \ ${AS} -o process.o process.ss; \ $(RM) process.ss ;; \ hp* | *_linux* | *_umlinux* | sgi_64 | sgi_65 ) \ @@ -103,11 +103,11 @@ process.o : process.s process.i386.s process.c ia64_hpux11* | hp_ux11* ) \ ${CC} ${CFLAGS} -c ${srcdir}/process.c;; \ i386_*) \ - $(CPP) -P -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.i386.s process.ss; \ + $(PATH_CPP) -P -I${TOP_INCDIR} -I${srcdir} ${srcdir}/process.i386.s > process.ss; \ ${AS} process.ss -o process.o; \ $(RM) process.ss ;; \ *) \ - $(CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s process.ss; \ + $(PATH_CPP) -P -I${TOP_INCDIR} ${srcdir}/process.s > process.ss; \ ${AS} process.ss -o process.o; \ $(RM) process.ss ;; \ esac diff --git a/src/lwp/NTMakefile b/src/lwp/NTMakefile index 26725a8e5..ce34bfd0a 100644 --- a/src/lwp/NTMakefile +++ b/src/lwp/NTMakefile @@ -31,9 +31,9 @@ INCFILES = \ $(DESTDIR)\include\preempt.h \ $(DESTDIR)\include\timer.h +install_headers: $(INCFILES) - -install: $(LIBFILE) $(INCFILES) +install: install_headers $(LIBFILE) install9x: install @@ -44,6 +44,8 @@ tests: $(OUT)\rw.exe $(OUT)\rw.exe: $(OUT)\rw.obj $(LIBFILE) $(DESTDIR)\lib\afs\afsutil.lib $(EXECONLINK) + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) clean:: $(DEL) $(LIBFILE) diff --git a/src/lwp/iomgr.c b/src/lwp/iomgr.c index c77368e96..3390556e8 100644 --- a/src/lwp/iomgr.c +++ b/src/lwp/iomgr.c @@ -36,7 +36,7 @@ #include #include -RCSID("$Header: /cvs/openafs/src/lwp/iomgr.c,v 1.13.2.2 2008/03/10 22:35:35 shadow Exp $"); +RCSID("$Header: /cvs/openafs/src/lwp/iomgr.c,v 1.16.2.1 2008/03/10 22:32:33 shadow Exp $"); #include #include @@ -129,7 +129,9 @@ struct IoRequest { struct TM_Elem timeout; /* Result of select call */ - long result; + int result; + + struct IoRequest *next; /* for iorFreeList */ #ifdef AFS_DJGPP_ENV NCB *ncbp; @@ -228,14 +230,14 @@ fd_set *IOMGR_AllocFDSet(void) } } -#define FreeRequest(x) ((x)->result = (long) iorFreeList, iorFreeList = (x)) +#define FreeRequest(x) ((x)->next = iorFreeList, iorFreeList = (x)) static struct IoRequest *NewRequest(void) { struct IoRequest *request; if ((request=iorFreeList)) - iorFreeList = (struct IoRequest *) (request->result); + iorFreeList = (struct IoRequest *) (request->next); else request = (struct IoRequest *) malloc(sizeof(struct IoRequest)); memset((char*)request, 0, sizeof(struct IoRequest)); @@ -304,7 +306,10 @@ static int FDSetCmp(int nfds, fd_set *fd_set1, fd_set *fd_set2) */ static void FDSetSet(int nfds, fd_set *fd_set1, fd_set *fd_set2) { - unsigned int i, n; + unsigned int i; +#ifndef AFS_NT40_ENV + unsigned int n; +#endif if (fd_set1 == (fd_set*)0 || fd_set2 == (fd_set*)0) return; diff --git a/src/lwp/lock.c b/src/lwp/lock.c index fa3d0f0d7..fcdc2094c 100644 --- a/src/lwp/lock.c +++ b/src/lwp/lock.c @@ -26,7 +26,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/lock.c,v 1.5.2.1 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/lwp/lock.c,v 1.5.14.1 2008/03/10 22:32:33 shadow Exp $"); #ifdef AFS_PTHREAD_ENV #include diff --git a/src/lwp/lwp.c b/src/lwp/lwp.c index 024cef9db..a8376dfc7 100644 --- a/src/lwp/lwp.c +++ b/src/lwp/lwp.c @@ -17,7 +17,7 @@ #include #include -RCSID("$Header: /cvs/openafs/src/lwp/lwp.c,v 1.27.2.13 2008/03/13 13:42:31 shadow Exp $"); +RCSID("$Header: /cvs/openafs/src/lwp/lwp.c,v 1.34.2.6 2008/03/13 13:42:19 shadow Exp $"); #include #include diff --git a/src/lwp/lwp_elf.h b/src/lwp/lwp_elf.h index b646c5ccc..18a5d0970 100644 --- a/src/lwp/lwp_elf.h +++ b/src/lwp/lwp_elf.h @@ -35,7 +35,7 @@ * This file is mis-named. It is used by both a.out and elf platforms. * It either adds the leading underscore or not as needed. * - * $Id: lwp_elf.h,v 1.3.2.2 2004/12/07 22:27:16 shadow Exp $ + * $Id: lwp_elf.h,v 1.8 2004/12/07 22:26:46 shadow Exp $ */ #ifndef _C_LABEL diff --git a/src/lwp/lwp_nt.c b/src/lwp/lwp_nt.c index 8483afe60..d8a25fe3b 100644 --- a/src/lwp/lwp_nt.c +++ b/src/lwp/lwp_nt.c @@ -19,7 +19,7 @@ #include #include -RCSID("$Header: /cvs/openafs/src/lwp/lwp_nt.c,v 1.7 2003/12/07 22:49:33 jaltman Exp $"); +RCSID("$Header: /cvs/openafs/src/lwp/lwp_nt.c,v 1.8 2005/11/05 06:48:12 jaltman Exp $"); #ifdef AFS_NT40_ENV #include @@ -44,7 +44,7 @@ char lwp_debug = 0; #ifdef DEBUG #define Debug(level, msg)\ if (lwp_debug && lwp_debug >= level) {\ - printf("***LWP (0x%x): ", lwp_cpptr);\ + printf("***LWP (0x%p): ", lwp_cpptr);\ printf msg;\ putchar('\n');\ } @@ -178,7 +178,7 @@ int LWP_InitializeProcessSupport(int priority, PROCESS *pid) "Main Process [created by LWP]"); lwp_cpptr = pcb; - Debug(10, ("Init: Insert 0x%x into runnable at priority %d\n", pcb, priority)) + Debug(10, ("Init: Insert 0x%p into runnable at priority %d\n", pcb, priority)) insert(pcb, &runnable[priority]); if ( ( value = getenv("AFS_LWP_STACK_SIZE")) == NULL ) @@ -236,10 +236,10 @@ int LWP_CreateProcess(int (*funP)(), int stacksize, int priority, void *argP, free((void*)pcb); return LWP_EINIT; } - Debug(0, ("Create: pcb=0x%x, funP=0x%x, argP=0x%x\n", pcb, funP, argP)) + Debug(0, ("Create: pcb=0x%p, funP=0x%p, argP=0x%p\n", pcb, funP, argP)) /* Fiber is now created, so fill in PCB */ Initialize_PCB(pcb, priority, stacksize, funP, argP, name); - Debug(10, ("Create: Insert 0x%x into runnable at priority %d\n", pcb, priority)) + Debug(10, ("Create: Insert 0x%p into runnable at priority %d\n", pcb, priority)) insert(pcb, &runnable[priority]); LWPANCHOR.processcnt++; @@ -284,7 +284,7 @@ int LWP_QSignal(PROCESS pid) { if (pid->status == QWAITING) { pid->status = READY; - Debug(10, ("QSignal: Insert 0x%x into runnable at priority %d\n", pid, pid->priority)) + Debug(10, ("QSignal: Insert 0x%p into runnable at priority %d\n", pid, pid->priority)) insert(pid, &runnable[pid->priority]); return LWP_SUCCESS; } @@ -355,7 +355,7 @@ static int Internal_Signal(char *event) int rc = LWP_ENOWAIT; int i; - Debug(0, ("Entered Internal_Signal [event id 0x%x]", event)) + Debug(0, ("Entered Internal_Signal [event id 0x%p]", event)) if (!lwp_init) return LWP_EINIT; if (event == NULL) return LWP_EBADEVENT; for_all_elts(temp, blocked, { @@ -364,7 +364,7 @@ static int Internal_Signal(char *event) if (temp -> eventlist[i] == event) { temp -> eventlist[i] = NULL; rc = LWP_SUCCESS; - Debug(0, ("Signal satisfied for PCB 0x%x", temp)) + Debug(0, ("Signal satisfied for PCB 0x%p", temp)) if (--temp->waitcnt == 0) { temp -> status = READY; temp -> wakevent = i+1; @@ -505,7 +505,7 @@ static VOID WINAPI Enter_LWP(PVOID fiberData) /* next lines are new..... */ lwp_cpptr = pcb; - Debug(2, ("Enter_LWP: pcb=0x%x, funP=0x%x, argP=0x%x\n", pcb, pcb->funP, pcb->argP)) + Debug(2, ("Enter_LWP: pcb=0x%p, funP=0x%p, argP=0x%p\n", pcb, pcb->funP, pcb->argP)) (*pcb->funP)(pcb->argP); @@ -529,10 +529,10 @@ static void Dump_One_Process(PROCESS pid) { int i; - printf("***LWP: Process Control Block at 0x%x\n", pid); + printf("***LWP: Process Control Block at 0x%p\n", pid); printf("***LWP: Name: %s\n", pid->name); if (pid->funP != NULL) - printf("***LWP: Initial entry point: 0x%x\n", pid->funP); + printf("***LWP: Initial entry point: 0x%p\n", pid->funP); switch (pid->status) { case READY: printf("READY"); break; case WAITING: printf("WAITING"); break; @@ -540,7 +540,7 @@ static void Dump_One_Process(PROCESS pid) default: printf("unknown"); } putchar('\n'); - printf("***LWP: Priority: %d \tInitial parameter: 0x%x\n", + printf("***LWP: Priority: %d \tInitial parameter: 0x%p\n", pid->priority, pid->argP); if (pid->stacksize != 0) { printf("***LWP: Stacksize: %d\n", pid->stacksize); @@ -549,7 +549,7 @@ static void Dump_One_Process(PROCESS pid) printf("***LWP: Number of events outstanding: %d\n", pid->waitcnt); printf("***LWP: Event id list:"); for (i=0;ieventcnt;i++) - printf(" 0x%x", pid->eventlist[i]); + printf(" 0x%p", pid->eventlist[i]); putchar('\n'); } if (pid->wakevent>0) @@ -600,7 +600,7 @@ static void Dispatcher(void) #ifdef DEBUG if (LWP_TraceProcesses > 0) - printf("Dispatch %d [PCB at 0x%x] \"%s\"\n", ++dispatch_count, + printf("Dispatch %d [PCB at 0x%p] \"%s\"\n", ++dispatch_count, runnable[i].head, runnable[i].head->name); #endif diff --git a/src/lwp/preempt.c b/src/lwp/preempt.c index 63bc50a2e..d3ae2cb9e 100644 --- a/src/lwp/preempt.c +++ b/src/lwp/preempt.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/preempt.c,v 1.16.2.2 2008/03/10 22:35:35 shadow Exp $"); + ("$Header: /cvs/openafs/src/lwp/preempt.c,v 1.17.4.1 2008/03/10 22:32:33 shadow Exp $"); #include "lwp.h" diff --git a/src/lwp/process.amd64.s b/src/lwp/process.amd64.s index e33dfc3e4..5e59747c6 100644 --- a/src/lwp/process.amd64.s +++ b/src/lwp/process.amd64.s @@ -1,4 +1,4 @@ -/* $Id: process.amd64.s,v 1.1.2.1 2005/02/21 01:12:10 shadow Exp $ */ +/* $Id: process.amd64.s,v 1.1 2005/02/13 00:23:52 shadow Exp $ */ /* * Copyright (c) 2003,2005 Kungliga Tekniska Högskolan diff --git a/src/lwp/process.c b/src/lwp/process.c index 07e0cf8e6..302cfb4ca 100644 --- a/src/lwp/process.c +++ b/src/lwp/process.c @@ -13,7 +13,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/process.c,v 1.21.2.8 2008/03/13 13:42:31 shadow Exp $"); + ("$Header: /cvs/openafs/src/lwp/process.c,v 1.23.2.7 2008/03/13 13:42:19 shadow Exp $"); #include #include diff --git a/src/lwp/test/NTMakefile b/src/lwp/test/NTMakefile index 112d397e9..04bd561cb 100644 --- a/src/lwp/test/NTMakefile +++ b/src/lwp/test/NTMakefile @@ -17,7 +17,8 @@ LIBS = $(DESTDIR)\lib\afslwp.lib \ TESTKEY = $(OUT)\testkey.exe $(OUT)\testkey.exe: $(OUT)\test_key.obj $(LIBS) $(EXECONLINK) - + $(_VC_MANIFEST_EMBED_EXE) + $(CODESIGN_USERLAND) # test targets test testkey: $(TESTKEY) diff --git a/src/lwp/test/selsubs.c b/src/lwp/test/selsubs.c index a14a1e1c9..3fa2826e9 100644 --- a/src/lwp/test/selsubs.c +++ b/src/lwp/test/selsubs.c @@ -29,7 +29,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/test/selsubs.c,v 1.8.2.1 2006/03/20 13:41:32 jaltman Exp $"); + ("$Header: /cvs/openafs/src/lwp/test/selsubs.c,v 1.9 2006/03/20 13:41:03 jaltman Exp $"); #include "lwp.h" diff --git a/src/lwp/threadname.c b/src/lwp/threadname.c index f7384c913..2a7fad9a1 100644 --- a/src/lwp/threadname.c +++ b/src/lwp/threadname.c @@ -23,7 +23,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/threadname.c,v 1.10.2.1 2007/10/30 15:23:59 shadow Exp $"); + ("$Header: /cvs/openafs/src/lwp/threadname.c,v 1.10.14.1 2007/10/30 15:16:42 shadow Exp $"); #include diff --git a/src/lwp/timer.c b/src/lwp/timer.c index 7bcc7ae15..bd3d6f15b 100644 --- a/src/lwp/timer.c +++ b/src/lwp/timer.c @@ -22,7 +22,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/timer.c,v 1.9.2.1 2005/07/11 18:59:55 shadow Exp $"); + ("$Header: /cvs/openafs/src/lwp/timer.c,v 1.10 2005/06/18 23:20:45 shadow Exp $"); #ifdef AFS_NT40_ENV #include diff --git a/src/lwp/waitkey.c b/src/lwp/waitkey.c index 4fd1fef50..9f8656ebe 100644 --- a/src/lwp/waitkey.c +++ b/src/lwp/waitkey.c @@ -23,7 +23,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/lwp/waitkey.c,v 1.13.2.1 2007/10/30 15:23:59 shadow Exp $"); + ("$Header: /cvs/openafs/src/lwp/waitkey.c,v 1.13.14.1 2007/10/30 15:16:42 shadow Exp $"); #include #include diff --git a/src/ntbuild.bat b/src/ntbuild.bat index 846b6591f..a7e01a2bf 100755 --- a/src/ntbuild.bat +++ b/src/ntbuild.bat @@ -39,7 +39,7 @@ REM "1200" for VC6 REM "1300" for VC7 (.NET) REM "1310" for .NET 2003 REM "1400" for VC8 -set AFSVER_CL=1310 +set AFSVER_CL=1400 REM Location of Microsoft Visual C++ development folder (8.3 short name) set MSVCDIR=c:\progra~1\micros~2\vc98 @@ -47,11 +47,11 @@ set MSVCDIR=c:\progra~1\micros~2\vc98 REM Location of Microsoft Platform SDK (8.3 short name) set MSSDKDIR=c:\progra~1\micros~4 -REM Location of npapi.h (from DDK or Platform SDK samples - 8.3 short name) +REM Location of WDK/DDK (8.3 short name) set NTDDKDIR=c:\progra~1\micros~5 -REM Location of netmpr.h/netspi.h (from Windows 95/98 DDK - 8.3 short name) -SET W9XDDKDIR=c:\progra~1\micros~6 +REM Location of Microsoft IDN Normalization SDK +set MSIDNNLS=C:\progra~1\MI5913~1 REM ######################################################################## REM NTMakefile optional definitions: @@ -113,7 +113,7 @@ REM AFSDEV_BIN = default build binary directories set AFSDEV_BUILDTYPE=%AFSBLD_TYPE% -set AFSDEV_INCLUDE=%MSSDKDIR%\include;%MSVCDIR%\include +set AFSDEV_INCLUDE=%MSSDKDIR%\include;%MSVCDIR%\include;%MSIDNNLS%\include IF "%AFSVER_CL%" == "1400" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include IF "%AFSVER_CL%" == "1310" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include IF "%AFSVER_CL%" == "1300" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include diff --git a/src/ntp/.cvsignore b/src/ntp/.cvsignore deleted file mode 100644 index c6c769e38..000000000 --- a/src/ntp/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -AFS_component_version_number.c -Makefile diff --git a/src/null/null.c b/src/null/null.c index f33d44cf0..865377533 100644 --- a/src/null/null.c +++ b/src/null/null.c @@ -20,5 +20,4 @@ main() * Shortest routine in history. */ - return 0; } /*main */ diff --git a/src/package/update.c b/src/package/update.c index 0e74e095d..08136bd48 100644 --- a/src/package/update.c +++ b/src/package/update.c @@ -382,8 +382,9 @@ dochtim(CTREEPTR np, char *path) tm[0].tv_usec = tm[1].tv_usec = 0; if (!opt_silent) { char *date; + time_t mtime = np->mtime; - date = ctime((time_t *) & np->mtime); + date = ctime(&mtime); date[24] = 0; loudonly_message("utimes %s [%s]", path, date); } diff --git a/src/packaging/Debian/.cvsignore b/src/packaging/Debian/.cvsignore new file mode 100644 index 000000000..de7475d88 --- /dev/null +++ b/src/packaging/Debian/.cvsignore @@ -0,0 +1 @@ +rules diff --git a/src/packaging/Debian/CellServDB b/src/packaging/Debian/CellServDB new file mode 100644 index 000000000..79a2c23ff --- /dev/null +++ b/src/packaging/Debian/CellServDB @@ -0,0 +1,607 @@ +>grand.central.org #GCO Public CellServDB 25 Oct 2007 +18.92.0.108 #grand-opening.mit.edu +128.2.203.61 #penn.central.org +130.237.48.87 #andrew.e.kth.se +>wu-wien.ac.at #University of Economics, Vienna, Austria +137.208.3.33 #goya.wu-wien.ac.at +137.208.7.57 #caravaggio.wu-wien.ac.at +137.208.127.57 #vermeer.wu-wien.ac.at +>hephy.at #hephy-vienna +193.170.243.10 #mowgli.oeaw.ac.at +193.170.243.12 #baloo.oeaw.ac.at +193.170.243.14 #akela.oeaw.ac.at +>cgv.tugraz.at #CGV cell +129.27.224.133 #phobos.cgv.tugraz.at +129.27.224.134 #deimos.cgv.tugraz.at +129.27.224.210 #trinculo.cgv.tugraz.at +>itp.tugraz.at #Institute of Theoretical and Computational Physics, TU Graz, Aus +129.27.161.7 #faepafs1.tu-graz.ac.at +129.27.161.15 #faepafs2.tu-graz.ac.at +129.27.161.114 #faepafs3.tu-graz.ac.at +>sums.math.mcgill.ca #Society of Undergraduate Mathematics Students of McGill Universi +132.216.24.122 #germain.sums.math.mcgill.ca +132.216.24.125 #turing.sums.math.mcgill.ca +>cern.ch #European Laboratory for Particle Physics, Geneva +137.138.128.148 #afsdb1.cern.ch +137.138.246.50 #afsdb3.cern.ch +137.138.246.51 #afsdb2.cern.ch +>ams.cern.ch #AMS Experiment +137.138.188.185 #ams.cern.ch +137.138.199.58 #pcamsf4.cern.ch +>epfl.ch #Swiss Federal Institute of Technology at Lausanne +128.178.109.111 #kd1.epfl.ch +128.178.109.112 #kd2.epfl.ch +128.178.109.113 #kd3.epfl.ch +>ethz.ch #Swiss Federal Inst. of Tech. - Zurich, Switzerland +129.132.97.19 #amalthea.ethz.ch +129.132.97.27 #nethzafs-001.ethz.ch +129.132.115.3 #himalia.ethz.ch +129.132.115.37 #nethzafs-005.ethz.ch +129.132.115.38 #nethzafs-006.ethz.ch +>psi.ch #Paul Scherrer Institut - Villigen, Switzerland +129.129.190.140 #afs00.psi.ch +129.129.190.141 #afs01.psi.ch +129.129.190.142 #afs02.psi.ch +>extundo.com #Simon Josefsson's cell +195.42.214.241 #slipsten.extundo.com +>membrain.com #membrain.com +66.93.118.125 #stormy +130.85.24.11 #weasel +130.85.24.13 #straykitten +>setfilepointer.com #SetFilePointer.com +63.224.10.2 #hamlet.SetFilePointer.com +63.224.10.4 #troilus.SetFilePointer.com +>sodre.cx #Sodre.cx +128.8.140.165 #greed.sodre.cx +>desy.de #Deutsches Elektronen-Synchrotron +131.169.40.62 #vayu.desy.de +131.169.244.60 #solar00.desy.de +>gppc.de #GPP Chemnitz mbH +213.187.92.33 #gpp1.gppc.de +213.187.92.34 #paulchen.gppc.de +213.187.92.35 #lotus.gppc.de +>cms.hu-berlin.de #Humboldt University Berlin +141.20.1.65 #commodus.cms.hu-berlin.de +141.20.1.66 #faustinus.cms.hu-berlin.de +141.20.1.67 #marcellus.cms.hu-berlin.de +>ifh.de #DESY Zeuthen +141.34.22.10 #romulus.ifh.de +141.34.22.11 #remus.ifh.de +141.34.22.29 #hekate.ifh.de +>lrz-muenchen.de #Leibniz Computing Centre, Germany +129.187.10.36 #afs1.lrz-muenchen.de +129.187.10.56 #afs3.lrz-muenchen.de +129.187.10.57 #afs2.lrz-muenchen.de +>ipp-garching.mpg.de #Institut fuer Plasmaphysik +130.183.9.5 #afs-db1.rzg.mpg.de +130.183.100.10 #afs-db2.aug.ipp-garching.mpg.de +130.183.100.23 #afs-db3.aug.ipp-garching.mpg.de +>mpe.mpg.de #MPE cell +130.183.130.7 #irafs1.mpe-garching.mpg.de +130.183.134.20 #irafs2.mpe-garching.mpg.de +>i1.informatik.rwth-aachen.de #Informatik I, RWTH Aachen +137.226.244.79 #remus.informatik.rwth-aachen.de +>tu-bs.de #Technical University of Braunschweig, Germany +134.169.1.1 #rzafs1.rz.tu-bs.de +134.169.1.5 #rzafs2.rz.tu-bs.de +134.169.1.6 #rzafs3.rz.tu-bs.de +>tu-chemnitz.de #Technische Universitaet Chemnitz, Germany +134.109.2.1 #zuse.hrz.tu-chemnitz.de +134.109.2.15 #phoenix.hrz.tu-chemnitz.de +134.109.200.7 #aetius.hrz.tu-chemnitz.de +>e18.ph.tum.de #Experimental Physics, TU Munich, Germany +129.187.154.223 #hamlet.e18.physik.tu-muenchen.de +>uni-bonn.de #University of Bonn, Computing Center +131.220.14.198 #work15-eth.rhrz.uni-bonn.de +131.220.14.205 #node05.rhrz.uni-bonn.de +131.220.15.197 #afs-db1.rhrz.uni-bonn.de +>atlass01.physik.uni-bonn.de #Bonn ATLAS +131.220.165.43 #atlass01.physik.uni-bonn.de +>uni-freiburg.de #Albert-Ludwigs-Universitat Freiburg +132.230.6.235 #sv6.ruf.uni-freiburg.de +132.230.6.236 #sv7.ruf.uni-freiburg.de +132.230.6.237 #sv8.ruf.uni-freiburg.de +>physik.uni-freiburg.de #institute of physics, university Freiburg, Germany +132.230.77.16 #hepafs.physik.uni-freiburg.de +>urz.uni-heidelberg.de #Uni Heidelberg (Rechenzentrum) +129.206.119.10 #afsdb.urz.uni-heidelberg.de +129.206.119.16 #afsdb1.urz.uni-heidelberg.de +129.206.119.17 #afsdb2.urz.uni-heidelberg.de +>uni-hohenheim.de #University of Hohenheim +144.41.2.2 #rs13.serv.uni-hohenheim.de +144.41.2.3 #rs14.serv.uni-hohenheim.de +144.41.2.4 #rs15.serv.uni-hohenheim.de +>rz.uni-jena.de #Rechenzentrum University of Jena, Germany +141.35.2.180 #afs00.rz.uni-jena.de +141.35.2.181 #afs01.rz.uni-jena.de +141.35.2.182 #afs02.rz.uni-jena.de +>impetus.uni-koeln.de #Univ. of Cologne - Geophysics/Meteorology Inst. +134.95.80.39 #forano.meteo.uni-koeln.de +>meteo.uni-koeln.de #Univ. of Cologne - Inst. for Geophysics & Meteorology +134.95.144.22 #afs1.meteo.uni-koeln.de +134.95.144.24 #afs2.meteo.uni-koeln.de +>rrz.uni-koeln.de #University of Cologne - Reg Comp Center +134.95.19.3 #afsdb1.rrz.uni-koeln.de +134.95.19.10 #lyra.rrz.uni-koeln.de +134.95.67.97 #afs.thp.uni-koeln.de +134.95.141.243 #agrippina.rrz.uni-koeln.de +>physik.uni-mainz.de #institute of physics, university Mainz, Germany +134.93.130.93 #hardy.physik.uni-mainz.de +>uni-mannheim.de #Uni Mannheim (Rechenzentrum) +134.155.97.204 #afsdb1.uni-mannheim.de +134.155.97.205 #afsdb2.uni-mannheim.de +134.155.97.206 #afsdb3.uni-mannheim.de +>uni-paderborn.de #University of Paderborn, Germany +131.234.137.10 #afsdb1.uni-paderborn.de +131.234.137.11 #afsdb2.uni-paderborn.de +131.234.137.12 #afsdb3.uni-paderborn.de +>physik.uni-wuppertal.de #Physics department of Bergische Universität Wuppertal +132.195.104.3 #afs1.physik.uni-wuppertal.de +132.195.104.230 #afs2.physik.uni-wuppertal.de +>s-et.aau.dk #Aalborg Univ., The Student Society, Denmark +130.225.196.22 #afs.s-et.aau.dk +>ies.auc.dk #Aalborg Univ., Inst. of Electronic Systems, Denmark +130.225.51.73 #afsdb1.kom.auc.dk +130.225.51.74 #afsdb2.kom.auc.dk +130.225.51.85 #afsdb3.kom.auc.dk +>asu.edu #Arizona State University +129.219.10.69 #authen2.asu.edu +129.219.10.70 #authen1.asu.edu +129.219.10.72 #authen3.asu.edu +129.219.100.16 #authen4.asu.edu +>eecs.berkeley.edu #University of California, Berkeley - EECS Dept. +128.32.139.34 #greed.eecs.berkeley.edu +128.32.139.35 #gluttony.eecs.berkeley.edu +169.229.60.112 #envy.eecs.berkeley.edu +>hep.caltech.edu #Caltech High Energy Physics +131.215.116.20 #afs.hep.caltech.edu +>clarkson.edu #Clarkson University, Potsdam, New York USA +128.153.1.111 #arthur.clarkson.edu +128.153.9.111 #lancelot.clarkson.edu +128.153.17.111 #uther.clarkson.edu +>andrew.cmu.edu #Carnegie Mellon University - Computing Services Cell +128.2.10.2 #vice2.fs.andrew.cmu.edu +128.2.10.7 #vice7.fs.andrew.cmu.edu +128.2.10.11 #vice11.fs.andrew.cmu.edu +128.2.10.28 #vice28.fs.andrew.cmu.edu +128.2.32.44 #new-vice12.fs.andrew.cmu.edu +>club.cc.cmu.edu #Carnegie Mellon University Computer Club +128.2.204.149 #barium.club.cc.cmu.edu +128.237.157.11 #sodium.club.cc.cmu.edu +128.237.157.13 #potassium.club.cc.cmu.edu +>chem.cmu.edu #Carnegie Mellon University - Chemistry Dept. +128.2.40.134 #afs.chem.cmu.edu +128.2.40.140 #afs2.chem.cmu.edu +>cs.cmu.edu #Carnegie Mellon University - School of Comp. Sci. +128.2.184.215 #pumpkin.srv.cs.cmu.edu +128.2.201.46 #strawberry.srv.cs.cmu.edu +128.2.201.48 #cherry.srv.cs.cmu.edu +>ece.cmu.edu #Carnegie Mellon University - Elec. Comp. Eng. Dept. +128.2.129.7 #porok.ece.cmu.edu +128.2.129.8 #vicio.ece.cmu.edu +128.2.129.9 #e-xing.ece.cmu.edu +>scotch.ece.cmu.edu #CMU ECE CALCM research group +128.2.134.82 #lagavulin.ece.cmu.edu +>qatar.cmu.edu #Carnegie Mellon University - Qatar +86.36.46.6 #afs1.qatar.cmu.edu +86.36.46.7 #afs2.qatar.cmu.edu +>sbp.ri.cmu.edu #Carnegie Mellon University - Sensor Based Planning Lab +128.2.179.12 #nihao.sbp.ri.cmu.edu +128.2.179.113 #youtheman.sbp.ri.cmu.edu +>cnf.cornell.edu #CNF +128.253.198.9 #hole.cnf.cornell.edu +128.253.198.27 #smoke.cnf.cornell.edu +>msc.cornell.edu #Cornell University Materials Science Center +128.84.231.242 #miranda.ccmr.cornell.edu +128.84.241.35 #co.ccmr.cornell.edu +128.84.249.78 #dax.ccmr.cornell.edu +>dbic.dartmouth.edu #Dartmouth Brain Imaging Center +129.170.30.143 #dbicafs1.dartmouth.edu +129.170.30.144 #dbicafs2.dartmouth.edu +129.170.30.145 #dbicafs3.dartmouth.edu +>northstar.dartmouth.edu #Dartmouth College Research Computing +129.170.16.22 #halley.dartmouth.edu +129.170.16.42 #oort.dartmouth.edu +129.170.16.43 #cygnusx1.dartmouth.edu +>cs.fhm.edu #Department Computer Science Munich University Of Applied Science +129.187.208.2 #srv1.informatik.fh-muenchen.de +>eecs.harvard.edu #Harvard - EECS +140.247.60.64 #lefkada.eecs.harvard.edu +140.247.60.83 #corfu.eecs.harvard.edu +>iastate.edu #Iowa State University +129.186.1.243 #afsdb-1.iastate.edu +129.186.6.243 #afsdb-2.iastate.edu +129.186.142.243 #afsdb-3.iastate.edu +>athena.mit.edu #MIT/Athena cell +18.7.1.66 #paris.mit.edu. +18.7.1.74 #chimera.mit.edu. +18.158.0.37 #prill.mit.edu. +>dev.mit.edu #MIT/IS Development cell +18.7.1.70 #wham.mit.edu. +18.92.1.219 #click.mit.edu. +18.92.1.220 #whirr.mit.edu. +>net.mit.edu #MIT/Network Group cell +18.7.7.73 #gracie.mit.edu +18.7.21.95 #george.mit.edu +>sipb.mit.edu #MIT/SIPB cell +18.181.0.19 #reynelda.mit.edu. +18.181.0.22 #rosebud.mit.edu. +18.181.0.23 #ronald-ann.mit.edu. +>soap.mit.edu #MIT School Of Architecture & Planning +18.89.1.204 #crypt.mit.edu +18.89.1.209 #grotto.mit.edu +18.89.2.156 #ac.mit.edu +>msu.edu #Michigan State University Main Cell +35.9.7.10 #afsdb0.cl.msu.edu +>nd.edu #University of Notre Dame +129.74.223.17 #john.helios.nd.edu +129.74.223.33 #lizardo.helios.nd.edu +129.74.223.65 #buckaroo.helios.nd.edu +>pitt.edu #University of Pittsburgh +136.142.8.15 #afs09.srv.cis.pitt.edu +136.142.8.20 #afs10.srv.cis.pitt.edu +136.142.8.21 #afs11.srv.cis.pitt.edu +>cs.pitt.edu #University of Pittsburgh - Computer Science +130.49.220.11 #afs01.cs.pitt.edu +130.49.220.12 #afs02.cs.pitt.edu +130.49.220.13 #afs03.cs.pitt.edu +>psc.edu #PSC (Pittsburgh Supercomputing Center) +128.182.59.182 #shaggy.psc.edu +128.182.66.184 #velma.psc.edu +128.182.66.185 #daphne.psc.edu +>scoobydoo.psc.edu #PSC Test Cell +128.182.59.181 #scooby.psc.edu +>cede.psu.edu #Penn State - Center for Engr. Design & Entrepeneurship +146.186.218.10 #greenly.cede.psu.edu +146.186.218.60 #b50.cede.psu.edu +146.186.218.246 #stalin.cede.psu.edu +>rose-hulman.edu #Rose-Hulman Institute of Technology +137.112.7.11 #afs1.rose-hulman.edu +137.112.7.12 #afs2.rose-hulman.edu +137.112.7.13 #afs3.rose-hulman.edu +>cs.rose-hulman.edu #Rose-Hulman CS Department +137.112.40.10 #galaxy.cs.rose-hulman.edu +>rpi.edu #Rensselaer Polytechnic Institute +128.113.22.11 #saul.server.rpi.edu +128.113.22.12 #joab.server.rpi.edu +128.113.22.13 #korah.server.rpi.edu +128.113.22.14 #achan.server.rpi.edu +>hep.sc.edu #University of South Carolina, Dept. of Physics +129.252.78.77 #cpeven.physics.sc.edu +>cs.stanford.edu #Stanford University Computer Science Department +171.64.64.10 #cs-afs-1.Stanford.EDU +171.64.64.66 #cs-afs-2.stanford.edu +171.64.64.69 #cs-afs-3.stanford.edu +>ir.stanford.edu #Stanford University +171.64.7.222 #afsdb1.stanford.edu +171.64.7.234 #afsdb2.stanford.edu +171.64.7.246 #afsdb3.stanford.edu +>slac.stanford.edu #Stanford Linear Accelerator Center +134.79.18.25 #afsdb1.slac.stanford.edu +134.79.18.26 #afsdb2.slac.stanford.edu +134.79.18.27 #afsdb3.slac.stanford.edu +>ucdavis.edu #University of California at Davis +169.237.104.100 #afs1.ucdavis.edu +169.237.235.176 #afs2.ucdavis.edu +169.237.247.91 #afs3.ucdavis.edu +>home.ucdavis.edu #University of California at Davis home directories +169.237.105.91 #home1.ucdavis.edu +169.237.105.92 #home2.ucdavis.edu +169.237.105.93 #home3.ucdavis.edu +>physics.ucsb.edu #UC Santa Barbara, Physics Dept +128.111.18.161 #ledzeppelin.physics.ucsb.edu +>cats.ucsc.edu #UC Santa Cruz, Comp and Tech Services, California U.S.A +128.114.123.14 #elan.ucsc.edu +128.114.123.15 #ichabod.ucsc.edu +128.114.123.18 #maneki.ucsc.edu +>acm.uiuc.edu #ACM at the University of Illinois +128.174.251.8 #alnitak.acm.uiuc.edu +128.174.251.9 #alnilam.acm.uiuc.edu +128.174.251.10 #mintaka.acm.uiuc.edu +>illigal.uiuc.edu #Illinois Genetic Algorithms Labaratory +128.174.193.200 #ial.illigal.uiuc.edu +128.174.193.201 #cac.illigal.uiuc.edu +128.174.193.202 #gcs.illigal.uiuc.edu +>ncsa.uiuc.edu #University of Illinois +141.142.3.5 #congo.ncsa.uiuc.edu +141.142.3.8 #nile.ncsa.uiuc.edu +141.142.3.9 #kaskaskia.ncsa.uiuc.edu +>umbc.edu #University of Maryland, Baltimore County +130.85.24.23 #db2.afs.umbc.edu +130.85.24.87 #db3.afs.umbc.edu +130.85.24.101 #db1.afs.umbc.edu +>glue.umd.edu #University of Maryland - Project Glue +128.8.70.11 #olmec.umd.edu +128.8.236.4 #egypt.umd.edu +128.8.236.230 #babylon.umd.edu +>wam.umd.edu #University of Maryland Network WAM Project +128.8.70.9 #csc-srv.wam.umd.edu +128.8.236.5 #avw-srv.wam.umd.edu +128.8.236.231 #ptx-srv.wam.umd.edu +>umich.edu #University of Michigan - Campus +141.211.1.32 #fear.ifs.umich.edu +141.211.1.33 #surprise.ifs.umich.edu +141.211.1.34 #ruthless.ifs.umich.edu +>atlas.umich.edu #ATLAS group cell in physics at University of Michigan +141.211.43.102 #linat02.grid.umich.edu +141.211.43.103 #linat03.grid.umich.edu +141.211.43.104 #linat04.grid.umich.edu +>citi.umich.edu #Center for Information Technology Integration +141.211.133.5 #babylon.citi.umich.edu +>lsa.umich.edu #University of Michigan - College of LS&A +141.211.211.53 #gerow.lsa.umich.edu +141.211.211.72 #collines.lsa.umich.edu +141.211.211.153 #hodges.lsa.umich.edu +>sph.umich.edu #University of Michigan -- School of Public Health +141.211.51.137 #afssph7.sph.umich.edu +141.211.51.139 #afssph0.sph.umich.edu +141.211.51.142 #afssph6.sph.umich.edu +>isis.unc.edu #Univ. of NC at Chapel Hill - ITS +152.2.1.5 #db0.isis.unc.edu +152.2.1.6 #db1.isis.unc.edu +152.2.1.7 #db2.isis.unc.edu +>physics.unc.edu #Univ. of NC at Chapel Hill, Dept. of Physics +152.2.4.1 #who.physics.unc.edu +152.2.4.3 #what.physics.unc.edu +152.2.4.5 #when.physics.unc.edu +>uncc.edu #University of NC at Charlotte Mosaic AFS Cell +152.15.10.70 #as-sm1.uncc.edu +152.15.93.186 #as-ece1.uncc.edu +152.15.181.175 #as-me1.uncc.edu +>eng.utah.edu #University of Utah - Engineering +155.98.111.9 #lenny.eng.utah.edu +155.98.111.10 #carl.eng.utah.edu +>cs.uwm.edu #University of Wisconsin--Milwaukee +129.89.38.124 #solomons.cs.uwm.edu +>cs.wisc.edu #Univ. of Wisconsin-Madison, Computer Sciences Dept. +128.105.132.14 #timon.cs.wisc.edu +128.105.132.15 #pumbaa.cs.wisc.edu +128.105.132.16 #zazu.cs.wisc.edu +>engr.wisc.edu #University of Wisconsin-Madison, College of Engineering +144.92.13.14 #larry.cae.wisc.edu +144.92.13.15 #curly.cae.wisc.edu +144.92.13.16 #moe.cae.wisc.edu +>hep.wisc.edu #University of Wisconsin -- High Energy Physics +128.104.28.219 #anise.hep.wisc.edu +>physics.wisc.edu #Univ. of Wisconsin-Madison, Physics Department +128.104.160.13 #kendra.physics.wisc.edu +128.104.160.14 #fray.physics.wisc.edu +128.104.160.15 #buffy.physics.wisc.edu +>ciemat.es #Ciemat, Madrid, Spain +130.206.11.42 #afsdb1.ciemat.es +130.206.11.217 #afsdb2.ciemat.es +130.206.11.247 #afsdb3.ciemat.es +>ifca.unican.es #Instituto de Fisica de Cantabria (IFCA), Santander, Spain +193.144.209.20 #gridwall.ifca.unican.es +>ific.uv.es #Instituto de Fisica Corpuscular, Valencia, Spain +147.156.163.11 #alpha.ific.uv.es +>biocenter.helsinki.fi #University of Helsinki, Institute of Biotechnology +128.214.58.174 #afsdb1.biocenter.helsinki.fi +128.214.88.114 #afsdb2.biocenter.helsinki.fi +>dapnia.saclay.cea.fr #CEA DAPNIA +132.166.32.7 #dphrsg.saclay.cea.fr +132.166.32.12 #dphrsl.saclay.cea.fr +>grif.fr #GRIF cell +192.54.208.18 #node03.datagrid.cea.fr +>in2p3.fr #IN2P3 production cell +134.158.232.11 #ccafsdb1.in2p3.fr +134.158.232.12 #ccafsdb2.in2p3.fr +134.158.232.13 #ccafsdb3.in2p3.fr +>mcc.ac.gb #University of Manchester +130.88.203.41 #nevis.mc.man.ac.uk +130.88.203.144 #eryri.mc.man.ac.uk +130.88.203.145 #scafell.mc.man.ac.uk +>anl.gov #Argonne National Laboratory +146.137.96.33 #arteus.it.anl.gov +146.137.162.88 #agamemnon.it.anl.gov +146.137.194.80 #antenor.it.anl.gov +>rhic.bnl.gov #Relativistic Heavy Ion Collider +130.199.6.51 #rafs03.rcf.bnl.gov +130.199.6.52 #rafs02.rcf.bnl.gov +130.199.6.69 #rafs01.rcf.bnl.gov +>usatlas.bnl.gov #US Atlas Tier 1 Facility at BNL +130.199.48.32 #aafs01.usatlas.bnl.gov +130.199.48.33 #aafs02.usatlas.bnl.gov +130.199.48.34 #aafs03.usatlas.bnl.gov +>fnal.gov #Fermi National Acclerator Laboratory +131.225.68.1 #fsus01.fnal.gov +131.225.68.4 #fsus03.fnal.gov +131.225.68.14 #fsus04.fnal.gov +>ic-afs.arc.nasa.gov #Code IC, Ames Research Center +128.102.105.62 #udanax.arc.nasa.gov +>jpl.nasa.gov #Jet Propulsion Laboratory +137.78.160.21 #afsdb08.jpl.nasa.gov +137.78.160.22 #afsdb09.jpl.nasa.gov +137.78.160.23 #afsdb10.jpl.nasa.gov +>nersc.gov #National Energy Research Supercomputer Center +128.55.128.250 #mars.nersc.gov +128.55.128.252 #alfred.nersc.gov +128.55.128.254 #lurch.nersc.gov +>bme.hu #Budapest University of Technology and Economics +152.66.241.6 #afs.iit.bme.hu +>kfki.hu #Research Institute for Nuclear and Particle Physics - Budapest,H +148.6.8.14 #afs.kfki.hu +>caspur.it #CASPUR Inter-University Computing Consortium, Rome +193.204.5.45 #pomodoro.caspur.it +193.204.5.46 #banana.caspur.it +193.204.5.50 #maslo.caspur.it +>enea.it #ENEA New Tech. Energy & Environment Agency, Italy +192.107.54.5 #aixfs.frascati.enea.it +192.107.54.11 #rs2ced.frascati.enea.it +192.107.54.12 #43p.frascati.enea.it +192.107.61.235 #serverinfo02.bologna.enea.it +192.107.71.6 #glauco.casaccia.enea.it +192.107.96.233 #riscdb.trisaia.enea.it +>fusione.it #Assoz. FUSIONE/Euratom, ENEA, Frascati-Italy +192.107.90.2 #fusafs1.frascati.enea.it +192.107.90.3 #fusafs2.frascati.enea.it +192.107.90.4 #fusafs3.frascati.enea.it +>icemb.it #ICEMB, Universita' La Sapienza - Rome - Italy +193.204.6.130 #icembfs.caspur.it +>infn.it #Istituto Nazionale di Fisica Nucleare (INFN), Italia +131.154.1.7 #afscnaf.infn.it +141.108.26.75 #afsrm1.roma1.infn.it +192.84.134.75 #afsna.na.infn.it +>ba.infn.it #INFN, Sezione di Bari +193.206.185.235 #baafsserver.ba.infn.it +193.206.185.236 #debsrv.ba.infn.it +>kloe.infn.it #INFN, KLOE experiment at Laboratori di Frascati +192.135.25.111 #kloeafs1.lnf.infn.it +192.135.25.112 #kloeafs2.lnf.infn.it +>le.infn.it #INFN, Sezione di Lecce +192.84.152.40 #afs01.le.infn.it +192.84.152.148 #afs02.le.infn.it +>lnf.infn.it #INFN, Laboratori Nazionali di Frascati +193.206.84.121 #afs1.lnf.infn.it +193.206.84.122 #afs2.lnf.infn.it +193.206.84.123 #afs3.lnf.infn.it +>lngs.infn.it #INFN, Laboratori Nazionali di Gran Sasso +192.84.135.21 #rsgs05.lngs.infn.it +>pi.infn.it #INFN, Sezione di Pisa +131.114.134.26 #unknownhost.pi.infn.it +192.84.133.50 #aix1.pi.infn.it +>psm.it #Progetto San Marco, Universita' di Roma-1 +151.100.1.65 #atlante.psm.uniroma1.it +>tgrid.it #CASPUR-CILEA-CINECA Grid Cell +193.204.5.33 #cccgrid.caspur.it +>ictp.trieste.it #The Abdus Salam International Centre for Theoretical Physics (IC +140.105.16.8 #fs1.ictp.trieste.it +140.105.16.9 #fs2.ictp.trieste.it +>math.unifi.it #math.unifi.it +150.217.34.182 #xeno.math.unifi.it +>ing.uniroma1.it #Universita' La Sapienza, Fac. Ingeneria +151.100.85.253 #alfa.ing.uniroma1.it +>dia.uniroma3.it #University Roma Tre - DIA +193.204.161.79 #plm.dia.uniroma3.it +193.204.161.118 #afs.dia.uniroma3.it +>vn.uniroma3.it #University of Rome 3, Area Vasca Navale +193.204.161.136 #alfa.dia.uniroma3.it +193.204.161.137 #beta.dia.uniroma3.it +193.204.161.138 #gamma.dia.uniroma3.it +>italia #Italian public AFS cell +193.204.5.9 #afs.caspur.it +>cmf.nrl.navy.mil #Naval Research Lab - CCS +134.207.10.68 #picard.cmf.nrl.navy.mil +134.207.10.69 #riker.cmf.nrl.navy.mil +134.207.10.70 #kirk.cmf.nrl.navy.mil +>lcp.nrl.navy.mil #Naval Research Lab - Lab for Computational Physics +132.250.114.2 #afs1.lcp.nrl.navy.mil +132.250.114.4 #afs2.lcp.nrl.navy.mil +132.250.114.6 #afs3.lcp.nrl.navy.mil +>es.net #Energy Sciences Net +198.128.3.21 #fs1.es.net +198.128.3.22 #fs2.es.net +198.128.3.23 #fs3.es.net +>laroia.net #Laroia Networks +66.66.102.254 #supercore.laroia.net +>sinenomine.net #Sine Nomine Associates +66.135.48.108 #tx2srv03.sinenomine.net +72.73.30.42 #va.sinenomine.net +>slackers.net #The Slackers' Network +199.4.150.159 #alexandria.slackers.net +>tproa.net #The People's Republic of Ames +72.13.4.23 #service-3.tproa.net +72.13.4.24 #service-4.tproa.net +72.13.4.25 #service-5.tproa.net +>nikhef.nl #The Dutch National Institute for High Energy Physics +192.16.185.26 #afs1.nikhef.nl +192.16.185.27 #afs2.nikhef.nl +>1ts.org #1TS.ORG, Cambridge, MA +69.25.196.51 #pancake.1ts.org +>acm-csuf.org #California State Univerisity Fullerton ACM +137.151.29.193 #afs1.acm-csuf.org +>bazquux.org #Baz Quux Organization +66.207.142.196 #baxquux.org +>coed.org #Adam Pennington's Cell +66.93.61.184 #vice1.coed.org +128.237.157.35 #vice3.coed.org +>dementia.org #Dementia Unlimited +128.2.12.45 #alycia.dementia.org +128.2.120.216 #meredith.dementia.org +>dsrw.org #The DSRW +65.103.82.83 #straylight.dsrw.org +65.103.82.84 #chiba.dsrw.org +65.103.82.85 #freeside.dsrw.org +>hackish.org #Hackish.org +24.167.65.213 #avatar.sys.hackish.org +128.2.120.138 #kurma.sys.hackish.org +>idahofuturetruck.org #University of Idaho hybrid vehicle development +12.18.238.210 #dsle210.fsr.net +>nimlabs.org #Nimlabs, Ink. Cell. +18.238.1.103 #olfin.nimlabs.org +18.238.1.105 #caerbanog.nimlabs.org +>nomh.org #nomh.org +204.29.154.12 #iota.nomh.org +204.29.154.32 #adversity.xi.nomh.org +>oc7.org #The OC7 Project +128.2.122.140 #knife.oc7.org +207.22.77.170 #spoon.oc7.org +>kth.se #Royal Institute of Technology, Stockholm, Sweden +130.237.32.145 #sonen.e.kth.se +130.237.48.7 #anden.e.kth.se +130.237.48.244 #fadern.e.kth.se +>hallf.kth.se #Royal Institute of Technology, HALLF +130.237.24.11 #afs1.hallf.kth.se +130.237.24.104 #afs2.hallf.kth.se +>isk.kth.se #Royal Institute of Technology, ISK +130.237.202.3 #afsdb1.isk.kth.se +130.237.209.5 #afsdb2.isk.kth.se +130.237.209.9 #afsdb3.isk.kth.se +>it.kth.se #Royal Institute of Technology, IT +130.237.212.15 #ptah.it.kth.se +130.237.212.16 #toth.it.kth.se +130.237.215.7 #isis.it.kth.se +>md.kth.se #Royal Institute of Technology, MMK +130.237.57.68 #trinity.md.kth.se +130.237.57.72 #morpheus.md.kth.se +130.237.67.230 #neo.speech.kth.se +>mech.kth.se #Royal Institute of Technology, MECH +130.237.233.142 #matterhorn.mech.kth.se +130.237.233.143 #castor.mech.kth.se +130.237.233.144 #pollux.mech.kth.se +>nada.kth.se #Royal Institute of Technology, NADA +130.237.222.20 #kosmos.nada.kth.se +130.237.223.12 #sputnik.nada.kth.se +130.237.224.78 #mir.nada.kth.se +130.237.227.23 #gagarin.nada.kth.se +130.237.228.28 #laika.nada.kth.se +>pdc.kth.se #Royal Institute of Technology, PDC +130.237.232.29 #crab.pdc.kth.se +130.237.232.112 #anna.pdc.kth.se +130.237.232.114 #hokkigai.pdc.kth.se +>stacken.kth.se #Stacken Computer Club +130.237.234.3 #milko.stacken.kth.se +130.237.234.43 #hot.stacken.kth.se +130.237.234.101 #fishburger.stacken.kth.se +>syd.kth.se #Royal Institute of Technology, KTH-Syd +130.237.83.23 #afs.haninge.kth.se +>physto.se #Physics department Stockholm University +130.237.205.36 #sysafs1.physto.se +130.237.205.72 #sysafs2.physto.se +>sanchin.se #Sanchin Consulting AB, Sweden +192.195.148.10 #sesan.sanchin.se +>su.se #Stockholm University +130.237.162.81 #afsdb1.su.se +130.237.162.82 #afsdb2.su.se +130.237.162.230 #afsdb3.su.se +>f9.ijs.si #F9, Jozef Stefan Institue +194.249.156.1 #brenta.ijs.si +>p-ng.si #Nova Gorica Polytechnic +193.2.120.2 #solkan.p-ng.si +>hep-ex.physics.metu.edu.tr #METU Department of Physics, Experimental HEP group, Ankara/Turke +144.122.31.131 #neutrino.physics.metu.edu.tr +>phy.bris.ac.uk #Bristol University - phyics +137.222.58.9 #afs1.phy.bris.ac.uk +>inf.ed.ac.uk #School of Informatics, University of Edinburgh +129.215.64.16 #afsdb0.inf.ed.ac.uk +129.215.64.17 #afsdb1.inf.ed.ac.uk +129.215.64.18 #afsdb2.inf.ed.ac.uk +>ic.ac.uk #Imperial College London +155.198.63.148 #icafs2.cc.ic.ac.uk +155.198.63.149 #icafs1.cc.ic.ac.uk +>hep.man.ac.uk #Manchester HEP +194.36.2.3 #afs1.hep.man.ac.uk +194.36.2.4 #afs2.hep.man.ac.uk +194.36.2.5 #afs3.hep.man.ac.uk +>rl.ac.uk #Rutherford Appleton Lab, England +130.246.183.164 #wallace.cc.rl.ac.uk diff --git a/src/packaging/Debian/ConfigUtils.pm b/src/packaging/Debian/ConfigUtils.pm index ee49144f5..4d35047bc 100644 --- a/src/packaging/Debian/ConfigUtils.pm +++ b/src/packaging/Debian/ConfigUtils.pm @@ -24,11 +24,3 @@ sub run ($) { } 1; -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm -openafs-dbserver: non-standard-dir-perm diff --git a/src/packaging/Debian/README.Debian b/src/packaging/Debian/README.Debian index 755fa84cb..f7b69a9ab 100644 --- a/src/packaging/Debian/README.Debian +++ b/src/packaging/Debian/README.Debian @@ -45,6 +45,21 @@ Documentation secure than the one in the OpenAFS documentation, but the OpenAFS documentation provides useful background. +Build Options + + The OpenAFS servers have been built with --enable-supergroups, which + permits nesting of PTS groups. Be aware that the PT database created by + these packages is not compatible with servers not built with + --enable-supergroups if nested PTS groups are used. In other words, if + you need the openafs-dbserver package to interoperate with ptservers + that aren't built with this option, don't use this capability. + + bosserver is built with --enable-bos-new-config. If + /etc/openafs/BosConfig.new exists when bosserver starts, it will be + renamed to /etc/openafs/BosConfig before the configuration file is + read. This allows queuing of changes to the configuration that will + take effect at the next restart. + Changes Relative to Stock OpenAFS Long-time AFS users may be confused by the directory layout. The files @@ -60,6 +75,14 @@ Changes Relative to Stock OpenAFS To distinguish between an SMP and a non-SMP kernel module package, use --append_to_version; see README.modules for more information. + The OpenAFS servers have been patched to support listing up to four + realms in /etc/openafs/server/krb.conf. Any realms listed in that file + (all on one line, space-separated) will be treated as local for + authorization decisions (in other words, the relam will be stripped off + and the unqualified principal name checked against AFS ACLs, UserList, + PTS groups, and so forth). The default OpenAFS server only supports + listing one realm in this file. + The AFS up utility is installed as afs-up, since the standard name is rather generic. @@ -74,6 +97,42 @@ Changes Relative to Stock OpenAFS The OpenAFS PAM modules have been built with pthreads rather than the standard LWP AFS libraries for compatibility with a threaded sshd. +Debugging and Bug Reporting + + The current OpenAFS installation process installs fileserver and + volserver unstripped, since backtraces and other debugging information + for those binaries are necessary to track down file server problems. + For the Debian packages, the fileserver and volserver binaries in the + openafs-fileserver package are stripped, but the debugging information + is available in the openafs-dbg package, which can be installed + separately. If it is installed, gdb will find that debugging + information automatically. + + Eventually the openafs-dbg package will contain debugging information + for all OpenAFS binaries. This is pending upstream changes to the stock + OpenAFS installation rules. + + When reporting a bug in the OpenAFS client, please include your exact + kernel version and architecture (reportbug will do this for you). Also, + if the client caused a kernel oops or BUG, be sure to include the + complete kernel output, including the lines before the oops. That's + where the OpenAFS error message, if any, will be. + + When reporting a bug in the OpenAFS file server, please include + backtrace information from a core dump, if any. If the file server is + deadlocked, you can capture a core dump using the gcore script that + comes with the gdb package. The file server is threaded, so use the + command "thread apply all backtrace" in gdb to get a complete backtrace. + It's also often useful to have the output of rxdebug 7000 at + the time of the problem and the FileLog from the file server. You can + increase the logging level of the file server with kill -TSTP (and reset + it to 0 with kill -HUP). + + You can report any bug in OpenAFS against the Debian package with + reportbug and the OpenAFS package maintainers will forward the bug + upstream as necessary. If you do want to report a bug directly + upstream, see http://www.openafs.org/ for bug reporting instructions. + PAM Authentication Any new OpenAFS cell is strongly encouraged to use Kerberos v5 for @@ -123,4 +182,4 @@ PAM Authentication the openafs-kpasswd package to get the administrative utilities for managing those Kerberos accounts. - -- Russ Allbery , Tue Dec 27 15:53:28 2005 + -- Russ Allbery , Mon, 17 Dec 2007 18:29:42 -0800 diff --git a/src/packaging/Debian/README.servers b/src/packaging/Debian/README.servers index d323215af..d92a2ae7a 100644 --- a/src/packaging/Debian/README.servers +++ b/src/packaging/Debian/README.servers @@ -19,7 +19,7 @@ Introduction traditional paths, and in the second column, the Debian paths: /usr/afs/etc /etc/openafs/server - /usr/afs/local /etc/openafs/server-local + /usr/afs/local /var/lib/openafs/local /usr/afs/db /var/lib/openafs/db /usr/afs/logs /var/log/openafs /usr/afs/bin /usr/lib/openafs @@ -66,10 +66,6 @@ Creating a New Cell all uppercase and be a domain name that you control, although neither is technically required. - Right now, for the aklog from openafs-krb5 to work, you need to - enable krb4 support (either full or nopreauth) and run krb524d. - Eventually this will no longer be necessary. - 2. It is traditional (and recommended) in AFS (and for Kerberos) to give administrators two separate Kerberos principals, one regular principal to use for regular purposes and a separate admin principal @@ -321,7 +317,17 @@ Adding Additional Servers -cmd /usr/lib/openafs/volserver \ -cmd /usr/lib/openafs/salvager -localauth - For a file server, this is all you have to do. + For a file server, this is all you have to do. The above uses the + default fileserver options, however, which are not particularly + well-tuned for modern systems. afs-newcell uses the following + parameters from Harald Barth: + + -p 23 -busyat 600 -rxpck 400 -s 1200 -l 1200 -cb 65535 + -b 240 -vc 1200 + + If you want to add any additional fileserver options, enclose + /usr/lib/openafs/fileserver and the following options in double + quotes when giving the bos create command. 4. For database servers, also install openafs-dbserver and then use bos addhost to add the new server to /etc/openafs/server/CellServDB: diff --git a/src/packaging/Debian/TODO b/src/packaging/Debian/TODO index cec5dbcb3..f5850de9d 100644 --- a/src/packaging/Debian/TODO +++ b/src/packaging/Debian/TODO @@ -10,4 +10,3 @@ appropriate kdump and the kernel module package would need to install the kdump executable, maybe in /usr/lib/openafs, named after the kernel image installed. - diff --git a/src/packaging/Debian/afs-newcell b/src/packaging/Debian/afs-newcell index 725d526b9..3aee647f3 100644 --- a/src/packaging/Debian/afs-newcell +++ b/src/packaging/Debian/afs-newcell @@ -12,6 +12,12 @@ use Socket qw(inet_ntoa); use vars qw($admin $server $requirements_met $shutdown_needed); my $rl = new Term::ReadLine('afs-newcell'); +# The default file server options are poor. Until they've been updated, use +# the following from Harald Barth; it should be an improvement for most +# people. +my $fs_options = '-p 23 -busyat 600 -rxpck 400 -s 1200 -l 1200 -cb 65535' + . ' -b 240 -vc 1200'; + =head1 NAME afs-newcell - Set up initial database server for AFS cell @@ -223,7 +229,7 @@ unwind("bos delete $server vlserver -localauth"); # Create a file server as well. run("bos create $server fs fs" - . " -cmd /usr/lib/openafs/fileserver" + . " -cmd '/usr/lib/openafs/fileserver $fs_options'" . " -cmd /usr/lib/openafs/volserver" . " -cmd /usr/lib/openafs/salvager -localauth"); unwind("bos delete $server fs -localauth"); diff --git a/src/packaging/Debian/afs.conf b/src/packaging/Debian/afs.conf index 64490a1bd..f3eeb76f3 100644 --- a/src/packaging/Debian/afs.conf +++ b/src/packaging/Debian/afs.conf @@ -56,25 +56,12 @@ VERBOSE= # Using the memory cache is not recommended. It's less stable than the disk # cache and doesn't improve performance as much as it might sound. # -# The default behavior is to pick one of the following option sets based on -# the size of the AFS cache, as follows: +# The default behavior is to let afsd automatically choose an apporpriate set +# of flags. This should produce reasonable behavior for most working sets +# provided that one is using a modern AFS client (1.4.2 or later). # -# cache < 128MB $SMALL -# 128MB < cache < 512MB $MEDIUM -# 512MB < cache < 1GB $LARGE -# 1GB < cache < 2GB $XLARGE -# 2GB < cache $XXLARGE -# -# You can override that default behavior by setting OPTIONS below. -XXLARGE="-chunksize 20 -files 80000 -dcache 10000 -stat 15000 -daemons 6 -volumes 500" -XLARGE="-chunksize 20 -files 50000 -dcache 10000 -stat 15000 -daemons 5 -volumes 250" -LARGE="-chunksize 18 -files 25000 -dcache 10000 -stat 15000 -daemons 5 -volumes 200" -MEDIUM="-chunksize 18 -files 10000 -dcache 5000 -stat 7500 -daemons 3 -volumes 200" -SMALL="-chunksize 18 -files 2500 -dcache 2000 -stat 3000 -daemons 2 -volumes 200" - -# The default behavior is to pick one of the above settings as described -# above. You can override this by setting OPTIONS explicitly to either one of -# the above variables or to any set of flags that you prefer. +# You can override that default behavior by setting OPTIONS to a specific set +# of flags. OPTIONS=AUTOMATIC # The default value for the client sysname (as returned by fs sysname) is diff --git a/src/packaging/Debian/changelog b/src/packaging/Debian/changelog index a1a6bc02e..bbfa5e4f1 100644 --- a/src/packaging/Debian/changelog +++ b/src/packaging/Debian/changelog @@ -1,3 +1,423 @@ +openafs (1.4.6.dfsg1-3) unstable; urgency=low + + * Fix FTBFS caused by a change in dh_strip behavior. It no longer + creates empty files for already stripped binaries, so we should no + longer remove them. Thanks, Lucas Nussbaum. (Closes: #464274) + * Include debugging symbols for libpam-openafs-kaserver in openafs-dbg. + * Do not stop daemons in run-level S. This isn't a real run-level and + hence there's no reason to create the links. + + -- Russ Allbery Wed, 06 Feb 2008 11:24:19 -0800 + +openafs (1.4.6.dfsg1-2) unstable; urgency=low + + * Apply additional upstream patches to the 2.6.24 support to fix + builds with older kernels. Thanks to Felix Koop for the testing. + (Closes: #458331) + * Remove old /etc/openafs/server-local files from older versions when + purging openafs-fileserver. + * Minor reformatting of openafs-client's postrm. + * Remove databases on purge of openafs-dbserver. + * Remove log files when purging openafs-fileserver or openafs-dbserver + per Policy 10.8. + + -- Russ Allbery Sun, 30 Dec 2007 15:08:04 -0800 + +openafs (1.4.6.dfsg1-1) unstable; urgency=low + + * New upstream release. + - Fixes multiple serious problems with the file server. + * Apply upstream patch for Linux 2.6.24 support. Thanks to Anders + Kaseorg for researching the necessary deltas. (Closes: #456258) + * Apply upstream patch to allocate vnodes from the malloc pool rather + than off the stack, fixing file server problems on SPARC. Thanks to + Barney Sowood for tracking down the patch. (Closes: #448380) + * Apply upstream patch from the 1.5 series to allow multiple realms to + be listed in the server krb.conf and hence treated as local. + * Build bosserver with --enable-bos-new-config. On startup, if + BosConfig.new exists, it will be renamed to BosConfig before the + configuration is read. (Closes: #453398) + * Add a comment to /etc/openafs/afs.conf.client that the file is managed + by debconf. (Closes: #447183) + * Add more debugging and bug reporting instructions to README.Debian. + * Mention in README.Debian that the server is built with supergroups + enabled and with the multiple local realm patch. (Closes: #453399) + * Support reconfigure in postinst. + * Recode debian/copyright to UTF-8. + * Update to standards version 3.7.3 (no changes required). + + -- Russ Allbery Mon, 17 Dec 2007 20:19:13 -0800 + +openafs (1.4.5.dfsg1-1) unstable; urgency=low + + * New upstream release. + - Even with a new enough Linux kernel to support keyrings, we still + may have found the system call table and need to clean it up when + unloading the module. (Closes: #448793) + * Use uname -m rather than dpkg --print-architecture to determine the + sysname for kernel module builds. Otherwise, builds with a different + kernel architecture than userspace (amd64 kernels with i386 userspace, + for example) don't work. Thanks, Anders Kaseorg. (Closes: #448452) + * Fix signing the generated the changes file on a kernel module build. + The module build file reorganization required an additional change to + genchanges. Thanks, Anders Kaseorg. (Closes: #448449) + * Expose prototypes for the ktc_* functions. (Closes: #449432) + * Fix man pages for subcommands to use an underscore in the NAME section + instead of a space so that they'll be indexed properly by the current + groff and man-db. + * Update CellServDB to 2007-10-25 GCO release. + * Add Homepage to the package control fields. + + -- Russ Allbery Sun, 11 Nov 2007 15:54:59 -0800 + +openafs (1.4.5~pre2.dfsg1-1) unstable; urgency=low + + * New upstream release candidate. + - Fix errors when compiled with gcc 4.2. (Closes: #443937) + - Add a frightening hack to work around the lack of getcontext and + savecontext for 32-bit SPARc. (Closes: #415952, #446837) + - Add support for Linux 2.6.23. + - Multiple bug fixes for client tracking in the file server. + - Prevent one client from consuming all file server threads. + * Remove the workaround added for 2.6.20 and 2.6.21 kernels with + CONFIG_PARAVIRT enabled. The mistaken GPL-labelling of core + interfaces was fixed in 2.6.22, which has now migrated to testing. + * Scan /var/log/openafs for core files with a PID appended when a server + run by bosserver exits with a signal. bosserver was unable to + correctly handle core files for multithreaded servers since it + expected a filename of core and Linux always appends a PID to core + dumps by multithreaded processes. + * Fix make kdist in openafs-modules-source, inadvertently broken by a + missing genchanges script. + * Stop creating /var/lib/openafs/cores. Nothing actually uses it. + + -- Russ Allbery Tue, 16 Oct 2007 17:01:33 -0700 + +openafs (1.4.4.dfsg1-7) unstable; urgency=low + + * Switch to quilt for managing patches to the upstream source. + * Stop installing the Administrator's Reference. All of the useful + information in here has been converted to man pages. + * Use the upstream man page for pt_util, which lets us remove the + docbook-to-man build dependency. + * Update to the latest CellServDB from grand.central.org. + * Trim additional unuseful debug information from openafs-dbg. + * Restructure the source for the module package. The build files for + the module build are now in debian/module in the source package and + there is a completely separate rules file. This way, the module build + rules don't have to depend on quilt and the structure is clearer. + * Fix debhelper dependencies for the module build. + * Update module standards version to 3.7.2 (no changes required). + + -- Russ Allbery Mon, 20 Aug 2007 17:54:00 -0700 + +openafs (1.4.4.dfsg1-6) unstable; urgency=low + + * Apply upstream patch for the OpenAFS file server to treat clients that + have an all-zero UUID as if they don't have UUID support, working + around bugs in various client versions that can cause multiple hosts + to use all-zero UUIDs and conflict with each other. + * Use dpkg --print-architecture to determine the AFS sysname for both + regular builds (avoiding --print-installation-architecture, which is + deprecated) and kernel builds (avoiding arch, which is temporarily not + in unstable and which wouldn't do the right thing for cross-compiles). + Thanks, Chris Hanson. (Closes: #435765) + * Add hppa as a recognized architecture for kernel module builds, + although OpenAFS currently only supports 2.4 kernels on HPPA so this + isn't that useful. + + -- Russ Allbery Thu, 02 Aug 2007 19:54:00 -0700 + +openafs (1.4.4.dfsg1-5) unstable; urgency=low + + * Apply upstream patch from Jeffrey Hutzelman to fix syscall probing on + AMD64 with Linux 2.6.22 kernels. (Closes: #430179) + * Add a union to des_ks_struct and reorder includes to get the correct + alignment for DES code on SPARC. Thanks, Chaskiel Grundman. Partly + addresses #415952. + * Fix a typo in debian/kern-sysname that caused openafs-modules-source + to still assume all ia64 systems used Linux 2.4. Thanks, Jakob + Haufe. (Closes: #432344) + * Use LSB logging functions for openafs-fileserver and support passing + arguments to bosserver in /etc/default/openafs-fileserver by setting + DAEMON_ARGS. + * Clean up more completely after a purge of openafs-fileserver. Remove + the files created by the server in /var/lib/openafs/local, remove + KeyFile and CellServDB.old from /etc/openafs/server, and remove + BosConfig from /etc/openafs. + + -- Russ Allbery Tue, 17 Jul 2007 09:25:03 -0700 + +openafs (1.4.4.dfsg1-4) unstable; urgency=low + + * Apply upstream patch from Jeffrey Hutzelman to fix kernel module + builds on ppc64. (Closes: #427555) + * Apply upstream patches for Linux 2.6.22 support. (Closes: #428401) + * Apply upstream patch to fix the AFS /proc structure under Linux + 2.6.22.1 and later. + * Move /etc/openafs/server-local to /var/lib/openafs/local. Most of the + files here are automatically generated and hence not configuration + files, and the file server has to write to this directory to start (so + having it in /etc breaks read-only / file systems). Thanks, Alexei + Sheplyakov. (Closes: #405697) + * Move upserver and upclient to /usr/lib/openafs (from /usr/sbin) to + match upstream's layout and for consistency with the other servers run + via bosserver. + * Use --name instead of --exec in the openafs-fileserver init script and + drop the --pidfile option (bosserver doesn't create a PID file) so + that we don't start a second bosserver on upgrades. + * Go back to using krb5-config. The dependency problem has now been + fixed on all platforms in the krb5 package and this is the preferred + upstream method. + + -- Russ Allbery Thu, 21 Jun 2007 03:02:32 -0700 + +openafs (1.4.4.dfsg1-3) unstable; urgency=low + + * Always generate a UUID on client startup even if for some reason we + don't think we have any network interfaces. Otherwise, the client + will use an all-zeroes UUID, which will collide with every other + client with the same problem. + * When afsd is started with -rmtsys, it starts another process that afsd + -shutdown doesn't kill. Update the init script to kill this process + on stop. (Closes: #405982) + * Don't use krb5-config to get a library list. It runs the risk of + encoding unnecessary library dependencies. Instead, hard-code the + flags and libraries we actually need. (Closes: #424448) + * When loading a module using the upstream naming convention, don't + append the .mp to the module name for modprobe. (Closes: #420597) + + -- Russ Allbery Wed, 16 May 2007 18:16:12 -0700 + +openafs (1.4.4.dfsg1-2) unstable; urgency=low + + * Debian kernels as of 2.6.20 enable CONFIG_PARAVIRT, which redefines + several core kernel calls as redirects through a paravirt.ops table + that's marked GPL-only. This breaks all non-GPL modules that used + those (previously generally exported) calls even indirectly. Apply a + hack to switch from spin_lock_irq to spin_lock_irqsave to avoid the + paravirt redirection so that the module will build. + * Enable ucontext for all Linux builds with glibc 2.4 or later, not just + with i386 and amd64, and (following an upstream patch) always use + ucontext on ia64. Newer versions of glibc change internal structures + in ways that cause the old LWP code to have stack overflows. + (Closes: #419903) + * Apply upstream patch to crashes on contention in afs_xuser when a + process in a PAG exits. Thanks, Chaskiel Grundman. + * When determining the AFS sysname for kernel module builds, add + explicit cases for 2.6 kernels for all architectures that support them + (everything except non-64-bit sparc_linux). Fixes build problems with + ia64 and probably other architectures. Thanks to Ippokratis Pandis + for the debugging help. (Closes: #411818) + * Prefer alpha_linux_26 to alpha_linux_24 for the non-kernel build on + Alpha, now that the source supports it. + * Add support for the s390x architecture. Upstream supports it and + there's no reason not to. + * Fix the watch file to remove .dfsg\d+ when comparing versions. + + -- Russ Allbery Thu, 19 Apr 2007 13:26:33 -0700 + +openafs (1.4.4.dfsg1-1) unstable; urgency=low + + * Repackage upstream source to remove two additional files covered under + the APSL. (Closes: #416685) + * Build-depend on Automake since we run aclocal during the build. Not + having aclocal caused local patches to osconf.m4 to not be effective, + leading to the wrong compiler flags for shared libraries. Thanks to + Frank Lichtenheld for the report. (Closes: #416398, #416497, #418966) + + -- Russ Allbery Thu, 12 Apr 2007 21:19:00 -0700 + +openafs (1.4.4-1) experimental; urgency=low + + * New upstream release. (Closes: #415699) + - Support newer Linux kernels. (Closes: #409797, #410120) + - Add aklog fallbacks for null realms to support the referral + capability in MIT Kerberos 1.6 and later. (Closes: #410314) + * Apply patch from Thomas Sesselmann to support setting options to pass + to bosserver in /etc/default/openafs-fileserver. (Closes: #409357) + * Remove the rx_Init calls in the PAM module. The internal counters + that had to be initialized that way have been removed. + * Now that we're running regen.sh as part of the build process, only + patch the Autoconf source files and not the generated output to make + the diff easier to audit. + + -- Russ Allbery Mon, 26 Mar 2007 18:56:55 -0700 + +openafs (1.4.2-6) unstable; urgency=medium + + * SECURITY: Apply upstream patch to disable setuid status on all cells + by default. Prior versions of AFS defaulted to honoring setuid bits + in the local cell, but since unauthenticated file access in AFS is + unencrypted, an attacker could forge packets from an AFS file server + to synthesize a setuid binary in AFS. + * Apply upstream fix to use a single high-numbered group for the PAG on + 2.6 kernels and sort the group properly. Fixes AFS-caused group + ordering problems that could lead the kernel to ignore some group + membership for users. (Closes: #414911) + * Apply upstream fix for segfaults in pts rename. (Closes: #409184) + * Apply upstream fix to show reasonable free space numbers for AFS in + df. Without this fix, some programs which use df to check free space + may think that directories in AFS are full and prevent the user from + attempting to write files. (Closes: #415294) + * Translation updates: + - Dutch, thanks cobaco. (Closes: #413701) + - Portuguese, thanks Miguel Figueiredo. (Closes: #414800) + + -- Russ Allbery Wed, 14 Mar 2007 18:37:12 -0700 + +openafs (1.4.2-5) unstable; urgency=low + + * Translation updates: + - Chinese, thanks Chun Tian (binghe). (Closes: #406063) + + -- Russ Allbery Sun, 28 Jan 2007 13:43:16 -0800 + +openafs (1.4.2-4) unstable; urgency=low + + * Update documentation to note that enabling v4 support or running + krb524d is no longer required for aklog to work. + * Translation updates: + - German, thanks Henrik Kroeger. (Closes: #400800) + + -- Russ Allbery Sun, 17 Dec 2006 17:09:41 -0800 + +openafs (1.4.2-3) unstable; urgency=low + + * No longer pass explicit cache tuning options to afsd and instead let + OpenAFS automatically choose tuning based on the cache size. + * Accept trailing whitespace in ThisCell. + * Fix path canonicalization on the server, enabling bos getlog with a + simple log name to work properly against a Debian bosserver. + * Change the documentation of afsd -shutdown to be less dire and more + accurate. Thanks, Daniel J. Priem. (Closes: #394990) + * Document (at least partially) AFS's mapping of Kerberos v5 principal + names to Kerberos v4 format in the aklog man page. Thanks, Daniel + J. Priem. (Closes: #394832) + * Document that aklog -setpag may not always work. + + -- Russ Allbery Mon, 20 Nov 2006 17:29:46 -0800 + +openafs (1.4.2-2) unstable; urgency=low + + * Upstream fix to prevent butc segfaulting. + + -- Sam Hartman Sat, 21 Oct 2006 20:57:09 -0400 + +openafs (1.4.2-1) unstable; urgency=medium + + * New upstream release, fixes amd64 kernel issues + * Update CellServDB + + -- Sam Hartman Fri, 20 Oct 2006 06:44:45 -0400 + +openafs (1.4.2~fc4-3) unstable; urgency=low + + * Apply patch from Chaskiel Grundman to fix kernel panics when loading + the kernel module into AMD64 2.6.18 kernels. (Closes: #390653) + * Apply upstream patch to fix klog segfaults. (Closes: #390940) + * The UTS_RELEASE string is no longer found in linux/version.h in + 2.6.18, so fall back on looking in config/kernel.release. Thanks to + Marcus Watts for the patch. + + -- Russ Allbery Thu, 5 Oct 2006 13:02:50 -0700 + +openafs (1.4.2~fc4-2) unstable; urgency=low + + * Apply additional upstream patch for AMD64 2.6.18 kernel module build + issues. (Closes: #389729) + + -- Russ Allbery Sat, 30 Sep 2006 00:34:33 -0700 + +openafs (1.4.2~fc4-1) unstable; urgency=low + + * New upstream release candidate. + - Builds with 2.6.18 on AMD64. (Closes: #389729) + * Build an openafs-dbg package with debugging information for the + OpenAFS fileserver and volserver. + * Add LSB comments to the openafs-client and openafs-fileserver init + scripts. + * Update to debhelper compatibility level V5. + + -- Russ Allbery Wed, 27 Sep 2006 11:06:48 -0700 + +openafs (1.4.2~fc2-1) unstable; urgency=low + + * New upstream release candidate. + - Supports new Linux kernel versions. (Closes: #383028) + * Translation updates: + - German, thanks Henrik Kroeger. (Closes: #384803) + + -- Russ Allbery Sun, 3 Sep 2006 12:42:59 -0700 + +openafs (1.4.1-4) unstable; urgency=low + + * Apply upstream fix from Derek Atkins for compilation with kernel + versions prior to 2.6.10. (Closes: #376576) + + -- Russ Allbery Sun, 9 Jul 2006 12:35:44 -0700 + +openafs (1.4.1-3) unstable; urgency=low + + * Include all of AFS's local XDR implementation in the build for + shlibafsrpc, fixing problems with undefined symbols in the PAM module + on AMD64. + * When creating a new file server in afs-newcell, use a set of tuning + flags from Harald Barth rather than relying on the defaults. This + doesn't help with general bos create; long term, the defaults need to + be fixed. (Closes: #364100) + * Add a note in README.servers about fileserver tuning options. + * Update debconf templates to follow the best practice recommendations + from the Developer's Reference. + * Regenerate the man pages on build since the pre-generated ones were + done with a very old version of pod2man. + * Update standards version to 3.7.2 (no changes required). + * Use a better method of optionally running make distclean. + * Add build-arch and build-indep targets, just in case. + * Translation updates: + - Czech, thanks Martin Šín. + - Portuguese (Brazil), thanks André Luís Lopes. + - French, thanks Christian Perrier. + - Vietnamese, thanks Clytie Siddall. + + -- Russ Allbery Sun, 18 Jun 2006 11:22:11 -0700 + +openafs (1.4.1-2) unstable; urgency=low + + * Exit successfully in the openafs-client init script if no module is + installed, since otherwise openafs-client will fail to install until + one builds a module. This restores previous accidental behavior due + to a bug in debhelper. (Closes: #362695) + * libopenafs-dev must conflict with liblwp-dev since they both provide + liblwp.a. Thanks, Justin Pryzby. (Closes: #362842) + * openafs-client recommends lsof, since the init script uses it for + cleaner shutdown. + + -- Russ Allbery Sat, 15 Apr 2006 15:47:04 -0700 + +openafs (1.4.1-1) unstable; urgency=low + + * New upstream release. + - Supports Linux 2.6.16. (Closes: #358203) + - Suspend should work with newer kernels. (Closes: #341588) + - Safer cache size calculation. (Closes: #360176) + - Upstream now includes man pages, so remove our backport. + * Subsume openafs-krb5 into this source package. + - Acknowledge NMU. (Closes: #304933) + - Update to the OpenAFS aklog and asetkey. (Closes: #196094) + - Backport asetkey from upstream CVS. + - Include ka-forwarder from the old migration toolkit. + - Add man pages for asetkey and ka-forwarder. + * Subsume openafs-doc into this source package. + * Since 2.6 is the supported kernel for etch, build the userspace with + a sysname of *_linux26 where supported. This only affects the sys + command. (Using livesys instead is better.) (Closes: #358118) + * Always pass the system type into Autoconf, following autotools-dev + best practices. + * Add an explicit copyright statement to debian/copyright. + + -- Russ Allbery Fri, 14 Apr 2006 15:04:45 -0700 + openafs (1.4.0-4) unstable; urgency=low * Hopefully fix sparc64 kernel support. Thanks, Troy Benjegerdes. @@ -1005,4 +1425,3 @@ openafs (1.0.snap20001103-1) unstable; urgency=low * Initial Release. -- unknown Fri, 3 Nov 2000 23:41:41 -0500 - diff --git a/src/packaging/Debian/compat b/src/packaging/Debian/compat index b8626c4cf..7ed6ff82d 100644 --- a/src/packaging/Debian/compat +++ b/src/packaging/Debian/compat @@ -1 +1 @@ -4 +5 diff --git a/src/packaging/Debian/configuration-transcript.txt b/src/packaging/Debian/configuration-transcript.txt index b9403e2c0..57cc3ba16 100644 --- a/src/packaging/Debian/configuration-transcript.txt +++ b/src/packaging/Debian/configuration-transcript.txt @@ -1,174 +1,100 @@ -[This transcript includes creation of a loopback mount on /vicepa -using file full of zeros. This is useful to know how to do because it -allows you to test an AFS server without repartitioning. However, for -production cells, you should repartition and create a /vicepa -partition.] - -snorklewacker:/# apt-get -q install openafs-dbserver openafs-krb5 krb5-admin-server -Reading Package Lists... -Building Dependency Tree... +This is a transcript of a user following the instructions in +README.servers. It is best read side-by-side with that documentation +while you are setting up your cell. + +This transcript includes creation of a loopback mount on /vicepa using +file full of zeros. This is useful to know how to do because it allows +you to test an AFS server without repartitioning. However, for production +cells, you should repartition and create a /vicepa partition. + +Thanks to Faheem Mitha for the transcript. + +########################################################################## + +riverside:/home/faheem# apt-get install krb5-admin-server +... The following extra packages will be installed: - krb5-kdc krb5-user libkrb53 openafs-client openafs-fileserver openafs-ptutil + krb5-config krb5-kdc krb5-user The following NEW packages will be installed: - krb5-admin-server krb5-kdc krb5-user libkrb53 openafs-client openafs-dbserver - openafs-fileserver openafs-krb5 openafs-ptutil -0 packages upgraded, 9 newly installed, 0 to remove and 22 not upgraded. -Need to get 2264kB of archives. After unpacking 5939kB will be used. -Do you want to continue? [Y/n] y -Get:1 http://www.mit.edu packages/ krb5-admin-server 1.2.1-5 [174kB] -Get:2 http://www.mit.edu packages/ krb5-kdc 1.2.1-5 [173kB] -Get:3 http://www.mit.edu packages/ krb5-user 1.2.1-5 [154kB] -Get:4 http://www.mit.edu packages/ libkrb53 1.2.1-5 [337kB] -Get:5 http://www.mit.edu packages/ openafs-client 1.0.snap20001106-6 [662kB] -Get:6 http://www.mit.edu packages/ openafs-dbserver 1.0.snap20001106-6 [211kB] -Get:7 http://www.mit.edu packages/ openafs-fileserver 1.0.snap20001106-6 [427kB] -Get:8 http://www.mit.edu packages/ openafs-krb5 1.3-3 [96.5kB] -Get:9 http://www.mit.edu packages/ openafs-ptutil 0.0.snap20001123-1 [30.3kB] -Fetched 2264kB in 8s (253kB/s) -Preconfiguring packages .. -Configuring Libkrb53 --------------------- + krb5-admin-server krb5-config krb5-kdc krb5-user +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Need to get 348kB of archives. +After unpacking 889kB of additional disk space will be used. +Do you want to continue? [Y/n] +... +Configuring krb5-config +----------------------- + When users attempt to use Kerberos and specify a principal or user + name without specifying what administrative Kerberos realm that + principal belongs to, the system appends the default realm. + Normally default realm is the upper case version of the local DNS + domain. - When users attempt to use Kerberos and specify a principal or user - name without specifying what administrative Kerberos realm that - principal belongs to, the system appends the default realm. - Normally default realm is the upper case version of the local DNS - domain. +What is the default Kerberos version 5 realm? DULCI.BIOSTAT.DUKE.EDU -What is the default Kerberos realm? [ATHENA.MIT.EDU] SNORKLEWACKER.MIT.EDU -Configuring Krb5-kdc +Configuring krb5-kdc -------------------- -By default, Kerberos4 requests are allowed from principals that do not require -preauthentication. This allows Kerberos4 services to exist while requiring -most users to use Kerberos5 clients to get their initial tickets. These -tickets can then be converted to Kerberos4 tickets. Alternatively, the mode -can be set to full, allowing Kerberos4 to get initial tickets even when -preauthentication would normally be required, or to disable, which will -disable all Kerberos4 support. +By default, Kerberos4 requests are allowed from principals that do not +require preauthentication. This allows Kerberos4 services to exist +while requiring most users to use Kerberos5 clients to get their +initial tickets. These tickets can then be converted to Kerberos4 +tickets. Alternatively, the mode can be set to full, allowing +Kerberos4 to get initial tickets even when preauthentication would +normally be required, or to disable, which will disable all Kerberos4 +support. - d. disable f. full n. nopreauth + 1. disable 2. full 3. nopreauth 4. none -What Kerberos4 compatibility mode should be used? [n] +Kerberos4 compatibility mode to use: 3 -Configuring Krb5-admin-server +Configuring krb5-admin-server ----------------------------- Setting up a Kerberos Realm - This package contains the administrative tools necessary to run on - the Kerberos master server. However, installing this package does - not automatically set up a Kerberos realm. Doing so requires - entering passwords and as such is not well-suited for package - installation. To create the realm, run the krb5_newrealm command. - You may also wish to read /usr/share/doc/krb5-kdc/README.KDC and the - administration guide found in the krb5-doc package. - . - Don't forget to set up DNS information so your clients can find your - KDC and admin servers. Doing so is documented in the administration - guide. - -Configuring Openafs-client --------------------------- - +This package contains the administrative tools necessary to run on the +Kerberos master server. However, installing this package does not +automatically set up a Kerberos realm. Doing so requires entering +passwords and as such is not well-suited for package installation. To +create the realm, run the krb5_newrealm command. You may also wish to +read /usr/share/doc/krb5-kdc/README.KDC and the administration guide +found in the krb5-doc package. - AFS filespace is organized into cells or administrative domains. -[More] - Each workstation belongs to one cell. Usually the cell is the DNS - domain name of the workstation. - -What AFS cell does this workstation belong to? snorklewacker.mit.edu - - - AFS uses a area of the disk to cache remote files for faster - access. This cache will be mounted on /var/cache/openafs. It is - important that the cache not overfill the partition it is located - on. Often, people find it useful to dedicate a partition to their - AFS cache. - -How large is your AFS cache (kb)? [50000] 95000 - -Configuring Openafs-fileserver ------------------------------- +Don't forget to set up DNS information so your clients can find your +KDC and admin servers. Doing so is documented in the administration +guide. -Selecting previously deselected package libkrb53. -(Reading database ... 28342 files and directories currently installed.) -Unpacking libkrb53 (from .../libkrb53_1.2.1-5_i386.deb) ... +Selecting previously deselected package krb5-config. +(Reading database ... 81199 files and directories currently installed.) +Unpacking krb5-config (from .../krb5-config_1.6_all.deb) ... Selecting previously deselected package krb5-user. -Unpacking krb5-user (from .../krb5-user_1.2.1-5_i386.deb) ... +Unpacking krb5-user (from .../krb5-user_1.3.6-2sarge2_i386.deb) ... Selecting previously deselected package krb5-kdc. -Unpacking krb5-kdc (from .../krb5-kdc_1.2.1-5_i386.deb) ... +Unpacking krb5-kdc (from .../krb5-kdc_1.3.6-2sarge2_i386.deb) ... Selecting previously deselected package krb5-admin-server. -Unpacking krb5-admin-server (from .../krb5-admin-server_1.2.1-5_i386.deb) ... -Selecting previously deselected package openafs-client. -Unpacking openafs-client (from .../openafs-client_1.0.snap20001106-6_i386.deb) ... -Selecting previously deselected package openafs-fileserver. -Unpacking openafs-fileserver (from .../openafs-fileserver_1.0.snap20001106-6_i386.deb) ... -Selecting previously deselected package openafs-ptutil. -Unpacking openafs-ptutil (from .../openafs-ptutil_0.0.snap20001123-1_i386.deb) ... -Selecting previously deselected package openafs-dbserver. -Unpacking openafs-dbserver (from .../openafs-dbserver_1.0.snap20001106-6_i386.deb) ... -Selecting previously deselected package openafs-krb5. -Unpacking openafs-krb5 (from .../openafs-krb5_1.3-3_i386.deb) ... -Setting up openafs-client (1.0.snap20001106-6) ... -Configuring Openafs-client --------------------------- - -AFS uses the file /etc/openafs/CellServDB to hold the list of servers that -should be contacted to find parts of a cell. The cell you claim this -workstation belongs to is not in that file. Enter the host names of the -database servers separated by spaces. IMPORTANT: If you are creating a new -cell and this machine is to be a database server in that cell, only enter this -machine's name; add the other servers later after they are functioning. Also, -do not enable the AFS client to start at boot on this server until the cell is -configured. When you are ready you can edit /etc/openafs/afs.conf.client to -enable the client. - -What hosts are DB servers for your home cell?snorklewacker.mit.edu - -Should the Openafs filesystem be started and mounted at boot? Normally, most -users who install the openafs-client package expect to run it at boot. -However, if you are planning on setting up a new cell or are on a laptop, you -may not want it started at boot time. If you answer no to this question, run -/etc/init.d/openafs-client force-start to run. - -Run Openafs client at boot? [yes] n - -Starting AFS services: -Setting up openafs-fileserver (1.0.snap20001106-6) ... -Starting AFS Server: ===================== U.S. Government Restricted Rights ====================== -If you are licensing the Software on behalf of the U.S. Government -("Government"), the following provisions apply to you. If the Software is -supplied to the Department of Defense ("DoD"), it is classified as "Commercial -Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the -Federal Acquisition Regulations ("DFARS") (or any successor regulations) -and the Government is acquiring only the license rights granted herein (the -license rights customarily provided to non-Government users). If the Software -is supplied to any unit or agency of the Government other than DoD, it is -classified as "Restricted Computer Software" and the Government's rights in -the Software are defined in paragraph 52.227-19 of the Federal Acquisition -Regulations ("FAR") (or any successor regulations) or, in the case of NASA, -in paragraph 18.52.227-86 of the NASA Supplement in the FAR (or any successor -regulations). -bosserver. - -Setting up openafs-ptutil (0.0.snap20001123-1) ... - -Setting up openafs-dbserver (1.0.snap20001106-6) ... - -Setting up libkrb53 (1.2.1-5) ... +Unpacking krb5-admin-server (from .../krb5-admin-server_1.3.6-2sarge2_i386.deb) ... +Setting up krb5-config (1.6) ... +Configuring krb5-config +----------------------- -Setting up krb5-user (1.2.1-5) ... +Enter the hostnames of Kerberos servers in the DULCI.BIOSTAT.DUKE.EDU Kerberos realm separated by spaces. -Setting up krb5-kdc (1.2.1-5) ... +What are the Kerberos servers for your realm? riverside.dulci.biostat.duke.edu -Setting up krb5-admin-server (1.2.1-5) ... +Enter the hostname of the administrative (password changing) server +for the DULCI.BIOSTAT.DUKE.EDU Kerberos realm. -Setting up openafs-krb5 (1.3-3) ... +What is the administrative server for your Kerberos realm? riverside.dulci.biostat.duke.edu +Setting up krb5-user (1.3.6-2sarge2) ... +Setting up krb5-kdc (1.3.6-2sarge2) ... +Setting up krb5-admin-server (1.3.6-2sarge2) ... +Starting Kerberos Administration Servers: kadmind: No such file or directory while initializing, aborting +kadmind. -snorklewacker:/# krb5_newrealm +riverside:/home/faheem# krb5_newrealm This script should be run on the master KDC/admin server to initialize a Kerberos realm. It will ask you to type in a master key password. This password will be used to generate a key that is stored in @@ -176,24 +102,16 @@ This password will be used to generate a key that is stored in is much more important that it be a strong password than that it be remembered. However, if you lose the password and /etc/krb5kdc/stash, you cannot decrypt your Kerberos database. -Initializing database '/var/lib/krb5kdc/principal' for realm 'SNORKLEWACKER.MIT.EDU', -master key name 'K/M@SNORKLEWACKER.MIT.EDU' +Loading random data +Initializing database '/var/lib/krb5kdc/principal' for realm 'DULCI.BIOSTAT.DUKE.EDU', +master key name 'K/M@DULCI.BIOSTAT.DUKE.EDU' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. -Enter KDC database master key:foo - -Re-enter KDC database master key to verify:foo - -Authenticating as principal hartmans/admin@ATHENA.MIT.EDU with password. -Entry for principal kadmin/admin with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5kdc/kadm5.keytab. -Entry for principal kadmin/admin with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5kdc/kadm5.keytab. -Authenticating as principal hartmans/admin@ATHENA.MIT.EDU with password. -Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5kdc/kadm5.keytab. -Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5kdc/kadm5.keytab. +Enter KDC database master key: +Re-enter KDC database master key to verify: Starting Kerberos KDC: krb5kdc krb524d. Starting Kerberos Administration Servers: kadmind. - Now that your realm is set up you may wish to create an administrative principal using the addprinc subcommand of the kadmin.local program. Then, this principal can be added to /etc/krb5kdc/kadm5.acl so that @@ -206,37 +124,128 @@ created. Don't forget to set up DNS information so your clients can find your KDC and admin servers. Doing so is documented in the administration guide. -snorklewacker:/# kadmin.local -e des-cbc-crc:v4 -Authenticating as principal hartmans/admin@ATHENA.MIT.EDU with password. -kadmin.local: addprinc -randkey afs -addprinc -randkey afs -WARNING: no policy specified for afs@SNORKLEWACKER.MIT.EDU; defaulting to no policy -Principal "afs@SNORKLEWACKER.MIT.EDU" created. -kadmin.local: ktadd -k /tmp/snork.keytab afs -ktadd -k /tmp/snork.keytab afs -Entry for principal afs with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/tmp/snork.keytab. -kadmin.local: quit -quit -snorklewacker:/# kadmin.local -kadmin.local -Authenticating as principal hartmans/admin@ATHENA.MIT.EDU with password. -kadmin.local: addprinc hartmans -addprinc hartmans -WARNING: no policy specified for hartmans@SNORKLEWACKER.MIT.EDU; defaulting to no policy -Enter password for principal "hartmans@SNORKLEWACKER.MIT.EDU": foo - -Re-enter password for principal "hartmans@SNORKLEWACKER.MIT.EDU": foo - -Principal "hartmans@SNORKLEWACKER.MIT.EDU" created. -kadmin.local: quit -quit -snorklewacker:/# asetkey add 3 /tmp/snork.keytab afs -asetkey add 3 /tmp/snork.keytab afs -snorklewacker:/# snorklewacker:/# dd if=/dev/zero of=/var/lib/openafs/vicepa bs=1024k count=32 +riverside:/home/faheem# kadmin.local +Authenticating as principal root/admin@DULCI.BIOSTAT.DUKE.EDU with password. +kadmin.local: addprinc faheem/admin +WARNING: no policy specified for faheem/admin@DULCI.BIOSTAT.DUKE.EDU; defaulting to no policy +Enter password for principal "faheem/admin@DULCI.BIOSTAT.DUKE.EDU": +Re-enter password for principal "faheem/admin@DULCI.BIOSTAT.DUKE.EDU": +Principal "faheem/admin@DULCI.BIOSTAT.DUKE.EDU" created. +kadmin.local: addprinc faheem +WARNING: no policy specified for faheem@DULCI.BIOSTAT.DUKE.EDU; defaulting to no policy +Enter password for principal "faheem@DULCI.BIOSTAT.DUKE.EDU": +Re-enter password for principal "faheem@DULCI.BIOSTAT.DUKE.EDU": +Principal "faheem@DULCI.BIOSTAT.DUKE.EDU" created. +kadmin.local: exit +riverside:/home/faheem# apt-get install openafs-dbserver openafs-krb5 +... +The following extra packages will be installed: + openafs-client openafs-fileserver +The following NEW packages will be installed: + openafs-client openafs-dbserver openafs-fileserver openafs-krb5 +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Need to get 2927kB of archives. +After unpacking 6898kB of additional disk space will be used. +Do you want to continue? [Y/n] +... +Configuring openafs-client +-------------------------- + +AFS filespace is organized into cells or administrative domains. Each +workstation belongs to one cell. Usually the cell is the DNS domain +name of the site. + +What AFS cell does this workstation belong to? dulci.biostat.duke.edu + +AFS uses an area of the disk to cache remote files for faster access. +This cache will be mounted on /var/cache/openafs. It is important +that the cache not overfill the partition it is located on. Often, +people find it useful to dedicate a partition to their AFS cache. + +How large is your AFS cache (kB)? 50000 + +/afs generally contains an entry for each cell that a client can talk +to. Traditionally, these entries were generated by servers in the +client's home cell. However, OpenAFS clients can generate the +contents of /afs dynamically based on the contents of +/etc/openafs/CellServDB and DNS. + +If you generate /afs dynamically, you may need to create +/etc/openafs/CellAlias to include aliases for common cells. DO NOT +SELECT THIS OPTION IF THIS MACHINE IS THE FIRST DATABASE SERVER IN A +NEW CELL . + +Dynamically generate the contents of /afs? no + +Selecting previously deselected package openafs-client. +(Reading database ... 81267 files and directories currently installed.) +Unpacking openafs-client (from .../openafs-client_1.3.81-3sarge1_i386.deb) ... +Selecting previously deselected package openafs-fileserver. +Unpacking openafs-fileserver (from .../openafs-fileserver_1.3.81-3sarge1_i386.deb) ... +Selecting previously deselected package openafs-dbserver. +Unpacking openafs-dbserver (from .../openafs-dbserver_1.3.81-3sarge1_i386.deb) ... +Selecting previously deselected package openafs-krb5. +Unpacking openafs-krb5 (from .../openafs-krb5_1.3-10.1_i386.deb) ... +Setting up openafs-client (1.3.81-3sarge1) ... +Configuring openafs-client +-------------------------- + +AFS uses the file /etc/openafs/CellServDB to hold the list of servers +that should be contacted to find parts of a cell. The cell you claim +this workstation belongs to is not in that file. Enter the host names +of the database servers separated by spaces. IMPORTANT: If you are +creating a new cell and this machine is to be a database server in +that cell, only enter this machine's name; add the other servers later +after they are functioning. Also, do not enable the AFS client to +start at boot on this server until the cell is configured. When you +are ready you can edit /etc/openafs/afs.conf.client to enable the +client. + +What hosts are DB servers for your home cell? riverside.dulci.biostat.duke.edu + +Should the Openafs filesystem be started and mounted at boot? +Normally, most users who install the openafs-client package expect to +run it at boot. However, if you are planning on setting up a new cell +or are on a laptop, you may not want it started at boot time. If you +choose not to start AFS at boot , run /etc/init.d/openafs-client +force-start to start the client when you wish to run it. + +Run Openafs client now and at boot? no +Setting up openafs-fileserver (1.3.81-3sarge1) ... +Starting AFS Server: bosserver. + +Setting up openafs-dbserver (1.3.81-3sarge1) ... +Setting up openafs-krb5 (1.3-10.1) ... +riverside:/home/faheem# kadmin.local +Authenticating as principal root/admin@DULCI.BIOSTAT.DUKE.EDU with password. +kadmin.local: addprinc -randkey -e des-cbc-crc:v4 afs +WARNING: no policy specified for afs@DULCI.BIOSTAT.DUKE.EDU; defaulting to no policy +Principal "afs@DULCI.BIOSTAT.DUKE.EDU" created. +kadmin.local: ktadd -k /tmp/afs.keytab -e des-cbc-crc:v4 afs +Entry for principal afs with kvno 3, encryption type DES cbc mode with CRC-32 added to keytab WRFILE:/tmp/afs.keytab. +kadmin.local: getprinc afs +Principal: afs@DULCI.BIOSTAT.DUKE.EDU +Expiration date: [never] +Last password change: Wed Aug 24 03:09:42 EDT 2005 +Password expiration date: [none] +Maximum ticket life: 0 days 10:00:00 +Maximum renewable life: 7 days 00:00:00 +Last modified: Wed Aug 24 03:09:42 EDT 2005 (root/admin@DULCI.BIOSTAT.DUKE.EDU) +Last successful authentication: [never] +Last failed authentication: [never] +Failed password attempts: 0 +Number of keys: 1 +Key: vno 3, DES cbc mode with CRC-32, no salt +Attributes: +Policy: [none] +kadmin.local: exit +riverside:/home/faheem# asetkey add /tmp/afs.keytab afs +riverside:/home/faheem# dd if=/dev/zero of=/var/lib/openafs/vicepa bs=1024k count=32 32+0 records in 32+0 records out -snorklewacker:/# mke2fs /var/lib/openafs/vicepa -mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 +33554432 bytes transferred in 0.093776 seconds (357814258 bytes/sec) +riverside:/home/faheem# mke2fs /var/lib/openafs/vicepa +mke2fs 1.37 (21-Mar-2005) /var/lib/openafs/vicepa is not a block special device. Proceed anyway? (y,n) y Filesystem label= @@ -249,170 +258,304 @@ First data block=1 4 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group -Superblock backups stored on blocks: - 8193, 24577 +Superblock backups stored on blocks: + 8193, 24577 -Writing inode tables: 0/41/42/43/4done +Writing inode tables: done Writing superblocks and filesystem accounting information: done -snorklewacker:/# mount -oloop /var/lib/openafs/vicepa /vicepa -snorklewacker:/# afs-newcell - Prerequisites +This filesystem will be automatically checked every 20 mounts or +180 days, whichever comes first. Use tune2fs -c or -i to override. +riverside:/home/faheem# mkdir /vicepa +riverside:/home/faheem# mount -oloop /var/lib/openafs/vicepa /vicepa +riverside:/home/faheem# afs-newcell + Prerequisites In order to set up a new AFS cell, you must meet the following: 1) You need a working Kerberos realm with Kerberos4 support. You - should install Heimdal with Kth-kerberos compatibility or MIT - Kerberos5. + should install Heimdal with Kth-kerberos compatibility or MIT + Kerberos5. -2) You need to create the AFS key and load it into - /etc/openafs/server/KeyFile. If your cell's name is the same as - your Kerberos realm then create a principal called afs. Otherwise, - create a principal called afs/cellname in your realm. The cell - name should be all lower case, unlike Kerberos realms which are all - upper case. You can use asetkey from the openafs-krb5 package, or - if you used AFS3 salt to create the key, the bos addkey command. +2) You need to create the single-DES AFS key and load it into + /etc/openafs/server/KeyFile. If your cell's name is the same as + your Kerberos realm then create a principal called afs. Otherwise, + create a principal called afs/cellname in your realm. The cell + name should be all lower case, unlike Kerberos realms which are all + upper case. You can use asetkey from the openafs-krb5 package, or + if you used AFS3 salt to create the key, the bos addkey command. 3) This machine should have a filesystem mounted on /vicepa. If you - do not have a free partition, then create a large file by using dd - to extract bytes from /dev/zero. Create a filesystem on this file - and mount it using -oloop. + do not have a free partition, then create a large file by using dd + to extract bytes from /dev/zero. Create a filesystem on this file + and mount it using -oloop. 4) You will need an administrative principal created in a Kerberos -realm. This principal will be added to susers and -system:administrators and thus will be able to run administrative -commands. Generally the user is a root instance of some administravie -user. For example if jruser is an administrator then it would be -reasonable to create jruser/root and specify jruser/root as the user -to be added in this script. + realm. This principal will be added to susers and + system:administrators and thus will be able to run administrative + commands. Generally the user is a root or admin instance of some + administrative user. For example if jruser is an administrator then + it would be reasonable to create jruser/root (or jruser/admin) and + specify that as the user to be added in this script. 5) The AFS client must not be running on this workstation. It will be -at the end of this script. + at the end of this script. Do you meet these requirements? [y/n] y If the fileserver is not running, this may hang for 30 seconds. /etc/init.d/openafs-fileserver stop -Stopping AFS Server: bosserver. -What administrative principal should be used?hartmans -echo \>snorklewacker.mit.edu >/etc/openafs/server/CellServDB -/etc/init.d/openafs-fileserver start -Starting AFS Server: ===================== U.S. Government Restricted Rights ====================== -If you are licensing the Software on behalf of the U.S. Government -("Government"), the following provisions apply to you. If the Software is -supplied to the Department of Defense ("DoD"), it is classified as "Commercial -Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the -Federal Acquisition Regulations ("DFARS") (or any successor regulations) -and the Government is acquiring only the license rights granted herein (the -license rights customarily provided to non-Government users). If the Software -is supplied to any unit or agency of the Government other than DoD, it is -classified as "Restricted Computer Software" and the Government's rights in -the Software are defined in paragraph 52.227-19 of the Federal Acquisition -Regulations ("FAR") (or any successor regulations) or, in the case of NASA, -in paragraph 18.52.227-86 of the NASA Supplement in the FAR (or any successor -regulations). +Stopping AFS Server: bos: could not find entry (can't find cell '' in cell database) bosserver. -bos addhost snorklewacker snorklewacker -localauth ||true -bos adduser snorklewacker hartmans -localauth +What administrative principal should be used? faheem/admin + +/etc/openafs/server/CellServDB already exists, renaming to .old +/etc/init.d/openafs-fileserver start +Starting AFS Server: bosserver. +bos adduser riverside.dulci.biostat.duke.edu faheem.admin -localauth pt_util: /var/lib/openafs/db/prdb.DB0: Bad UBIK_MAGIC. Is 0 should be 354545 Ubik Version is: 2.0 Error while creating system:administrators: Entry for id already exists pt_util: Ubik Version number changed during execution. Old Version = 2.0, new version = 33554432.0 -bos create snorklewacker ptserver simple /usr/lib/openafs/ptserver -localauth -bos create snorklewacker vlserver simple /usr/lib/openafs/vlserver -localauth -bos create snorklewacker fs fs -cmd /usr/lib/openafs/fileserver -cmd /usr/lib/openafs/volserver -cmd /usr/lib/openafs/salvager -localauth +bos create riverside.dulci.biostat.duke.edu ptserver simple /usr/lib/openafs/ptserver -localauth +bos create riverside.dulci.biostat.duke.edu vlserver simple /usr/lib/openafs/vlserver -localauth +bos create riverside.dulci.biostat.duke.edu fs fs -cmd /usr/lib/openafs/fileserver -cmd /usr/lib/openafs/volserver -cmd /usr/lib/openafs/salvager -localauth Waiting for database elections: done. -vos create snorklewacker a root.afs -localauth -Volume 536870924 created on partition /vicepa of snorklewacker -echo snorklewacker.mit.edu >/etc/openafs/ThisCell +vos create riverside.dulci.biostat.duke.edu a root.afs -localauth +Volume 536870912 created on partition /vicepa of riverside.dulci.biostat.duke.edu /etc/init.d/openafs-client force-start -Starting AFS services: ===================== U.S. Government Restricted Rights ====================== -If you are licensing the Software on behalf of the U.S. Government -("Government"), the following provisions apply to you. If the Software is -supplied to the Department of Defense ("DoD"), it is classified as "Commercial -Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the -Federal Acquisition Regulations ("DFARS") (or any successor regulations) -and the Government is acquiring only the license rights granted herein (the -license rights customarily provided to non-Government users). If the Software -is supplied to any unit or agency of the Government other than DoD, it is -classified as "Restricted Computer Software" and the Government's rights in -the Software are defined in paragraph 52.227-19 of the Federal Acquisition -Regulations ("FAR") (or any successor regulations) or, in the case of NASA, -in paragraph 18.52.227-86 of the NASA Supplement in the FAR (or any successor -regulations). -afsd: All AFS daemons started. - afsd. -Now, get tokens as hartmans in the snorklewacker.mit.edu cell. Then, run -afs-rootvol. -snorklewacker:/# -snorklewacker:/# kinit hartmans -Password for hartmans@SNORKLEWACKER.MIT.EDU: foo - -snorklewacker:/# aklog snorklewacker.mit.edu -k SNORKLEWACKER.MIT.EDU -snorklewacker:/# afs-rootvol - Prerequisites - -In order to set up the root.afs volume, you must meet the following pre-conditions: +Starting AFS services: afsd: All AFS daemons started. + afsd. + +Now, get tokens as faheem/admin in the dulci.biostat.duke.edu cell. +Then, run afs-rootvol. +riverside:/home/faheem# bos status localhost -local +Instance ptserver, currently running normally. +Instance vlserver, currently running normally. +Instance fs, currently running normally. + Auxiliary status is: file server running. +riverside:/home/faheem# kinit faheem/admin@DULCI.BIOSTAT.DUKE.EDU +Password for faheem/admin@DULCI.BIOSTAT.DUKE.EDU: +riverside:/home/faheem# aklog dulci.biostat.duke.edu -k DULCI.BIOSTAT.DUKE.EDU +riverside:/home/faheem# tokens + +Tokens held by the Cache Manager: + +User's (AFS ID 1) tokens for afs@dulci.biostat.duke.edu [Expires Aug 24 13:22] + --End of list-- +riverside:/home/faheem# boss status riverside +Instance ptserver, currently running normally. +Instance vlserver, currently running normally. +Instance fs, currently running normally. + Auxiliary status is: file server running. +riverside:/home/faheem# afs-rootvol + Prerequisites + +In order to set up the root.afs volume, you must meet the following +pre-conditions: 1) The cell must be configured, running a database server with a - volume location and protection server. + volume location and protection server. The afs-newcell script will + set up these services. -2) You must be logged into the cell with tokens in - system:administrators and with a principal that is in the susers +2) You must be logged into the cell with tokens in for a user in + system:administrators and with a principal that is in the UserList file of the servers in the cell. -3) You need a fileserver in the cell with partitions mounted and a root.afs volume created. - Presumably, it has no volumes on it, although the script will work - so long as nothing besides root.afs exists. +3) You need a fileserver in the cell with partitions mounted and a + root.afs volume created. Presumably, it has no volumes on it, + although the script will work so long as nothing besides root.afs + exists. The afs-newcell script will set up the file server. 4) The AFS client must be running pointed at the new cell. -Do you meet these conditions? (Y/n) y -You will need to select a server (hostname) and AFS -partition on which to create the root volumes. -What AFS Server should volumes be placed on? snorklewacker +Do you meet these conditions? (y/n) y + +You will need to select a server (hostname) and AFS partition on which to +create the root volumes. + +What AFS Server should volumes be placed on? riverside.dulci.biostat.duke.edu What partition? [a] +vos create riverside.dulci.biostat.duke.edu a root.cell -localauth +Volume 536870915 created on partition /vicepa of riverside.dulci.biostat.duke.edu fs sa /afs system:anyuser rl -vos create snorklewacker a root.cell -localauth -Volume 536870927 created on partition /vicepa of snorklewacker -fs mkm /afs/snorklewacker.mit.edu root.cell -cell snorklewacker.mit.edu -fs mkm /afs/andrew.cmu.edu root.cell -cell andrew.cmu.edu -fs mkm /afs/cs.cmu.edu root.cell -cell cs.cmu.edu -fs mkm /afs/ece.cmu.edu root.cell -cell ece.cmu.edu -fs mkm /afs/athena.mit.edu root.cell -cell athena.mit.edu -fs mkm /afs/dev.mit.edu root.cell -cell dev.mit.edu -fs mkm /afs/net.mit.edu root.cell -cell net.mit.edu -fs mkm /afs/sipb.mit.edu root.cell -cell sipb.mit.edu -fs mkm /afs/ir.stanford.edu root.cell -cell ir.stanford.edu -fs mkm /afs/umr.edu root.cell -cell umr.edu -fs mkm /afs/dementia.org root.cell -cell dementia.org -fs sa /afs/snorklewacker.mit.edu system:anyuser rl -fs mkm /afs/.snorklewacker.mit.edu root.cell -cell snorklewacker.mit.edu -rw +fs mkm /afs/dulci.biostat.duke.edu root.cell -cell dulci.biostat.duke.edu -fast || true +fs mkm /afs/grand.central.org root.cell -cell grand.central.org -fast || true +fs mkm /afs/wu-wien.ac.at root.cell -cell wu-wien.ac.at -fast || true +fs mkm /afs/hephy.at root.cell -cell hephy.at -fast || true +fs mkm /afs/itp.tugraz.at root.cell -cell itp.tugraz.at -fast || true +fs mkm /afs/cern.ch root.cell -cell cern.ch -fast || true +fs mkm /afs/ams.cern.ch root.cell -cell ams.cern.ch -fast || true +fs mkm /afs/ethz.ch root.cell -cell ethz.ch -fast || true +fs mkm /afs/psi.ch root.cell -cell psi.ch -fast || true +fs mkm /afs/extundo.com root.cell -cell extundo.com -fast || true +fs mkm /afs/mekinok.com root.cell -cell mekinok.com -fast || true +fs mkm /afs/membrain.com root.cell -cell membrain.com -fast || true +fs mkm /afs/midnightlinux.com root.cell -cell midnightlinux.com -fast || true +fs mkm /afs/setfilepointer.com root.cell -cell setfilepointer.com -fast || true +fs mkm /afs/sodre.cx root.cell -cell sodre.cx -fast || true +fs mkm /afs/desy.de root.cell -cell desy.de -fast || true +fs mkm /afs/gppc.de root.cell -cell gppc.de -fast || true +fs mkm /afs/ifh.de root.cell -cell ifh.de -fast || true +fs mkm /afs/lrz-muenchen.de root.cell -cell lrz-muenchen.de -fast || true +fs mkm /afs/ipp-garching.mpg.de root.cell -cell ipp-garching.mpg.de -fast || true +fs mkm /afs/mpe.mpg.de root.cell -cell mpe.mpg.de -fast || true +fs mkm /afs/i1.informatik.rwth-aachen.de root.cell -cell i1.informatik.rwth-aachen.de -fast || true +fs mkm /afs/tu-bs.de root.cell -cell tu-bs.de -fast || true +fs mkm /afs/tu-chemnitz.de root.cell -cell tu-chemnitz.de -fast || true +fs mkm /afs/e18.ph.tum.de root.cell -cell e18.ph.tum.de -fast || true +fs mkm /afs/uni-bonn.de root.cell -cell uni-bonn.de -fast || true +fs mkm /afs/atlass01.physik.uni-bonn.de root.cell -cell atlass01.physik.uni-bonn.de -fast || true +fs mkm /afs/uni-freiburg.de root.cell -cell uni-freiburg.de -fast || true +fs mkm /afs/physik.uni-freiburg.de root.cell -cell physik.uni-freiburg.de -fast || true +fs mkm /afs/urz.uni-heidelberg.de root.cell -cell urz.uni-heidelberg.de -fast || true +fs mkm /afs/uni-hohenheim.de root.cell -cell uni-hohenheim.de -fast || true +fs mkm /afs/rz.uni-jena.de root.cell -cell rz.uni-jena.de -fast || true +fs mkm /afs/meteo.uni-koeln.de root.cell -cell meteo.uni-koeln.de -fast || true +fs mkm /afs/rrz.uni-koeln.de root.cell -cell rrz.uni-koeln.de -fast || true +fs mkm /afs/physik.uni-mainz.de root.cell -cell physik.uni-mainz.de -fast || true +fs mkm /afs/uni-mannheim.de root.cell -cell uni-mannheim.de -fast || true +fs mkm /afs/physik.uni-wuppertal.de root.cell -cell physik.uni-wuppertal.de -fast || true +fs mkm /afs/s-et.aau.dk root.cell -cell s-et.aau.dk -fast || true +fs mkm /afs/ies.auc.dk root.cell -cell ies.auc.dk -fast || true +fs mkm /afs/asu.edu root.cell -cell asu.edu -fast || true +fs mkm /afs/hep.caltech.edu root.cell -cell hep.caltech.edu -fast || true +fs mkm /afs/clarkson.edu root.cell -cell clarkson.edu -fast || true +fs mkm /afs/andrew.cmu.edu root.cell -cell andrew.cmu.edu -fast || true +fs mkm /afs/club.cc.cmu.edu root.cell -cell club.cc.cmu.edu -fast || true +fs mkm /afs/chem.cmu.edu root.cell -cell chem.cmu.edu -fast || true +fs mkm /afs/cs.cmu.edu root.cell -cell cs.cmu.edu -fast || true +fs mkm /afs/ece.cmu.edu root.cell -cell ece.cmu.edu -fast || true +fs mkm /afs/scotch.ece.cmu.edu root.cell -cell scotch.ece.cmu.edu -fast || true +fs mkm /afs/qatar.cmu.edu root.cell -cell qatar.cmu.edu -fast || true +fs mkm /afs/sbp.ri.cmu.edu root.cell -cell sbp.ri.cmu.edu -fast || true +fs mkm /afs/msc.cornell.edu root.cell -cell msc.cornell.edu -fast || true +fs mkm /afs/dbic.dartmouth.edu root.cell -cell dbic.dartmouth.edu -fast || true +fs mkm /afs/northstar.dartmouth.edu root.cell -cell northstar.dartmouth.edu -fast || true +fs mkm /afs/eecs.harvard.edu root.cell -cell eecs.harvard.edu -fast || true +fs mkm /afs/iastate.edu root.cell -cell iastate.edu -fast || true +fs mkm /afs/athena.mit.edu root.cell -cell athena.mit.edu -fast || true +fs mkm /afs/dev.mit.edu root.cell -cell dev.mit.edu -fast || true +fs mkm /afs/net.mit.edu root.cell -cell net.mit.edu -fast || true +fs mkm /afs/sipb.mit.edu root.cell -cell sipb.mit.edu -fast || true +fs mkm /afs/msu.edu root.cell -cell msu.edu -fast || true +fs mkm /afs/nd.edu root.cell -cell nd.edu -fast || true +fs mkm /afs/pitt.edu root.cell -cell pitt.edu -fast || true +fs mkm /afs/cs.pitt.edu root.cell -cell cs.pitt.edu -fast || true +fs mkm /afs/psc.edu root.cell -cell psc.edu -fast || true +fs mkm /afs/scoobydoo.psc.edu root.cell -cell scoobydoo.psc.edu -fast || true +fs mkm /afs/cede.psu.edu root.cell -cell cede.psu.edu -fast || true +fs mkm /afs/rose-hulman.edu root.cell -cell rose-hulman.edu -fast || true +fs mkm /afs/cs.rose-hulman.edu root.cell -cell cs.rose-hulman.edu -fast || true +fs mkm /afs/rpi.edu root.cell -cell rpi.edu -fast || true +fs mkm /afs/hep.sc.edu root.cell -cell hep.sc.edu -fast || true +fs mkm /afs/cs.stanford.edu root.cell -cell cs.stanford.edu -fast || true +fs mkm /afs/ir.stanford.edu root.cell -cell ir.stanford.edu -fast || true +fs mkm /afs/slac.stanford.edu root.cell -cell slac.stanford.edu -fast || true +fs mkm /afs/cats.ucsc.edu root.cell -cell cats.ucsc.edu -fast || true +fs mkm /afs/acm.uiuc.edu root.cell -cell acm.uiuc.edu -fast || true +fs mkm /afs/ncsa.uiuc.edu root.cell -cell ncsa.uiuc.edu -fast || true +fs mkm /afs/umbc.edu root.cell -cell umbc.edu -fast || true +fs mkm /afs/glue.umd.edu root.cell -cell glue.umd.edu -fast || true +fs mkm /afs/wam.umd.edu root.cell -cell wam.umd.edu -fast || true +fs mkm /afs/umich.edu root.cell -cell umich.edu -fast || true +fs mkm /afs/atlas.umich.edu root.cell -cell atlas.umich.edu -fast || true +fs mkm /afs/citi.umich.edu root.cell -cell citi.umich.edu -fast || true +fs mkm /afs/lsa.umich.edu root.cell -cell lsa.umich.edu -fast || true +fs mkm /afs/math.lsa.umich.edu root.cell -cell math.lsa.umich.edu -fast || true +fs mkm /afs/umr.edu root.cell -cell umr.edu -fast || true +fs mkm /afs/physics.unc.edu root.cell -cell physics.unc.edu -fast || true +fs mkm /afs/uncc.edu root.cell -cell uncc.edu -fast || true +fs mkm /afs/eng.utah.edu root.cell -cell eng.utah.edu -fast || true +fs mkm /afs/cs.uwm.edu root.cell -cell cs.uwm.edu -fast || true +fs mkm /afs/cs.wisc.edu root.cell -cell cs.wisc.edu -fast || true +fs mkm /afs/engr.wisc.edu root.cell -cell engr.wisc.edu -fast || true +fs mkm /afs/hep.wisc.edu root.cell -cell hep.wisc.edu -fast || true +fs mkm /afs/physics.wisc.edu root.cell -cell physics.wisc.edu -fast || true +fs mkm /afs/ifca.unican.es root.cell -cell ifca.unican.es -fast || true +fs mkm /afs/ific.uv.es root.cell -cell ific.uv.es -fast || true +fs mkm /afs/biocenter.helsinki.fi root.cell -cell biocenter.helsinki.fi -fast || true +fs mkm /afs/dapnia.saclay.cea.fr root.cell -cell dapnia.saclay.cea.fr -fast || true +fs mkm /afs/in2p3.fr root.cell -cell in2p3.fr -fast || true +fs mkm /afs/anl.gov root.cell -cell anl.gov -fast || true +fs mkm /afs/rhic.bnl.gov root.cell -cell rhic.bnl.gov -fast || true +fs mkm /afs/usatlas.bnl.gov root.cell -cell usatlas.bnl.gov -fast || true +fs mkm /afs/fnal.gov root.cell -cell fnal.gov -fast || true +fs mkm /afs/ic-afs.arc.nasa.gov root.cell -cell ic-afs.arc.nasa.gov -fast || true +fs mkm /afs/jpl.nasa.gov root.cell -cell jpl.nasa.gov -fast || true +fs mkm /afs/nersc.gov root.cell -cell nersc.gov -fast || true +fs mkm /afs/bme.hu root.cell -cell bme.hu -fast || true +fs mkm /afs/caspur.it root.cell -cell caspur.it -fast || true +fs mkm /afs/fusione.it root.cell -cell fusione.it -fast || true +fs mkm /afs/icemb.it root.cell -cell icemb.it -fast || true +fs mkm /afs/infn.it root.cell -cell infn.it -fast || true +fs mkm /afs/kloe.infn.it root.cell -cell kloe.infn.it -fast || true +fs mkm /afs/le.infn.it root.cell -cell le.infn.it -fast || true +fs mkm /afs/lnf.infn.it root.cell -cell lnf.infn.it -fast || true +fs mkm /afs/lngs.infn.it root.cell -cell lngs.infn.it -fast || true +fs mkm /afs/pi.infn.it root.cell -cell pi.infn.it -fast || true +fs mkm /afs/psm.it root.cell -cell psm.it -fast || true +fs mkm /afs/tgrid.it root.cell -cell tgrid.it -fast || true +fs mkm /afs/ictp.trieste.it root.cell -cell ictp.trieste.it -fast || true +fs mkm /afs/ing.uniroma1.it root.cell -cell ing.uniroma1.it -fast || true +fs mkm /afs/vn.uniroma3.it root.cell -cell vn.uniroma3.it -fast || true +fs mkm /afs/italia root.cell -cell italia -fast || true +fs mkm /afs/cmf.nrl.navy.mil root.cell -cell cmf.nrl.navy.mil -fast || true +fs mkm /afs/lcp.nrl.navy.mil root.cell -cell lcp.nrl.navy.mil -fast || true +fs mkm /afs/es.net root.cell -cell es.net -fast || true +fs mkm /afs/laroia.net root.cell -cell laroia.net -fast || true +fs mkm /afs/sinenomine.net root.cell -cell sinenomine.net -fast || true +fs mkm /afs/slackers.net root.cell -cell slackers.net -fast || true +fs mkm /afs/nikhef.nl root.cell -cell nikhef.nl -fast || true +fs mkm /afs/1ts.org root.cell -cell 1ts.org -fast || true +fs mkm /afs/bazquux.org root.cell -cell bazquux.org -fast || true +fs mkm /afs/coed.org root.cell -cell coed.org -fast || true +fs mkm /afs/dementia.org root.cell -cell dementia.org -fast || true +fs mkm /afs/firelion.org root.cell -cell firelion.org -fast || true +fs mkm /afs/hackish.org root.cell -cell hackish.org -fast || true +fs mkm /afs/idahofuturetruck.org root.cell -cell idahofuturetruck.org -fast || true +fs mkm /afs/nimlabs.org root.cell -cell nimlabs.org -fast || true +fs mkm /afs/nomh.org root.cell -cell nomh.org -fast || true +fs mkm /afs/oc7.org root.cell -cell oc7.org -fast || true +fs mkm /afs/openafs.org root.cell -cell openafs.org -fast || true +fs mkm /afs/e.kth.se root.cell -cell e.kth.se -fast || true +fs mkm /afs/hallf.kth.se root.cell -cell hallf.kth.se -fast || true +fs mkm /afs/isk.kth.se root.cell -cell isk.kth.se -fast || true +fs mkm /afs/it.kth.se root.cell -cell it.kth.se -fast || true +fs mkm /afs/md.kth.se root.cell -cell md.kth.se -fast || true +fs mkm /afs/mech.kth.se root.cell -cell mech.kth.se -fast || true +fs mkm /afs/nada.kth.se root.cell -cell nada.kth.se -fast || true +fs mkm /afs/pdc.kth.se root.cell -cell pdc.kth.se -fast || true +fs mkm /afs/stacken.kth.se root.cell -cell stacken.kth.se -fast || true +fs mkm /afs/syd.kth.se root.cell -cell syd.kth.se -fast || true +fs mkm /afs/physto.se root.cell -cell physto.se -fast || true +fs mkm /afs/sanchin.se root.cell -cell sanchin.se -fast || true +fs mkm /afs/su.se root.cell -cell su.se -fast || true +fs mkm /afs/f9.ijs.si root.cell -cell f9.ijs.si -fast || true +fs mkm /afs/p-ng.si root.cell -cell p-ng.si -fast || true +fs mkm /afs/phy.bris.ac.uk root.cell -cell phy.bris.ac.uk -fast || true +fs mkm /afs/hep.man.ac.uk root.cell -cell hep.man.ac.uk -fast || true +fs mkm /afs/rl.ac.uk root.cell -cell rl.ac.uk -fast || true +fs sa /afs/dulci.biostat.duke.edu system:anyuser rl +fs mkm /afs/.dulci.biostat.duke.edu root.cell -cell dulci.biostat.duke.edu -rw fs mkm /afs/.root.afs root.afs -rw -vos create snorklewacker a user -localauth -Volume 536870930 created on partition /vicepa of snorklewacker -fs mkm /afs/snorklewacker.mit.edu/user user -fs sa /afs/snorklewacker.mit.edu/user system:anyuser rl -vos create snorklewacker a service -localauth -Volume 536870933 created on partition /vicepa of snorklewacker -fs mkm /afs/snorklewacker.mit.edu/service service -fs sa /afs/snorklewacker.mit.edu/service system:anyuser rl -ln -s /afs/snorklewacker.mit.edu /afs/snorklewacker -ln -s /afs/.snorklewacker.mit.edu /afs/.snorklewacker -vos addsite snorklewacker a root.afs -localauth -Added replication site snorklewacker /vicepa for volume root.afs -vos addsite snorklewacker a root.cell -localauth -Added replication site snorklewacker /vicepa for volume root.cell +vos create riverside.dulci.biostat.duke.edu a user -localauth +Volume 536870918 created on partition /vicepa of riverside.dulci.biostat.duke.edu +fs mkm /afs/dulci.biostat.duke.edu/user user +fs sa /afs/dulci.biostat.duke.edu/user system:anyuser rl +vos create riverside.dulci.biostat.duke.edu a service -localauth +Volume 536870921 created on partition /vicepa of riverside.dulci.biostat.duke.edu +fs mkm /afs/dulci.biostat.duke.edu/service service +fs sa /afs/dulci.biostat.duke.edu/service system:anyuser rl +ln -s dulci.biostat.duke.edu /afs/dulci +ln -s .dulci.biostat.duke.edu /afs/.dulci +vos addsite riverside.dulci.biostat.duke.edu a root.afs -localauth +Added replication site riverside.dulci.biostat.duke.edu /vicepa for volume root.afs +vos addsite riverside.dulci.biostat.duke.edu a root.cell -localauth +Added replication site riverside.dulci.biostat.duke.edu /vicepa for volume root.cell vos release root.afs -localauth Released volume root.afs successfully vos release root.cell -localauth Released volume root.cell successfully -snorklewacker:/# ls /afs -andrew.cmu.edu dementia.org ir.stanford.edu snorklewacker -athena.mit.edu dev.mit.edu net.mit.edu snorklewacker.mit.edu -cs.cmu.edu ece.cmu.edu sipb.mit.edu umr.edu -snorklewacker:/# ls /afs/athena.mit.edu -activity contrib dept project service system -astaff course org reference software user -snorklewacker:/# ls /afs/snorklewacker +riverside:/home/faheem# cd /afs/dulci.biostat.duke.edu/ +riverside:/afs/dulci.biostat.duke.edu# ls service user -snorklewacker:/# diff --git a/src/packaging/Debian/control b/src/packaging/Debian/control index ec2ec1cb1..d72177ddd 100644 --- a/src/packaging/Debian/control +++ b/src/packaging/Debian/control @@ -3,13 +3,15 @@ Section: net Priority: optional Maintainer: Sam Hartman Uploaders: Russ Allbery -Build-Depends: debhelper (>= 4.1.16), libncurses5-dev, libpam0g-dev, bison, docbook-to-man, flex, perl, comerr-dev -Standards-Version: 3.6.2 +Build-Depends: debhelper (>= 5), libncurses5-dev, libpam0g-dev, bison, + flex, perl, comerr-dev, libkrb5-dev, autoconf, automake, quilt (>= 0.40) +Standards-Version: 3.7.3 +Homepage: http://www.openafs.org/ Package: openafs-client -Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x Depends: ${shlibs:Depends}, ${misc:Depends} -Recommends: openafs-modules-source (>= 1.2.9) | openafs-modules2 +Recommends: openafs-modules-source (>= 1.2.9) | openafs-modules2, lsof Suggests: openafs-doc Conflicts: arla, openafs-modules1 Description: AFS distributed filesystem client support @@ -22,7 +24,7 @@ Description: AFS distributed filesystem client support Package: openafs-kpasswd Priority: extra -Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x Depends: ${shlibs:Depends}, openafs-client Conflicts: krb5-user, heimdal-clients, kerberos4kth-clients Description: AFS distributed filesystem old password changing @@ -36,8 +38,8 @@ Description: AFS distributed filesystem old password changing package for new cells or for cells using Kerberos v5. Package: openafs-fileserver -Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 -Depends: ${shlibs:Depends}, ${misc:Depends}, openafs-client +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x +Depends: ${shlibs:Depends}, ${misc:Depends}, openafs-client, lsb-base Recommends: ntp Suggests: openafs-doc Description: AFS distributed filesystem file server @@ -49,7 +51,7 @@ Description: AFS distributed filesystem file server installed on any machine that will export files into AFS. Package: openafs-dbserver -Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x Depends: ${shlibs:Depends}, ${perl:Depends}, openafs-fileserver, openafs-client Suggests: openafs-doc Conflicts: openafs-ptutil @@ -64,13 +66,37 @@ Description: AFS distributed filesystem database server installed on the servers that will act as volume location and protection servers. +Package: openafs-doc +Section: doc +Architecture: all +Description: AFS distributed filesystem documentation + AFS is a distributed filesystem allowing cross-platform sharing of files + among multiple computers. Facilities are provided for access control, + authentication, backup and administrative management. + . + This package contains the OpenAFS user's and reference manuals, some + protocol documentation, and other OpenAFS documentation. + +Package: openafs-krb5 +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x +Depends: ${shlibs:Depends} +Description: AFS distributed filesystem Kerberos 5 integration + AFS is a distributed filesystem allowing cross-platform sharing of files + among multiple computers. Facilities are provided for access control, + authentication, backup and administrative management. + . + This package provides aklog, a utility for authenticating to AFS using + Kerberos 5. It also provides asetkey, a utility to set AFS server keys + from a Kerberos keytab, and ka-forwarder, a utility to forward kaserver + requests to a KDC using fakeka. + Package: libopenafs-dev Section: libdevel -Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x Priority: extra Depends: ${shlibs:Depends} Suggests: openafs-doc -Conflicts: arla-dev +Conflicts: arla-dev, liblwp-dev Description: AFS distributed filesystem development libraries AFS is a distributed filesystem allowing cross-platform sharing of files among multiple computers. Facilities are provided for access @@ -81,7 +107,7 @@ Description: AFS distributed filesystem development libraries Package: openafs-modules-source Priority: extra -Depends: bison, flex, debhelper (>= 4.0.0), kernel-package | module-assistant +Depends: bison, flex, debhelper (>= 5), kernel-package | module-assistant Architecture: all Description: AFS distributed filesystem kernel module source AFS is a distributed filesystem allowing cross-platform sharing of @@ -93,7 +119,7 @@ Description: AFS distributed filesystem kernel module source Package: libpam-openafs-kaserver Priority: extra Depends: ${shlibs:Depends}, openafs-client -Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x Description: AFS distributed filesystem kaserver PAM module AFS is a distributed filesystem allowing cross-platform sharing of files among multiple computers. Facilities are provided for access @@ -101,3 +127,18 @@ Description: AFS distributed filesystem kaserver PAM module . This package provides a PAM module for existing sites using the AFS kaserver for authentication. New sites should use a Kerberos v5 + implementation, a Kerberos v5 PAM module, and libpam-openafs-session. + +Package: openafs-dbg +Priority: extra +Depends: openafs-fileserver (= ${binary:Version}) + | libpam-openafs-kaserver (= ${binary:Version}) +Architecture: i386 powerpc sparc alpha s390 ia64 hppa amd64 ppc64 s390x +Section: libdevel +Description: AFS distributed filesystem debugging information + AFS is a distributed filesystem allowing cross-platform sharing of + files among multiple computers. Facilities are provided for access + control, authentication, backup and administrative management. + . + This package contains the debugging information for the OpenAFS + fileserver and volserver and for libpam-openafs-kaserver. diff --git a/src/packaging/Debian/control.module b/src/packaging/Debian/control.module deleted file mode 100644 index 66aaad4eb..000000000 --- a/src/packaging/Debian/control.module +++ /dev/null @@ -1,20 +0,0 @@ -Source: openafs -Section: net -Priority: optional -Maintainer: Sam Hartman -Uploaders: Russ Allbery -Build-Depends: debhelper (>= 4.1.16), flex, bison -Standards-Version: 3.6.2 - -Package: openafs-modules-=KVERS -Conflicts: openafs-client (<< 1.2.9) -Provides: openafs-modules2 -Architecture: any -Recommends: =IMG-=KVERS -Description: AFS distributed filesystem kernel module - AFS is a distributed filesystem allowing cross-platform sharing of - files among multiple computers. Facilities are provided for access - control, authentication, backup and administrative management. - . - This package provides the compiled AFS kernel module for kernel - version =KVERS. diff --git a/src/packaging/Debian/control.module-image b/src/packaging/Debian/control.module-image deleted file mode 100644 index 7d38b409b..000000000 --- a/src/packaging/Debian/control.module-image +++ /dev/null @@ -1,17 +0,0 @@ -Source: openafs -Section: net -Priority: optional -Maintainer: Sam Hartman -Standards-Version: 3.1.1 - -Package: openafs-modules-=KVERS -Conflicts: openafs-client (<< 1.2.2-0) -Provides: openafs-modules1 -Architecture: any -Recommends: kernel-image-=KVERS (= =KREVS) -Description: The AFS distributed filesystem- Kernel Module - AFS is a distributed filesystem allowing cross-platform sharing of - files among multiple computers. Facilities are provided for access - control, authentication, backup and administrative management. - . - This package provides the kernel module for the filesystem diff --git a/src/packaging/Debian/copyright b/src/packaging/Debian/copyright index 0bed00b2f..ee56891f4 100644 --- a/src/packaging/Debian/copyright +++ b/src/packaging/Debian/copyright @@ -11,13 +11,38 @@ Upstream Maintainers: openafs-gatekeepers@openafs.org The upstream source has been repackaged to remove the src/packaging/MacOS -directory, which contained a file (afssettings.m) that was covered under -the Apple Public Source License 2.0. This license is not considered -DFSG-free. Since the repackaging was needed anyway, the WINNT directory -was also dropped, reducing the size of the upstream tarball by 8MB. +and src/platform/DARWIN directories and the files src/afs/sysctl.h and +src/util/fstab.c. These directories and files are only used for building +on MacOS X and contained content covered by the Apple Public Source +License 2.0. This license is not considered DFSG-free. Since the +repackaging was needed anyway, the WINNT directory was also dropped, +reducing the size of the upstream tarball by 8MB. + +The upstream openafs-src and openafs-doc tarballs have been combined into +one source tarball. + +The openafs-doc package contains the OpenAFS documentation as distributed +by the OpenAFS project, which does not include the original source. These +documents were originally created using TeX internally by Transarc, the +original authors of AFS. By the time that AFS was released as free +software by IBM after acquiring Transarc, the original source could no +longer be found. It has apparently been lost over the years. + +Although these HTML and PDF files would not normally be considered source, +they're all that's available until they can be rewritten and updated in +some better format. They have been released under the IBM Public License +Version 1.0 (included below), the same license as the rest of OpenAFS. + +Normally, this documentation could not be included in Debian without being +accompanied by the original TeX source and build tools under DFSG#2, but +under the circumstances, these files essentially are the source, as +they're all that anyone has. Copyright: + Copyright 2000, International Business Machines Corporation and others. + All Rights Reserved. + IBM Public License Version 1.0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM @@ -134,7 +159,7 @@ Copyright: Each Contributor must include the following in a conspicuous location in the Program: - Copyright © {date here}, International Business Machines Corporation + Copyright © {date here}, International Business Machines Corporation and others. All Rights Reserved. In addition, each Contributor must identify itself as the originator @@ -254,7 +279,7 @@ Copyright: Kerberos 5 ticket support in rxkad is subject to the following copyright: /* - * Copyright (c) 1995, 1996, 1997, 2002 Kungliga Tekniska Högskolan + * Copyright (c) 1995, 1996, 1997, 2002 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -341,3 +366,34 @@ Some portions of Rx are subject to the following license: * 2550 Garcia Avenue * Mountain View, California 94043 */ + +ka-forwarder was taken from the AFS/Kerberos 5 Migration Kit, to which it +was donated by Jeffrey T. Hutzelman. It is covered under the following +license: +/* + * Copyright (c) 1993 Carnegie Mellon University + * All Rights Reserved. + * + * Permission to use, copy, modify and distribute this software and its + * documentation is hereby granted, provided that both the copyright + * notice and this permission notice appear in all copies of the + * software, derivative works or modified versions, and any portions + * thereof, and that both notices appear in supporting documentation. + * + * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + * + * Carnegie Mellon requests users of this software to return to + * + * Software Distribution Coordinator or Software_Distribution@CS.CMU.EDU + * School of Computer Science + * Carnegie Mellon University + * Pittsburgh PA 15213-3890 + * + * any improvements or extensions that they make and grant Carnegie Mellon + * the rights to redistribute these changes. + */ + +src/afs/LINUX/osi_flush.s included code under IBM Public License with +permission of the author, Paul MacKerras. diff --git a/src/packaging/Debian/doc/build-man b/src/packaging/Debian/doc/build-man deleted file mode 100644 index 127449516..000000000 --- a/src/packaging/Debian/doc/build-man +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -# -# Install man pages, but fixing up paths as we go. All of the man pages -# are written to use the Transarc paths, and this script fixes those paths to -# be correct for the chosen configure options as the man pages are installed. - -set -e - -manpage="$1" -dest="$2" - -afsbackupdir=/var/lib/openafs/backup -afsbosconfigdir=/etc/openafs -afsconfdir=/etc/openafs/server -afsdbdir=/var/lib/openafs/db -afslocaldir=/etc/openafs/server-local -afslogsdir=/var/log/openafs -afssrvlibexecdir=/usr/lib/openafs -viceetcdir=/etc/openafs - -# Build a particular man page. Takes the section title, the section number, -# the filename of the POD page, and the output file. -buildpage () { - pod2man -c "$1" -r OpenAFS -s "$2" "$3" | \ - sed -e "s%/usr/afs/local/BosConfig%${afsbosconfigdir}/BosConfig%g" \ - -e "s%/usr/afs/etc%${afsconfdir}%g" \ - -e "s%/usr/afs/backup%${afsbackupdir}%g" \ - -e "s%/usr/afs/bin%${afssrvlibexecdir}%g" \ - -e "s%/usr/afs/db%${afsdbdir}%g" \ - -e "s%/usr/afs/local%${afslocaldir}%g" \ - -e "s%/usr/afs/logs%${afslogsdir}%g" \ - -e "s%/usr/vice/etc%${viceetcdir}%g" > "$4" -} - -# Create the output directories. -mkdir -p man1 man5 man8 - -# Do the work with lots of calls to buildpage. -cd pod1 -for f in *.pod ; do - buildpage 'AFS Command Reference' 1 "$f" \ - ../man1/`echo "$f" | sed 's/\.pod$//'`.1 -done -cd .. -cd pod5 -for f in *.pod ; do - buildpage 'AFS File Reference' 5 "$f" \ - ../man5/`echo "$f" | sed 's/\.pod$//'`.5 -done -cd .. -cd pod8 -for f in *.pod ; do - buildpage 'AFS Command Reference' 8 "$f" \ - ../man8/`echo "$f" | sed 's/\.pod$//'`.8 -done -cd .. diff --git a/src/packaging/Debian/filelist b/src/packaging/Debian/filelist deleted file mode 100644 index bb3a06a02..000000000 --- a/src/packaging/Debian/filelist +++ /dev/null @@ -1,15 +0,0 @@ -openafs-client/usr/sbin etc/fms etc/butc etc/backup -openafs-client/usr/bin bin/fs bin/pts bin/bos etc/vos bin/tokens bin/sys -openafs-client/usr/bin bin/udebug bin/cmdebug bin/pagsh etc/rxdebug -openafs-client/usr/sbin root.client/usr/vice/etc/afsd -openafs-client/usr/bin bin/klog bin/kpwvalid bin/unlog -openafs-fileserver/usr/lib/openafs root.server/usr/afs/bin/fileserver root.server/usr/afs/bin/volserver -openafs-kpasswd/usr/bin bin/kpasswd etc/kas -openafs-fileserver/usr/sbin root.server/usr/afs/bin/bosserver -openafs-fileserver/usr/lib/openafs root.server/usr/afs/bin/salvager -openafs-dbserver/usr/sbin root.server/usr/afs/bin/pt_util -openafs-dbserver/usr/lib/openafs root.server/usr/afs/bin/buserver -openafs-dbserver/usr/lib/openafs root.server/usr/afs/bin/vlserver -openafs-dbserver/usr/lib/openafs root.server/usr/afs/bin/ptserver -libopenafs-dev/usr lib -libopenafs-dev/usr include diff --git a/src/packaging/Debian/genchanges.sh b/src/packaging/Debian/genchanges.sh deleted file mode 100644 index e38781bcc..000000000 --- a/src/packaging/Debian/genchanges.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# genchanges.sh - generate a changes file for a deb file generated via -# the make-kpkg utility - -# KSRC, KVERS, KMAINT, and KEMAIL are expected to be passed through the -# environment. - -set -e -umask 022 - -MODVERS=`cat debian/VERSION | sed s/:/\+/` -ARCH=`dpkg --print-architecture` - -mprefix=`grep Package: debian/control.module | cut -d' ' -f 2 | cut -d= -f 1` -chfile="$KSRC/../$mprefix${KVERS}${INT_SUBARCH}_${MODVERS}_${ARCH}.changes" - -dpkg-genchanges -b ${KMAINT:+-m"$KMAINT <$KEMAIL>"} -u"$KSRC/.." \ - -cdebian/control > "$chfile" -#debsign "$chfile" diff --git a/src/packaging/Debian/kern-sysname b/src/packaging/Debian/kern-sysname deleted file mode 100644 index 1aa0293a0..000000000 --- a/src/packaging/Debian/kern-sysname +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh - -if [ x"$KVERS" = x ] ; then - echo "ERROR: no kernel version" >&2 - echo " ($KSRC/include/linux/version.h not found?)" >&2 - echo UNKNOWN - exit 1 -fi - -case `arch` in -i[3456]86) - case $KVERS in - 2.2*) - echo i386_linux22 - ;; - 2.4*) - echo i386_linux24 - ;; - 2.6*) - echo i386_linux26 - ;; - esac - ;; -x86_64) - case $KVERS in - 2.4*) - echo amd64_linux24 - ;; - 2.6*) - echo amd64_linux26 - ;; - esac - ;; -ia64) - echo ia64_linux24 - ;; -alpha) - case $KVERS in - 2.2*) - echo alpha_linux_22 - ;; - 2.4*) - echo alpha_linux_24 - ;; - esac - ;; -sparc) - case $KVERS in - 2.2*) - echo sparc_linux22 - ;; - 2.4*) - echo sparc_linux24 - ;; - esac - ;; -sparc64) - case $KVERS in - 2.2*) - echo sparc64_linux22 - ;; - 2.4*) - echo sparc64_linux24 - ;; - esac - ;; -ppc) - case $KVERS in - 2.2*) - echo ppc_linux22 - ;; - 2.4*) - echo ppc_linux24 - ;; - 2.6) - echo ppc_linux26 - ;; - esac - ;; -ppc64) - case $KVERS in - 2.4*) - echo ppc64_linux24 - ;; - 2.6*) - echo ppc64_linux26 - ;; - esac - ;; -s390) - echo s390_linux24 - ;; -*) - echo "ERROR: unsupported architecture" >&2 - echo UNKNOWN - exit 1 -esac diff --git a/src/packaging/Debian/kernel-version b/src/packaging/Debian/kernel-version deleted file mode 100644 index 093e7d91c..000000000 --- a/src/packaging/Debian/kernel-version +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/perl -# -# Extract the kernel version from the kernel version header file. Takes the -# kernel source path as its only argument. If the version header couldn't be -# found, print nothing and exit quietly. - -my $ksrc = shift; -unless ($ksrc && open (VERSION, "$ksrc/include/linux/version.h")) { - exit 0; -} -my $line = ; -if ($line =~ /"(.+)"/) { - print "$1\n"; -} -exit 0; diff --git a/src/packaging/Debian/libopenafs-dev.install b/src/packaging/Debian/libopenafs-dev.install index 74bdd5ae9..80b252873 100644 --- a/src/packaging/Debian/libopenafs-dev.install +++ b/src/packaging/Debian/libopenafs-dev.install @@ -5,4 +5,4 @@ debian/tmp/usr/include usr debian/tmp/usr/lib/*.a usr/lib debian/tmp/usr/lib/afs usr/lib -debian/doc/man1/rxgen.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/rxgen.1 usr/share/man/man1 diff --git a/src/packaging/Debian/make-links b/src/packaging/Debian/make-links deleted file mode 100644 index 78ddaecee..000000000 --- a/src/packaging/Debian/make-links +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -e -mkdir -p /usr/afs 2>/dev/null || true -cd /usr/afs -ln -s /etc/openafs/server etc -ln -s /etc/openafs/server-local local -ln -s /var/lib/openafs/db db -ln -s /var/log/openafs logs -ln -s /var/lib/openafs/cores cores -ln -s /usr/lib/openafs bin diff --git a/src/packaging/Debian/movefiles b/src/packaging/Debian/movefiles deleted file mode 100644 index 11aed2912..000000000 --- a/src/packaging/Debian/movefiles +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -e - - -# This script reads in a set of lines in the form -# destination sources -# andmoves sources to destination -# destination is relative to the debian directory - -while read dest srcs ; do - mkdir -p debian/$dest ||true - for foo in $srcs; do - cp -rp dest/$foo debian/$dest - done -done diff --git a/src/packaging/Debian/openafs-client.NEWS b/src/packaging/Debian/openafs-client.NEWS new file mode 100644 index 000000000..a78507f7a --- /dev/null +++ b/src/packaging/Debian/openafs-client.NEWS @@ -0,0 +1,24 @@ +openafs (1.4.2-6) unstable; urgency=medium + + As of this release of the OpenAFS kernel module, all cells, including + the local cell, have setuid support turned off by default due to the + possibility of an attacker forging AFS fileserver responses to create a + fake setuid binary. Prior releases enabled setuid support for the local + cell. Those binaries will now run with normal permissions by default. + + This security fix will only take effect once you've installed a kernel + module from openafs-modules-source 1.4.2-6 or later. Doing so is highly + recommended. In the meantime, you can disable setuid support by + running: + + fs setcell -cell -nosuid + + as root (where is your local cell, the one listed in + /etc/openafs/ThisCell). + + If you are certain there is no security risk of an attacker forging AFS + fileserver responses, you can enable setuid status selectively using the + fs setcell command. + + -- Russ Allbery Sun, 11 Mar 2007 22:28:07 -0700 + diff --git a/src/packaging/Debian/openafs-client.conffiles b/src/packaging/Debian/openafs-client.conffiles deleted file mode 100644 index 5f74788b0..000000000 --- a/src/packaging/Debian/openafs-client.conffiles +++ /dev/null @@ -1,2 +0,0 @@ -/etc/openafs/afs.conf -/etc/init.d/openafs-client diff --git a/src/packaging/Debian/openafs-client.init b/src/packaging/Debian/openafs-client.init new file mode 100644 index 000000000..81e5b5ddc --- /dev/null +++ b/src/packaging/Debian/openafs-client.init @@ -0,0 +1,248 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: openafs-client +# Required-Start: $network $time +# Required-Stop: $local_fs $remote_fs $network +# Should-Start: $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: OpenAFS client +# Description: Starts or stops the OpenAFS client, loading the +# OpenAFS kernel module as necessary. +### END INIT INFO +# +# Modified by Sam Hartman for Debian +# Copyright 2000, International Business Machines Corporation and others. +# All Rights Reserved. +# +# This software has been released under the terms of the IBM Public +# License. For details, see the LICENSE file in the top-level source +# directory or online at http://www.openafs.org/dl/license10.html + +# This init script bears little resemblence to the regular upstream init +# script at this point and is therefore maintained as a Debian-specific file. +# The upstream init script assumes Red Hat paths and uses insmod to load the +# module directly rather than using modprobe. + +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +CACHEINFO=${CACHEINFO:-/etc/openafs/cacheinfo} +MODULEDIR=${MODULEDIR:-/lib/modules/`uname -r`/fs} + +exec 3>/dev/null +exec &2 +AFS module $MODULEDIR/$LIBAFS does not exist. +Not starting AFS. Please consider building kernel modules using +instructions in /usr/share/doc/openafs-client/README.modules +EOF + # We must exit successfully here or openafs-client will fail on + # installation unless a module is installed. + exit 0 + fi + LOADED=`/sbin/lsmod | fgrep openafs` + if [ -z "$LOADED" ] ; then + modprobe openafs + status=$? + if [ $status = 0 ] ; then + echo -n " openafs" + fi + return $status + fi + return 0 +} + +# Determine which afsd options to use. /etc/openafs/afs.conf contains the +# settings that are checked here. +choose_afsd_options() { + if [ -z "$OPTIONS" ] || [ "$OPTIONS" = "AUTOMATIC" ] ; then + AFSD_OPTIONS="$VERBOSE" + else + AFSD_OPTIONS="$OPTIONS $VERBOSE" + fi + + # These variables are from /etc/openafs/afs.conf.client and are managed + # automatically by debconf. + if is_on $AFS_AFSDB ; then + AFSD_OPTIONS="$AFSD_OPTIONS -afsdb" + fi + if is_on $AFS_DYNROOT ; then + AFSD_OPTIONS="$AFSD_OPTIONS -dynroot" + fi + if is_on $AFS_FAKESTAT ; then + AFSD_OPTIONS="$AFSD_OPTIONS -fakestat" + fi +} + +# Start afsd. Be careful not to start it if another one is already running, +# as that has a bad tendency to hang the system. Earlier versions of the +# openafs-client package put afsd in /usr/sbin. +start_client() { + if pidof /sbin/afsd >/dev/null || pidof /usr/sbin/afsd >/dev/null ; then + echo "." + else + choose_afsd_options + echo " afsd." + start-stop-daemon --start --quiet --exec /sbin/afsd -- $AFSD_OPTIONS + fi + + # From /etc/openafs/afs.conf.client, whether to enable fcrypt encryption. + if is_on $AFS_CRYPT ; then + fs setcrypt on + fi + + # From /etc/openafs/afs.conf, set a sysname list if one was configured. + if [ -n "$AFS_SYSNAME" ] ; then + fs sysname $AFS_SYSNAME + fi +} + +# Kill all processes that are accessing AFS. Not enabled by default, and +# normally called via kill_all_afs. Warns and does nothing if lsof is not +# installed. +kill_afs() { + signal=$1 + pids=`/usr/bin/lsof -Fp /afs | sed 's/p//'` + if [ -n "$pids" ] ; then + kill -$signal $pids > /dev/null 2>&1 + sleep 1 + fi +} + +# Repeatedly call kill_afs for a series of signals to give AFS-using processes +# a hope of shutting down cleanly if the system is shutting down. Not enabled +# by default. Enable this in /etc/openafs/afs.conf. +kill_all_afs() { + runlevel=`runlevel | sed 's/^. //'` + if [ "$runlevel" -eq 0 ] || [ "$runlevel" -eq 6 ] ; then + if [ -x /usr/bin/lsof ] ; then + echo -n "Killing processes with AFS files open: " + kill_afs HUP + kill_afs TERM + kill_afs ABRT + kill_afs KILL + echo "done." + else + echo '/usr/bin/lsof not found, not killing processes' >&2 + fi + fi +} + + +case "$1" in +start) + if is_on $AFS_CLIENT && test -x /sbin/afsd ; then + echo -n "Starting AFS services:" + if load_client ; then + start_client + $AFS_POST_INIT + else + echo "" + echo "Failed to load AFS kernel module, not starting AFS" >&2 + exit 1 + fi + fi + ;; + +force-start) + if test -x /sbin/afsd ; then + echo -n "Starting AFS services:" + if load_client ; then + start_client + $AFS_POST_INIT + else + echo "" + echo "Failed to load AFS kernel module, not starting AFS" >&2 + exit 1 + fi + fi + ;; + +stop|force-stop) + $AFS_PRE_SHUTDOWN + echo -n "Stopping AFS services:" + if mount | grep -q '^AFS' ; then + umount /afs + echo -n " afsd" + fi + if pidof /usr/sbin/afsd >/dev/null || pidof /sbin/afsd >/dev/null ; then + afsd -shutdown + fi + + # If running with the -rmtsys option, afsd doesn't kill the rmtsys helper + # on afsd -shutdown. Run start-stop-daemon to make sure that everything + # is dead. + start-stop-daemon --stop --quiet --name afsd + + LIBAFS=`/sbin/lsmod | awk 'BEGIN { FS = " " } /openafs/ { print $1 }'` + if [ -n "$LIBAFS" ] ; then + /sbin/rmmod $LIBAFS + echo -n " openafs" + fi + echo "." + ;; + +restart|force-reload) + "$0" stop + "$0" start + ;; + +*) + echo Usage: \ + 'openafs-client {start|force-start|stop|restart|force-reload}' >&2 + exit 1 + +esac diff --git a/src/packaging/Debian/openafs-client.install b/src/packaging/Debian/openafs-client.install index 52428d465..4d4a0684d 100644 --- a/src/packaging/Debian/openafs-client.install +++ b/src/packaging/Debian/openafs-client.install @@ -32,193 +32,193 @@ src/afs/afszcm.cat usr/share/openafs debian/CellServDB usr/share/openafs -debian/doc/man1/afs.1 usr/share/man/man1 -debian/doc/man1/afsmonitor.1 usr/share/man/man1 -debian/doc/man1/bos.1 usr/share/man/man1 -debian/doc/man1/bos_addhost.1 usr/share/man/man1 -debian/doc/man1/bos_addkey.1 usr/share/man/man1 -debian/doc/man1/bos_adduser.1 usr/share/man/man1 -debian/doc/man1/bos_apropos.1 usr/share/man/man1 -debian/doc/man1/bos_create.1 usr/share/man/man1 -debian/doc/man1/bos_delete.1 usr/share/man/man1 -debian/doc/man1/bos_exec.1 usr/share/man/man1 -debian/doc/man1/bos_getdate.1 usr/share/man/man1 -debian/doc/man1/bos_getlog.1 usr/share/man/man1 -debian/doc/man1/bos_getrestart.1 usr/share/man/man1 -debian/doc/man1/bos_help.1 usr/share/man/man1 -debian/doc/man1/bos_install.1 usr/share/man/man1 -debian/doc/man1/bos_listhosts.1 usr/share/man/man1 -debian/doc/man1/bos_listkeys.1 usr/share/man/man1 -debian/doc/man1/bos_listusers.1 usr/share/man/man1 -debian/doc/man1/bos_prune.1 usr/share/man/man1 -debian/doc/man1/bos_removehost.1 usr/share/man/man1 -debian/doc/man1/bos_removekey.1 usr/share/man/man1 -debian/doc/man1/bos_removeuser.1 usr/share/man/man1 -debian/doc/man1/bos_restart.1 usr/share/man/man1 -debian/doc/man1/bos_salvage.1 usr/share/man/man1 -debian/doc/man1/bos_setauth.1 usr/share/man/man1 -debian/doc/man1/bos_setcellname.1 usr/share/man/man1 -debian/doc/man1/bos_setrestart.1 usr/share/man/man1 -debian/doc/man1/bos_shutdown.1 usr/share/man/man1 -debian/doc/man1/bos_start.1 usr/share/man/man1 -debian/doc/man1/bos_startup.1 usr/share/man/man1 -debian/doc/man1/bos_status.1 usr/share/man/man1 -debian/doc/man1/bos_stop.1 usr/share/man/man1 -debian/doc/man1/bos_uninstall.1 usr/share/man/man1 -debian/doc/man1/cmdebug.1 usr/share/man/man1 -debian/doc/man1/fs.1 usr/share/man/man1 -debian/doc/man1/fs_apropos.1 usr/share/man/man1 -debian/doc/man1/fs_checkservers.1 usr/share/man/man1 -debian/doc/man1/fs_checkvolumes.1 usr/share/man/man1 -debian/doc/man1/fs_cleanacl.1 usr/share/man/man1 -debian/doc/man1/fs_copyacl.1 usr/share/man/man1 -debian/doc/man1/fs_diskfree.1 usr/share/man/man1 -debian/doc/man1/fs_examine.1 usr/share/man/man1 -debian/doc/man1/fs_exportafs.1 usr/share/man/man1 -debian/doc/man1/fs_flush.1 usr/share/man/man1 -debian/doc/man1/fs_flushmount.1 usr/share/man/man1 -debian/doc/man1/fs_flushvolume.1 usr/share/man/man1 -debian/doc/man1/fs_getcacheparms.1 usr/share/man/man1 -debian/doc/man1/fs_getcellstatus.1 usr/share/man/man1 -debian/doc/man1/fs_getclientaddrs.1 usr/share/man/man1 -debian/doc/man1/fs_getserverprefs.1 usr/share/man/man1 -debian/doc/man1/fs_help.1 usr/share/man/man1 -debian/doc/man1/fs_listacl.1 usr/share/man/man1 -debian/doc/man1/fs_listcells.1 usr/share/man/man1 -debian/doc/man1/fs_listquota.1 usr/share/man/man1 -debian/doc/man1/fs_lsmount.1 usr/share/man/man1 -debian/doc/man1/fs_messages.1 usr/share/man/man1 -debian/doc/man1/fs_mkmount.1 usr/share/man/man1 -debian/doc/man1/fs_newcell.1 usr/share/man/man1 -debian/doc/man1/fs_quota.1 usr/share/man/man1 -debian/doc/man1/fs_rmmount.1 usr/share/man/man1 -debian/doc/man1/fs_setacl.1 usr/share/man/man1 -debian/doc/man1/fs_setcachesize.1 usr/share/man/man1 -debian/doc/man1/fs_setcell.1 usr/share/man/man1 -debian/doc/man1/fs_setclientaddrs.1 usr/share/man/man1 -debian/doc/man1/fs_setquota.1 usr/share/man/man1 -debian/doc/man1/fs_setserverprefs.1 usr/share/man/man1 -debian/doc/man1/fs_setvol.1 usr/share/man/man1 -debian/doc/man1/fs_storebehind.1 usr/share/man/man1 -debian/doc/man1/fs_sysname.1 usr/share/man/man1 -debian/doc/man1/fs_whereis.1 usr/share/man/man1 -debian/doc/man1/fs_whichcell.1 usr/share/man/man1 -debian/doc/man1/fs_wscell.1 usr/share/man/man1 -debian/doc/man1/klog.1 usr/share/man/man1 -debian/doc/man1/livesys.1 usr/share/man/man1 -debian/doc/man1/pagsh.1 usr/share/man/man1 -debian/doc/man1/pts.1 usr/share/man/man1 -debian/doc/man1/pts_adduser.1 usr/share/man/man1 -debian/doc/man1/pts_apropos.1 usr/share/man/man1 -debian/doc/man1/pts_chown.1 usr/share/man/man1 -debian/doc/man1/pts_creategroup.1 usr/share/man/man1 -debian/doc/man1/pts_createuser.1 usr/share/man/man1 -debian/doc/man1/pts_delete.1 usr/share/man/man1 -debian/doc/man1/pts_examine.1 usr/share/man/man1 -debian/doc/man1/pts_help.1 usr/share/man/man1 -debian/doc/man1/pts_listentries.1 usr/share/man/man1 -debian/doc/man1/pts_listmax.1 usr/share/man/man1 -debian/doc/man1/pts_listowned.1 usr/share/man/man1 -debian/doc/man1/pts_membership.1 usr/share/man/man1 -debian/doc/man1/pts_removeuser.1 usr/share/man/man1 -debian/doc/man1/pts_rename.1 usr/share/man/man1 -debian/doc/man1/pts_setfields.1 usr/share/man/man1 -debian/doc/man1/pts_setmax.1 usr/share/man/man1 -debian/doc/man1/rxdebug.1 usr/share/man/man1 -debian/doc/man1/scout.1 usr/share/man/man1 -debian/doc/man1/sys.1 usr/share/man/man1 -debian/doc/man1/tokens.1 usr/share/man/man1 -debian/doc/man1/translate_et.1 usr/share/man/man1 -debian/doc/man1/udebug.1 usr/share/man/man1 -debian/doc/man1/unlog.1 usr/share/man/man1 -debian/doc/man1/up.1 usr/share/man/man1 -debian/doc/man1/vos.1 usr/share/man/man1 -debian/doc/man1/vos_addsite.1 usr/share/man/man1 -debian/doc/man1/vos_apropos.1 usr/share/man/man1 -debian/doc/man1/vos_backup.1 usr/share/man/man1 -debian/doc/man1/vos_backupsys.1 usr/share/man/man1 -debian/doc/man1/vos_changeaddr.1 usr/share/man/man1 -debian/doc/man1/vos_create.1 usr/share/man/man1 -debian/doc/man1/vos_delentry.1 usr/share/man/man1 -debian/doc/man1/vos_dump.1 usr/share/man/man1 -debian/doc/man1/vos_examine.1 usr/share/man/man1 -debian/doc/man1/vos_help.1 usr/share/man/man1 -debian/doc/man1/vos_listaddrs.1 usr/share/man/man1 -debian/doc/man1/vos_listpart.1 usr/share/man/man1 -debian/doc/man1/vos_listvldb.1 usr/share/man/man1 -debian/doc/man1/vos_listvol.1 usr/share/man/man1 -debian/doc/man1/vos_lock.1 usr/share/man/man1 -debian/doc/man1/vos_move.1 usr/share/man/man1 -debian/doc/man1/vos_partinfo.1 usr/share/man/man1 -debian/doc/man1/vos_release.1 usr/share/man/man1 -debian/doc/man1/vos_remove.1 usr/share/man/man1 -debian/doc/man1/vos_remsite.1 usr/share/man/man1 -debian/doc/man1/vos_rename.1 usr/share/man/man1 -debian/doc/man1/vos_restore.1 usr/share/man/man1 -debian/doc/man1/vos_status.1 usr/share/man/man1 -debian/doc/man1/vos_syncserv.1 usr/share/man/man1 -debian/doc/man1/vos_syncvldb.1 usr/share/man/man1 -debian/doc/man1/vos_unlock.1 usr/share/man/man1 -debian/doc/man1/vos_unlockvldb.1 usr/share/man/man1 -debian/doc/man1/vos_zap.1 usr/share/man/man1 -debian/doc/man1/xstat_cm_test.1 usr/share/man/man1 -debian/doc/man1/xstat_fs_test.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/afs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/afsmonitor.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/cmdebug.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_apropos.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_checkservers.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_checkvolumes.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_cleanacl.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_copyacl.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_diskfree.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_examine.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_exportafs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_flush.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_flushmount.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_flushvolume.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_getcacheparms.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_getcellstatus.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_getclientaddrs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_getserverprefs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_help.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_listacl.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_listcells.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_listquota.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_lsmount.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_messages.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_mkmount.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_newcell.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_quota.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_rmmount.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setacl.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setcachesize.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setcell.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setclientaddrs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setquota.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setserverprefs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_setvol.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_storebehind.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_sysname.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_whereis.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_whichcell.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/fs_wscell.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/klog.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/livesys.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pagsh.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_adduser.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_apropos.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_chown.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_creategroup.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_createuser.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_delete.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_examine.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_help.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_listentries.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_listmax.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_listowned.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_membership.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_removeuser.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_rename.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_setfields.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/pts_setmax.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/rxdebug.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/scout.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/sys.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/tokens.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/translate_et.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/udebug.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/unlog.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/up.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_addsite.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_apropos.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_backup.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_backupsys.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_changeaddr.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_create.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_delentry.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_dump.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_examine.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_help.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_listaddrs.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_listpart.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_listvldb.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_listvol.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_lock.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_move.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_partinfo.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_release.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_remove.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_remsite.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_rename.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_restore.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_status.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_syncserv.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_syncvldb.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_unlock.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_unlockvldb.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/vos_zap.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/xstat_cm_test.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/xstat_fs_test.1 usr/share/man/man1 -debian/doc/man5/CellServDB.5 usr/share/man/man5 -debian/doc/man5/NetInfo.5 usr/share/man/man5 -debian/doc/man5/NetRestrict.5 usr/share/man/man5 -debian/doc/man5/ThisCell.5 usr/share/man/man5 -debian/doc/man5/afs.5 usr/share/man/man5 -debian/doc/man5/afs_cache.5 usr/share/man/man5 -debian/doc/man5/afsmonitor.5 usr/share/man/man5 -debian/doc/man5/afszcm.cat.5 usr/share/man/man5 -debian/doc/man5/butc.5 usr/share/man/man5 -debian/doc/man5/butc_logs.5 usr/share/man/man5 -debian/doc/man5/cacheinfo.5 usr/share/man/man5 -debian/doc/man5/tapeconfig.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/CellServDB.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/NetInfo.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/NetRestrict.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/ThisCell.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/afs.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/afs_cache.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/afsmonitor.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/afszcm.cat.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/butc.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/butc_logs.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/cacheinfo.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/tapeconfig.5 usr/share/man/man5 -debian/doc/man8/afsd.8 usr/share/man/man8 -debian/doc/man8/backup.8 usr/share/man/man8 -debian/doc/man8/backup_adddump.8 usr/share/man/man8 -debian/doc/man8/backup_addhost.8 usr/share/man/man8 -debian/doc/man8/backup_addvolentry.8 usr/share/man/man8 -debian/doc/man8/backup_addvolset.8 usr/share/man/man8 -debian/doc/man8/backup_apropos.8 usr/share/man/man8 -debian/doc/man8/backup_dbverify.8 usr/share/man/man8 -debian/doc/man8/backup_deldump.8 usr/share/man/man8 -debian/doc/man8/backup_deletedump.8 usr/share/man/man8 -debian/doc/man8/backup_delhost.8 usr/share/man/man8 -debian/doc/man8/backup_delvolentry.8 usr/share/man/man8 -debian/doc/man8/backup_delvolset.8 usr/share/man/man8 -debian/doc/man8/backup_diskrestore.8 usr/share/man/man8 -debian/doc/man8/backup_dump.8 usr/share/man/man8 -debian/doc/man8/backup_dumpinfo.8 usr/share/man/man8 -debian/doc/man8/backup_help.8 usr/share/man/man8 -debian/doc/man8/backup_interactive.8 usr/share/man/man8 -debian/doc/man8/backup_jobs.8 usr/share/man/man8 -debian/doc/man8/backup_kill.8 usr/share/man/man8 -debian/doc/man8/backup_labeltape.8 usr/share/man/man8 -debian/doc/man8/backup_listdumps.8 usr/share/man/man8 -debian/doc/man8/backup_listhosts.8 usr/share/man/man8 -debian/doc/man8/backup_listvolsets.8 usr/share/man/man8 -debian/doc/man8/backup_quit.8 usr/share/man/man8 -debian/doc/man8/backup_readlabel.8 usr/share/man/man8 -debian/doc/man8/backup_restoredb.8 usr/share/man/man8 -debian/doc/man8/backup_savedb.8 usr/share/man/man8 -debian/doc/man8/backup_scantape.8 usr/share/man/man8 -debian/doc/man8/backup_setexp.8 usr/share/man/man8 -debian/doc/man8/backup_status.8 usr/share/man/man8 -debian/doc/man8/backup_volinfo.8 usr/share/man/man8 -debian/doc/man8/backup_volrestore.8 usr/share/man/man8 -debian/doc/man8/backup_volsetrestore.8 usr/share/man/man8 -debian/doc/man8/butc.8 usr/share/man/man8 -debian/doc/man8/fms.8 usr/share/man/man8 -debian/doc/man8/fstrace.8 usr/share/man/man8 -debian/doc/man8/fstrace_apropos.8 usr/share/man/man8 -debian/doc/man8/fstrace_clear.8 usr/share/man/man8 -debian/doc/man8/fstrace_dump.8 usr/share/man/man8 -debian/doc/man8/fstrace_help.8 usr/share/man/man8 -debian/doc/man8/fstrace_lslog.8 usr/share/man/man8 -debian/doc/man8/fstrace_lsset.8 usr/share/man/man8 -debian/doc/man8/fstrace_setlog.8 usr/share/man/man8 -debian/doc/man8/fstrace_setset.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/afsd.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_adddump.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_addhost.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_addvolentry.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_addvolset.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_apropos.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_dbverify.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_deldump.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_deletedump.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_delhost.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_delvolentry.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_delvolset.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_diskrestore.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_dump.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_dumpinfo.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_help.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_interactive.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_jobs.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_kill.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_labeltape.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_listdumps.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_listhosts.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_listvolsets.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_quit.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_readlabel.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_restoredb.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_savedb.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_scantape.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_setexp.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_status.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_volinfo.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_volrestore.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/backup_volsetrestore.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_addhost.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_addkey.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_adduser.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_apropos.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_create.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_delete.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_exec.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_getdate.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_getlog.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_getrestart.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_help.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_install.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_listhosts.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_listkeys.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_listusers.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_prune.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_removehost.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_removekey.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_removeuser.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_restart.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_salvage.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_setauth.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_setcellname.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_setrestart.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_shutdown.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_start.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_startup.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_status.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_stop.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bos_uninstall.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/butc.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fms.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_apropos.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_clear.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_dump.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_help.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_lslog.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_lsset.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_setlog.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fstrace_setset.8 usr/share/man/man8 diff --git a/src/packaging/Debian/openafs-client.postinst b/src/packaging/Debian/openafs-client.postinst index a12cbdb6b..7ead85cb6 100644 --- a/src/packaging/Debian/openafs-client.postinst +++ b/src/packaging/Debian/openafs-client.postinst @@ -1,19 +1,9 @@ #! /bin/sh -# -# Summary of how this script can be called: -# -# * `configure' -# * `abort-upgrade' -# * `abort-remove' `in-favour' -# -# * `abort-deconfigure' `in-favour' -# `removing' -# set -e case "$1" in -configure) +configure|reconfigure) update-alternatives --install /usr/bin/pagsh pagsh \ /usr/bin/pagsh.openafs 100 \ --slave /usr/share/man/man1/pagsh.1.gz pagsh.1.gz \ @@ -67,6 +57,12 @@ configure) db_get openafs-client/cachesize echo /afs:/var/cache/openafs:$RET >/etc/openafs/cacheinfo + echo <<'EOF' > /etc/openafs/afs.conf.client +# This file is managed by debconf. Do not edit directly. To modify these +# settings, run dpkg-reconfigure openafs-client. + +EOF + db_get openafs-client/run-client echo AFS_CLIENT=$RET >/etc/openafs/afs.conf.client db_get openafs-client/afsdb @@ -88,9 +84,6 @@ abort-upgrade|abort-remove|abort-deconfigure) ;; esac -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - #DEBHELPER# exit 0 diff --git a/src/packaging/Debian/openafs-client.postrm b/src/packaging/Debian/openafs-client.postrm index 08fa0b564..789c1eda2 100644 --- a/src/packaging/Debian/openafs-client.postrm +++ b/src/packaging/Debian/openafs-client.postrm @@ -1,43 +1,21 @@ #! /bin/sh -# postrm script for openafs -# -# see: dh_installdeb(1) set -e -# summary of how this script can be called: -# * `remove' -# * `purge' -# * `upgrade' -# * `failed-upgrade' -# * `abort-install' -# * `abort-install' -# * `abort-upgrade' -# * `disappear' overwrit>r> -# for details, see /usr/share/doc/packaging-manual/ - case "$1" in purge) rmdir /afs 2>/dev/null || true - rm /etc/openafs/cacheinfo 2>/dev/null ||true - rm /etc/openafs/CellServDB 2>/dev/null ||true - rm /etc/openafs/ThisCell 2>/dev/null ||true - rm /etc/openafs/afs.conf.client 2>/dev/null || true + for file in cacheinfo CellServDB ThisCell afs.conf.client ; do + rm -f "/etc/openafs/$file" + done ;; - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - - ;; - - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 0 +remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; +*) + echo "postrm called with unknown argument $1" >&2 + exit 0 esac -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - #DEBHELPER# - - diff --git a/src/packaging/Debian/openafs-client.templates b/src/packaging/Debian/openafs-client.templates index 9688c2ba3..8b8172be5 100644 --- a/src/packaging/Debian/openafs-client.templates +++ b/src/packaging/Debian/openafs-client.templates @@ -1,6 +1,6 @@ Template: openafs-client/cell-info Type: string -_Description: What hosts are DB servers for your home cell? +_Description: DB server host names for your home cell: AFS uses the file /etc/openafs/CellServDB to hold the list of servers that should be contacted to find parts of a cell. The cell you claim this workstation belongs to is not in that file. Enter the host names of the @@ -13,7 +13,7 @@ _Description: What hosts are DB servers for your home cell? Template: openafs-client/thiscell Type: string -_Description: What AFS cell does this workstation belong to? +_Description: AFS cell this workstation belongs to: AFS filespace is organized into cells or administrative domains. Each workstation belongs to one cell. Usually the cell is the DNS domain name of the site. @@ -21,7 +21,7 @@ _Description: What AFS cell does this workstation belong to? Template: openafs-client/cachesize Type: string Default: 50000 -_Description: How large is your AFS cache (kB)? +_Description: Size of AFS cache in kB: AFS uses an area of the disk to cache remote files for faster access. This cache will be mounted on /var/cache/openafs. It is important that the cache not overfill the partition it is located @@ -32,12 +32,12 @@ Template: openafs-client/run-client Type: boolean Default: true _Description: Run Openafs client now and at boot? - Should the Openafs filesystem be started and mounted at boot? Normally, - most users who install the openafs-client package expect to run it at - boot. However, if you are planning on setting up a new cell or are on a - laptop, you may not want it started at boot time. If you choose not - to start AFS at boot, run /etc/init.d/openafs-client force-start to - start the client when you wish to run it. + Normally, most users who install the openafs-client package expect AFS to + be mounted automatically at boot. However, if you are planning on + setting up a new cell or are on a laptop, you may not want it started at + boot time. If you choose not to start AFS at boot, run + /etc/init.d/openafs-client force-start to start the client when you wish + to run it. Template: openafs-client/afsdb Type: boolean @@ -83,11 +83,3 @@ _Description: Use fakestat to avoid hangs when listing /afs? machine for minutes. AFS has an option to simulate answers to these operations locally to avoid these hangs. You want this option under most circumstances. -4 -4 -4 -4 -4 -4 -4 -4 diff --git a/src/packaging/Debian/openafs-client.undocumented b/src/packaging/Debian/openafs-client.undocumented deleted file mode 100644 index f9cfb931c..000000000 --- a/src/packaging/Debian/openafs-client.undocumented +++ /dev/null @@ -1,13 +0,0 @@ -afsd.8 -bos.1 -cmdebug.1 -fs.1 -klog.1 -kpwvalid.1 -pagsh.openafs.1 -pts.1 -tokens.1 -rxdebug.1 -udebug.1 -unlog.1 -vos.1 diff --git a/src/packaging/Debian/openafs-dbserver.dirs b/src/packaging/Debian/openafs-dbserver.dirs index 1e6dd00c8..8d5356674 100644 --- a/src/packaging/Debian/openafs-dbserver.dirs +++ b/src/packaging/Debian/openafs-dbserver.dirs @@ -2,11 +2,3 @@ usr/share/doc var/lib/openafs/db usr/share/man/man8 usr/sbin -usr/share/doc -usr/share/doc -usr/share/doc -usr/share/doc -usr/share/doc -usr/share/doc -usr/share/doc -usr/share/doc diff --git a/src/packaging/Debian/openafs-dbserver.install b/src/packaging/Debian/openafs-dbserver.install index bd6d4b756..dc1a856ee 100644 --- a/src/packaging/Debian/openafs-dbserver.install +++ b/src/packaging/Debian/openafs-dbserver.install @@ -11,14 +11,15 @@ debian/tmp/usr/lib/openafs/vlserver usr/lib/openafs debian/ConfigUtils.pm usr/share/perl5/Debian/OpenAFS -debian/doc/man5/BackupLog.5 usr/share/man/man5 -debian/doc/man5/VLLog.5 usr/share/man/man5 -debian/doc/man5/bdb.DB0.5 usr/share/man/man5 -debian/doc/man5/prdb.DB0.5 usr/share/man/man5 -debian/doc/man5/vldb.DB0.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/BackupLog.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/VLLog.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/bdb.DB0.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/prdb.DB0.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/vldb.DB0.5 usr/share/man/man5 -debian/doc/man8/buserver.8 usr/share/man/man8 -debian/doc/man8/prdb_check.8 usr/share/man/man8 -debian/doc/man8/ptserver.8 usr/share/man/man8 -debian/doc/man8/vldb_check.8 usr/share/man/man8 -debian/doc/man8/vlserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/buserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/prdb_check.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/pt_util.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/ptserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/vldb_check.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/vlserver.8 usr/share/man/man8 diff --git a/src/packaging/Debian/openafs-dbserver.postrm b/src/packaging/Debian/openafs-dbserver.postrm new file mode 100644 index 000000000..610767941 --- /dev/null +++ b/src/packaging/Debian/openafs-dbserver.postrm @@ -0,0 +1,28 @@ +#! /bin/sh +# postrm script for openafs-dbserver +# +# Purges the database and log files created by the package. We assume that +# it's safe to do this for database files since they're normally transferred +# via Ubik to other hosts. + +set -e + +case "$1" in +purge) + for file in prdb.DB0 prdb.DBSYS1 vldb.DB0 vldb.DBSYS1 ; do + rm -f "/var/lib/openafs/db/$file" + done + for file in PtLog PtLog.old VLLog VLLog.old ; do + rm -f "/var/log/openafs/$file" + done + ;; + +remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + +*) + echo "postrm called with unknown argument $1" >&2 + exit 0 +esac + +#DEBHELPER# diff --git a/src/packaging/Debian/openafs-doc.README.Debian b/src/packaging/Debian/openafs-doc.README.Debian new file mode 100644 index 000000000..830381aee --- /dev/null +++ b/src/packaging/Debian/openafs-doc.README.Debian @@ -0,0 +1,23 @@ +OpenAFS Documentation for Debian +-------------------------------- + +Included in this package are the original Transarc AFS manuals with small +modifications. This is the best available comprehensive documentation for +OpenAFS, but please be aware that this documentation has not been updated +to reflect the changes made to OpenAFS since the original public release. +Work on this is ongoing upstream, and newer documentation will be packaged +as soon as it is available. + +All of the manuals are included because, even including significant +portions that are not relevant to Debian, because they all do contain some +valuable information. Debian users should ignore the installation +information and much of the Quick Start Guide in favor of the +documentation that comes with the Debian OpenAFS packages, and should be +aware that the IBM AFS 3.6 Release Notes are for the IBM release +immediately prior to OpenAFS 1.0 (and are therefore rather dated). + +The AFS protocol information included here is dated and may not be +accurate in all details, but is the best protocol information currently +available. + + -- Russ Allbery , Sat Nov 19 12:45:55 2005 diff --git a/src/packaging/Debian/openafs-doc.doc-base.openafs-admin b/src/packaging/Debian/openafs-doc.doc-base.openafs-admin new file mode 100644 index 000000000..92ae212c1 --- /dev/null +++ b/src/packaging/Debian/openafs-doc.doc-base.openafs-admin @@ -0,0 +1,11 @@ +Document: openafs-admin +Title: AFS Administrator's Guide +Author: IBM +Abstract: Describes concepts and procedures for an AFS cell administrator. + This is a somewhat outdated guide to configuring and administering an AFS + cell and an introduction to AFS for those considering running it. +Section: Apps/Net + +Format: HTML +Index: /usr/share/doc/openafs-doc/html/AdminGuide/auagd000.htm +Files: /usr/share/doc/openafs-doc/html/AdminGuide/* diff --git a/src/packaging/Debian/openafs-doc.doc-base.openafs-quick b/src/packaging/Debian/openafs-doc.doc-base.openafs-quick new file mode 100644 index 000000000..1973f167a --- /dev/null +++ b/src/packaging/Debian/openafs-doc.doc-base.openafs-quick @@ -0,0 +1,11 @@ +Document: openafs-quick +Title: AFS Quick Start Guide for UNIX +Author: IBM +Abstract: Initial setup and configuration documentation for AFS on Unix + platforms. Debian users can ignore most of the installation information, + but the configuration information is still useful. +Section: Apps/Net + +Format: HTML +Index: /usr/share/doc/openafs-doc/html/QuickStartUnix/auqbg000.htm +Files: /usr/share/doc/openafs-doc/html/QuickStartUnix/* diff --git a/src/packaging/Debian/openafs-doc.doc-base.openafs-user b/src/packaging/Debian/openafs-doc.doc-base.openafs-user new file mode 100644 index 000000000..2108ed8d4 --- /dev/null +++ b/src/packaging/Debian/openafs-doc.doc-base.openafs-user @@ -0,0 +1,10 @@ +Document: openafs-user +Title: AFS User's Guide +Author: IBM +Abstract: Introduction and documentation of AFS for the end-user. This is + the best document for people who will be using but not administering AFS. +Section: Apps/Net + +Format: HTML +Index: /usr/share/doc/openafs-doc/html/UserGuide/auusg000.htm +Files: /usr/share/doc/openafs-doc/html/UserGuide/* diff --git a/src/packaging/Debian/openafs-doc.docs b/src/packaging/Debian/openafs-doc.docs new file mode 100644 index 000000000..a02509ef6 --- /dev/null +++ b/src/packaging/Debian/openafs-doc.docs @@ -0,0 +1,3 @@ +doc/html +doc/pdf +doc/txt diff --git a/src/packaging/Debian/openafs-doc.examples b/src/packaging/Debian/openafs-doc.examples new file mode 100644 index 000000000..646ecf675 --- /dev/null +++ b/src/packaging/Debian/openafs-doc.examples @@ -0,0 +1 @@ +doc/examples/CellAlias diff --git a/src/packaging/Debian/openafs-fileserver.NEWS b/src/packaging/Debian/openafs-fileserver.NEWS new file mode 100644 index 000000000..f55236617 --- /dev/null +++ b/src/packaging/Debian/openafs-fileserver.NEWS @@ -0,0 +1,24 @@ +openafs (1.4.4.dfsg1-4) unstable; urgency=low + + The files previously located in /etc/openafs/server-local have been + moved to /var/lib/openafs/local. The OpenAFS fileserver and bosserver + write files to this directory on startup which are not configuration + files and therefore, per the File Hierarchy Standard, should not be in + /etc. Any sysid, sysid.old, NetInfo, and NetRestrict files in + /etc/openafs/server-local have been copied to /var/lib/openafs/local. + + upserver and upclient have moved to /usr/lib/openafs (from /usr/sbin) to + match the other programs intended to be run by the bosserver and to + match upstream's layout. If you're running upserver or upclient from + bosserver, BosConfig has been updated with the new path, but the + services have not been restarted. + + At your convenience, you should restart your servers with: + + bos restart -all -bosserver + + so that the running servers will look at the new locations. After doing + so, you may remove /etc/openafs/server-local if you wish. + + -- Russ Allbery Tue, 19 Jun 2007 03:51:58 -0700 + diff --git a/src/packaging/Debian/openafs-fileserver.conffiles b/src/packaging/Debian/openafs-fileserver.conffiles deleted file mode 100644 index 154a61367..000000000 --- a/src/packaging/Debian/openafs-fileserver.conffiles +++ /dev/null @@ -1 +0,0 @@ -/etc/init.d/openafs-fileserver diff --git a/src/packaging/Debian/openafs-fileserver.dirs b/src/packaging/Debian/openafs-fileserver.dirs index 719aa3cfd..e49f64f24 100644 --- a/src/packaging/Debian/openafs-fileserver.dirs +++ b/src/packaging/Debian/openafs-fileserver.dirs @@ -1,6 +1,4 @@ usr/share/doc var/log/openafs etc/openafs/server -etc/openafs/server-local -var/lib/openafs/cores - +var/lib/openafs/local diff --git a/src/packaging/Debian/openafs-fileserver.init b/src/packaging/Debian/openafs-fileserver.init old mode 100644 new mode 100755 index d0172c385..5db046378 --- a/src/packaging/Debian/openafs-fileserver.init +++ b/src/packaging/Debian/openafs-fileserver.init @@ -1,76 +1,118 @@ #! /bin/sh +### BEGIN INIT INFO +# Provides: openafs-fileserver +# Required-Start: $local_fs $remote_fs $network $time +# Required-Stop: $local_fs $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: OpenAFS file and database server manager +# Description: Starts, stops, or restarts the OpenAFS bosserver, +# which is the process that starts and manages the +# OpenAFS file server or database servers depending on +# its configuration. +### END INIT INFO + +# Author: Sam Hartman +# Author: Russ Allbery # -# skeleton example file to build /etc/init.d/ scripts. -# This file should be used to construct scripts for /etc/init.d. -# -# Written by Miquel van Smoorenburg . -# Modified for Debian GNU/Linux -# by Ian Murdock . -# -# Version: @(#)skeleton 1.8 03-Mar-1998 miquels@cistron.nl -# +# Based on the /etc/init.d/skeleton template as found in initscripts version +# 2.86.ds1-15. -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/sbin/bosserver +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DESC="OpenAFS BOS server" NAME=bosserver -DESC="AFS Server" +DAEMON=/usr/sbin/bosserver +DAEMON_ARGS="" +SCRIPTNAME=/etc/init.d/openafs-fileserver + +# Exit if the package is not installed. +[ -x "$DAEMON" ] || exit 0 +# Read configuration if it is present. +[ -r /etc/default/openafs-fileserver ] && . /etc/default/openafs-fileserver +# Get the setting of VERBOSE and other rcS variables. +[ -f /etc/default/rcS ] && . /etc/default/rcS + +# Define LSB log functions (requires lsb-base >= 3.0-6). +. /lib/lsb/init-functions + +# Make sure we don't leave file descriptors open. exec 3>/dev/null exec /dev/null || return 1 + start-stop-daemon --start --quiet --startas $DAEMON --name $NAME \ + -- $DAEMON_ARGS || return 2 +} +# Return +# 0 if daemon has been stopped +# 1 if daemon was already stopped +# 2 if daemon could not be stopped +# other if a failure occurred +do_stop() +{ + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME +} -case "$1" in +case "$1" in start) - echo -n "Starting $DESC: " - start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ - --exec $DAEMON - echo "$NAME." - ;; + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) - echo -n "Stopping $DESC: " + [ "$VERBOSE" != no ] && log_action_msg "Stopping OpenAFS services" bos shutdown localhost -wait -localauth - start-stop-daemon --stop --quiet \ - --user root --name bosserver - echo "$NAME." - ;; - #reload) - # - # If the daemon can reload its config files on the fly - # for example by sending it SIGHUP, do it here. - # - # If the daemon responds to changes in its config file - # directly anyway, make this a do-nothing entry. - # - # echo "Reloading $DESC configuration files." - # start-stop-daemon --stop --signal 1 --quiet --pidfile \ - # /var/run/$NAME.pid --exec $DAEMON - #;; + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + restart|force-reload) - # - # If the "reload" option is implemented, move the "force-reload" - # option to the "reload" entry above. If not, "force-reload" is - # just the same as "restart". - # - echo -n "Restarting $DESC: " - if pidof $DAEMON > /dev/null ; then - bos restart localhost -localauth -bos - else - start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ - --exec $DAEMON - fi - sleep 1 - echo "$NAME." - ;; + [ "$VERBOSE" != no ] && log_daemon_msg "Restarting $DESC" "$NAME" + start-stop-daemon --start --quiet --startas $DAEMON --name $NAME --test \ + > /dev/null + case "$?" in + 0) + do_start + case "$?" in + 0) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + *) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + 1) + bos restart localhost -all -bosserver -localauth + case "$?" in + 0) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + *) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + *) + log_end_msg 1 + ;; + esac + ;; + *) - N=/etc/init.d/$NAME - # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $N {start|stop|restart|force-reload}" >&2 - exit 1 - ;; + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 3 + ;; esac exit 0 diff --git a/src/packaging/Debian/openafs-fileserver.install b/src/packaging/Debian/openafs-fileserver.install index e52fb529b..3fe61b923 100644 --- a/src/packaging/Debian/openafs-fileserver.install +++ b/src/packaging/Debian/openafs-fileserver.install @@ -2,30 +2,30 @@ debian/tmp/usr/sbin/bosserver usr/sbin debian/tmp/usr/sbin/voldump usr/sbin debian/tmp/usr/sbin/volinfo usr/sbin -debian/tmp/usr/lib/openafs/up* usr/sbin - debian/tmp/usr/lib/openafs/fileserver usr/lib/openafs debian/tmp/usr/lib/openafs/salvager usr/lib/openafs +debian/tmp/usr/lib/openafs/upclient usr/lib/openafs +debian/tmp/usr/lib/openafs/upserver usr/lib/openafs debian/tmp/usr/lib/openafs/volserver usr/lib/openafs -debian/doc/man5/BosConfig.5 usr/share/man/man5 -debian/doc/man5/BosLog.5 usr/share/man/man5 -debian/doc/man5/FORCESALVAGE.5 usr/share/man/man5 -debian/doc/man5/FileLog.5 usr/share/man/man5 -debian/doc/man5/KeyFile.5 usr/share/man/man5 -debian/doc/man5/NoAuth.5 usr/share/man/man5 -debian/doc/man5/SALVAGE.fs.5 usr/share/man/man5 -debian/doc/man5/SalvageLog.5 usr/share/man/man5 -debian/doc/man5/VolserLog.5 usr/share/man/man5 -debian/doc/man5/afs_volume_header.5 usr/share/man/man5 -debian/doc/man5/salvage.lock.5 usr/share/man/man5 -debian/doc/man5/sysid.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/BosConfig.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/BosLog.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/FORCESALVAGE.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/FileLog.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/KeyFile.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/NoAuth.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/SALVAGE.fs.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/SalvageLog.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/VolserLog.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/afs_volume_header.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/salvage.lock.5 usr/share/man/man5 +debian/tmp/usr/share/man/man5/sysid.5 usr/share/man/man5 -debian/doc/man8/bosserver.8 usr/share/man/man8 -debian/doc/man8/fileserver.8 usr/share/man/man8 -debian/doc/man8/salvager.8 usr/share/man/man8 -debian/doc/man8/upclient.8 usr/share/man/man8 -debian/doc/man8/upserver.8 usr/share/man/man8 -debian/doc/man8/voldump.8 usr/share/man/man8 -debian/doc/man8/volinfo.8 usr/share/man/man8 -debian/doc/man8/volserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/bosserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/fileserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/salvager.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/upclient.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/upserver.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/voldump.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/volinfo.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/volserver.8 usr/share/man/man8 diff --git a/src/packaging/Debian/openafs-fileserver.postinst b/src/packaging/Debian/openafs-fileserver.postinst index 2c49fc320..85319150e 100644 --- a/src/packaging/Debian/openafs-fileserver.postinst +++ b/src/packaging/Debian/openafs-fileserver.postinst @@ -1,14 +1,4 @@ -#!/bin/sh -e -# -# Summary of how this script can be called: -# -# * `configure' -# * `abort-upgrade' -# * `abort-remove' `in-favour' -# -# * `abort-deconfigure' `in-favour' -# `removing' -# +#!/bin/sh set -e @@ -20,20 +10,30 @@ configure) db_get openafs-fileserver/thiscell echo $RET >/etc/openafs/server/ThisCell - if [ -f /etc/openafs/server/CellServDB ] ; then - : - else + if [ ! -f /etc/openafs/server/CellServDB ] ; then sed -n "/^>$RET/,/^>/p" /etc/openafs/CellServDB | sed '$d' \ >/etc/openafs/server/CellServDB if [ ! -s /etc/openafs/server/CellServDB ] ; then echo ">$RET" >/etc/openafs/server/CellServDB fi fi - if [ "x$2" != "x" ] ; then - if dpkg --compare-versions $2 lt 1.2.0-1 ; then - mv /etc/openafs/server-local/BosConfig \ - /etc/openafs/BosConfig || true - mv /etc/openafs/server-local/sysid /var/lib/openafs || true + + # Move the contents of the old /etc/openafs/server-local directory into + # /var/lib/openafs/local. Most of the files in this directory are + # automatically generated, so it didn't belong in /etc. + # + # Change the paths to upserver and upclient in BosConfig from older + # versions that had the binaries in /usr/sbin. + if [ "x$2" != "x" ] && dpkg --compare-versions $2 lt 1.4.4.dfsg1-4 ; then + for f in sysid sysid.old NetInfo NetRestrict ; do + if [ -e "/etc/openafs/server-local/$f" ] ; then + cp "/etc/openafs/server-local/$f" "/var/lib/openafs/local/$f" + fi + done + if [ -e /etc/openafs/BosConfig ] ; then + sed -i -e 's,/usr/sbin/upserver,/usr/lib/openafs/upserver,' \ + -e 's,/usr/sbin/upclient,/usr/lib/openafs/upclient,' \ + /etc/openafs/BosConfig fi fi db_stop diff --git a/src/packaging/Debian/openafs-fileserver.postrm b/src/packaging/Debian/openafs-fileserver.postrm index 9ce96e568..ce578443e 100644 --- a/src/packaging/Debian/openafs-fileserver.postrm +++ b/src/packaging/Debian/openafs-fileserver.postrm @@ -1,40 +1,46 @@ #! /bin/sh -# postrm script for openafs +# postrm script for openafs-fileserver # -# see: dh_installdeb(1) +# Purges various extra configuration files and data files created by the +# package. Whether to purge KeyFile is a bit iffy since the user created it +# with asetkey or with bos addkey, but it always exists for any running server +# and we shouldn't be losing any critical data. +# +# We intentionally don't remove NetInfo and NetRestrict in +# /var/lib/openafs/local since those are created separately by the user and +# may contain information not stored elsewhere. set -e -# summary of how this script can be called: -# * `remove' -# * `purge' -# * `upgrade' -# * `failed-upgrade' -# * `abort-install' -# * `abort-install' -# * `abort-upgrade' -# * `disappear' overwrit>r> -# for details, see /usr/share/doc/packaging-manual/ - case "$1" in purge) - rm /etc/openafs/server/ThisCell 2>/dev/null || true - (cd /etc/openafs/server && rm CellServDB UserList) 2>/dev/null ||true - (cd /etc/openafs/server-local && rm BosConfig) 2>/dev/null ||true + for file in CellServDB CellServDB.old KeyFile ThisCell UserList ; do + rm -f "/etc/openafs/server/$file" + done + for file in SALVAGE.fs fssync.sock salvage.lock sysid sysid.old ; do + rm -f "/var/lib/openafs/local/$file" + done + rm -f /etc/openafs/BosConfig + for file in BosLog FileLog SalvageLog VolserLog ; do + rm -f "/var/log/openafs/$file" + rm -f "/var/log/openafs/$file.old" + done + + # Clean up after files left behind from older versions of the package. + if [ -d /etc/openafs/server-local ] ; then + for file in SALVAGE.fs fssync.sock salvage.lock sysid sysid.old ; do + rm -f "/etc/openafs/server-local/$file" + done + rmdir --ignore-fail-on-non-empty /etc/openafs/server-local + fi ;; - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - - - ;; - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 0 +remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; +*) + echo "postrm called with unknown argument \`$1'" >&2 + exit 0 esac -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - #DEBHELPER# - diff --git a/src/packaging/Debian/openafs-fileserver.preinst b/src/packaging/Debian/openafs-fileserver.preinst deleted file mode 100644 index 6536fc0de..000000000 --- a/src/packaging/Debian/openafs-fileserver.preinst +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -set -e - -if [ upgrade = $1 ] ; then - . /usr/share/debconf/confmodule -fi -#DEBHELPER# - -exit 0 diff --git a/src/packaging/Debian/openafs-fileserver.templates b/src/packaging/Debian/openafs-fileserver.templates index e0776b8bf..46a10b9e5 100644 --- a/src/packaging/Debian/openafs-fileserver.templates +++ b/src/packaging/Debian/openafs-fileserver.templates @@ -1,6 +1,6 @@ Template: openafs-fileserver/thiscell Type: string -_Description: What cell does this server serve files for? +_Description: Cell this server serves files for: AFS fileservers belong to a cell. They have the key for that cell's Kerberos service and serve volumes into that cell. Normally, this cell is the same cell as the workstation's client belongs to. diff --git a/src/packaging/Debian/openafs-fileserver.undocumented b/src/packaging/Debian/openafs-fileserver.undocumented deleted file mode 100644 index 49eaaa453..000000000 --- a/src/packaging/Debian/openafs-fileserver.undocumented +++ /dev/null @@ -1 +0,0 @@ -bosserver.8 diff --git a/src/packaging/Debian/openafs-kpasswd.install b/src/packaging/Debian/openafs-kpasswd.install index 6889bed20..2c7652ddc 100644 --- a/src/packaging/Debian/openafs-kpasswd.install +++ b/src/packaging/Debian/openafs-kpasswd.install @@ -2,22 +2,22 @@ debian/tmp/usr/bin/kpasswd usr/bin debian/tmp/usr/sbin/kas usr/bin -debian/doc/man1/kpasswd.1 usr/share/man/man1 +debian/tmp/usr/share/man/man1/kpasswd.1 usr/share/man/man1 -debian/doc/man8/kas.8 usr/share/man/man8 -debian/doc/man8/kas_apropos.8 usr/share/man/man8 -debian/doc/man8/kas_create.8 usr/share/man/man8 -debian/doc/man8/kas_delete.8 usr/share/man/man8 -debian/doc/man8/kas_examine.8 usr/share/man/man8 -debian/doc/man8/kas_forgetticket.8 usr/share/man/man8 -debian/doc/man8/kas_help.8 usr/share/man/man8 -debian/doc/man8/kas_interactive.8 usr/share/man/man8 -debian/doc/man8/kas_list.8 usr/share/man/man8 -debian/doc/man8/kas_listtickets.8 usr/share/man/man8 -debian/doc/man8/kas_noauthentication.8 usr/share/man/man8 -debian/doc/man8/kas_quit.8 usr/share/man/man8 -debian/doc/man8/kas_setfields.8 usr/share/man/man8 -debian/doc/man8/kas_setpassword.8 usr/share/man/man8 -debian/doc/man8/kas_statistics.8 usr/share/man/man8 -debian/doc/man8/kas_stringtokey.8 usr/share/man/man8 -debian/doc/man8/kas_unlock.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_apropos.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_create.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_delete.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_examine.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_forgetticket.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_help.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_interactive.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_list.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_listtickets.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_noauthentication.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_quit.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_setfields.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_setpassword.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_statistics.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_stringtokey.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/kas_unlock.8 usr/share/man/man8 diff --git a/src/packaging/Debian/openafs-kpasswd.undocumented b/src/packaging/Debian/openafs-kpasswd.undocumented deleted file mode 100644 index bee593a96..000000000 --- a/src/packaging/Debian/openafs-kpasswd.undocumented +++ /dev/null @@ -1,2 +0,0 @@ -kpasswd.1 -kas.1 diff --git a/src/packaging/Debian/openafs-krb5.install b/src/packaging/Debian/openafs-krb5.install new file mode 100644 index 000000000..006e4619b --- /dev/null +++ b/src/packaging/Debian/openafs-krb5.install @@ -0,0 +1,9 @@ +debian/tmp/usr/bin/aklog usr/bin + +debian/tmp/usr/bin/asetkey usr/sbin +debian/tmp/usr/sbin/ka-forwarder usr/sbin + +debian/tmp/usr/share/man/man1/aklog.1 usr/share/man/man1 + +debian/tmp/usr/share/man/man8/asetkey.8 usr/share/man/man8 +debian/tmp/usr/share/man/man8/ka-forwarder.8 usr/share/man/man8 diff --git a/src/packaging/Debian/patch.001_libafs_destination_name b/src/packaging/Debian/patch.001_libafs_destination_name deleted file mode 100644 index 728f03a00..000000000 --- a/src/packaging/Debian/patch.001_libafs_destination_name +++ /dev/null @@ -1,18 +0,0 @@ -Index: src/libafs/MakefileProto.LINUX.in -=================================================================== -RCS file: /afs/sipb.mit.edu/project/openafs/debian/cvs/openafs/src/libafs/MakefileProto.LINUX.in,v -retrieving revision 1.1.1.3 -diff -u -r1.1.1.3 MakefileProto.LINUX.in ---- src/libafs/MakefileProto.LINUX.in 14 Jul 2001 22:22:46 -0000 1.1.1.3 -+++ src/libafs/MakefileProto.LINUX.in 16 Jul 2001 09:40:24 -0000 -@@ -143,8 +143,8 @@ - LIBAFS = libafs-${CLIENT}.o - LIBAFS_MP = libafs-${CLIENT}.mp.o - --DEST_LIBAFS = ${DESTDIR}/root.client/usr/vice/etc/modload/${LIBAFS} --DEST_LIBAFS_MP = ${DESTDIR}/root.client/usr/vice/etc/modload/${LIBAFS_MP} -+DEST_LIBAFS = ${DESTDIR}/root.client/usr/vice/etc/modload/openafs.o -+DEST_LIBAFS_MP = ${DESTDIR}/root.client/usr/vice/etc/modload/openafs.mp.o - - - libafs: $(DEST_LIBAFS) diff --git a/src/packaging/Debian/patch.002_sketchy_hpux_process_c b/src/packaging/Debian/patch.002_sketchy_hpux_process_c deleted file mode 100644 index 2d247c617..000000000 --- a/src/packaging/Debian/patch.002_sketchy_hpux_process_c +++ /dev/null @@ -1,18 +0,0 @@ -Index: src/lwp//process.c -=================================================================== -RCS file: /afs/sipb/project/openafs/debian/cvs/openafs/src/lwp/process.c,v -retrieving revision 1.8 -diff -u -r1.8 process.c ---- src/lwp//process.c 11 Sep 2001 15:48:27 -0000 1.8 -+++ src/lwp//process.c 25 Feb 2002 19:42:17 -0000 -@@ -92,7 +92,9 @@ - #elif defined(AFS_HPUX_ENV) - #define LWP_SP 1 - #elif defined(AFS_LINUX20_ENV) --#if defined(AFS_PPC_LINUX20_ENV) -+#if defined(AFS_PARISC_LINUX24_ENV ) -+#define LWP_SP 1 -+#elif defined(AFS_PPC_LINUX20_ENV) - #define LWP_SP 0 - #elif defined(AFS_I386_LINUX20_ENV) - #define LWP_SP 4 diff --git a/src/packaging/Debian/patch.004_bozo_permissions b/src/packaging/Debian/patch.004_bozo_permissions deleted file mode 100644 index 9ddcff544..000000000 --- a/src/packaging/Debian/patch.004_bozo_permissions +++ /dev/null @@ -1,16 +0,0 @@ -Index: src/bozo//bosoprocs.c -=================================================================== -RCS file: /afs/sipb.mit.edu/project/openafs/debian/cvs/openafs/src/bozo/bosoprocs.c,v -retrieving revision 1.1.1.8 -diff -u -r1.1.1.8 bosoprocs.c ---- bosoprocs.c 2001/10/14 18:04:05 1.1.1.8 -+++ bosoprocs.c 2001/11/25 22:57:19 -@@ -1160,7 +1160,7 @@ - - struct bozo_bosEntryStats bozo_bosEntryStats[] = { - {NULL, 1,1, 0755, 02}, /* AFSDIR_SERVER_AFS_DIRPATH */ -- {NULL, 1,1, 0755, 02}, /* AFSDIR_SERVER_ETC_DIRPATH */ -+ {NULL, 1,1, 0700, 02}, /* AFSDIR_SERVER_ETC_DIRPATH */ - {NULL, 1,1, 0755, 02}, /* AFSDIR_SERVER_BIN_DIRPATH */ - {NULL, 1,1, 0755, 02}, /* AFSDIR_SERVER_LOGS_DIRPATH */ - {NULL, 1,0, 0700, 07}, /* AFSDIR_SERVER_BACKUP_DIRPATH */ diff --git a/src/packaging/Debian/patch.006_more_bozo_permissions b/src/packaging/Debian/patch.006_more_bozo_permissions deleted file mode 100644 index 5263b23b0..000000000 --- a/src/packaging/Debian/patch.006_more_bozo_permissions +++ /dev/null @@ -1,16 +0,0 @@ -Index: src/bozo//bosoprocs.c -=================================================================== -RCS file: /afs/sipb.mit.edu/project/openafs/debian/cvs/openafs/src/bozo/bosoprocs.c,v -retrieving revision 1.2 -diff -u -r1.2 bosoprocs.c ---- bosoprocs.c 2001/11/25 23:06:38 1.2 -+++ bosoprocs.c 2001/11/25 23:19:53 -@@ -1165,7 +1165,7 @@ - {NULL, 1,1, 0755, 02}, /* AFSDIR_SERVER_LOGS_DIRPATH */ - {NULL, 1,0, 0700, 07}, /* AFSDIR_SERVER_BACKUP_DIRPATH */ - {NULL, 1,1, 0700, 07}, /* AFSDIR_SERVER_DB_DIRPATH */ -- {NULL, 1,1, 0700, 07}, /* AFSDIR_SERVER_LOCAL_DIRPATH */ -+ {NULL, 1,1, 0700, 02}, /* AFSDIR_SERVER_LOCAL_DIRPATH */ - {NULL, 0,1, 0600, 07}, /* AFSDIR_SERVER_KEY_FILEPATH */ - {NULL, 0,1, 0600, 03}};/* AFSDIR_SERVER_ULIST_FILEPATH */ - int bozo_nbosEntryStats = diff --git a/src/packaging/Debian/patches/README b/src/packaging/Debian/patches/README deleted file mode 100644 index d337dfab9..000000000 --- a/src/packaging/Debian/patches/README +++ /dev/null @@ -1,9 +0,0 @@ -This directory contains patches relative to the upstream OpenAFS source. -It is not used automatically as part of the build process and is not -guaranteed to be completely up-to-date; it is intended as documentation of -significant divergences, a place to store patches that should be sent -upstream, and a place to document the current status of patches. - -Simple Debian-specific changes that aren't of interest to upstream will -not be included here, such as updating config.{guess,sub} or changing -paths to fit with the FHS. diff --git a/src/packaging/Debian/patches/afs-man-name b/src/packaging/Debian/patches/afs-man-name new file mode 100644 index 000000000..88fc4c005 --- /dev/null +++ b/src/packaging/Debian/patches/afs-man-name @@ -0,0 +1,1888 @@ +Current groff can't deal with NAME sections with a space on the left +side of the -. This patch has also been applied upstream and will be +in the next release after 1.4.5. + +--- openafs.orig/doc/man-pages/README ++++ openafs/doc/man-pages/README +@@ -78,7 +78,10 @@ + documents common options, and discusses the general use of the suite. + Then, each operation code in the suite should have a separate man page, + named after the command with the space between the command suite and the +- operation code replaced with an underscore. ++ operation code replaced with an underscore. The NAME section of the ++ operation man page must also use an underscore (fs_listacl, not fs ++ listacl) for compatibility with some man programs. The SYNOPSIS section ++ should, of course, use a space, since that's what the user must type. + + All man pages must follow the standard layout for man page sections and + formatting. The best general reference is the pod2man man page, +--- openafs.orig/doc/man-pages/pod1/fs_checkservers.pod ++++ openafs/doc/man-pages/pod1/fs_checkservers.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs checkservers - Displays the status of server machines ++fs_checkservers - Displays the status of server machines + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_checkvolumes.pod ++++ openafs/doc/man-pages/pod1/fs_checkvolumes.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs checkvolumes - Forces the Cache Manager to update volume information ++fs_checkvolumes - Forces the Cache Manager to update volume information + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_cleanacl.pod ++++ openafs/doc/man-pages/pod1/fs_cleanacl.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs cleanacl - Remove obsolete entries from an ACL ++fs_cleanacl - Remove obsolete entries from an ACL + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_copyacl.pod ++++ openafs/doc/man-pages/pod1/fs_copyacl.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs copyacl - Copies an ACL from a directory to one or more other directories ++fs_copyacl - Copies an ACL from a directory to one or more other directories + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_diskfree.pod ++++ openafs/doc/man-pages/pod1/fs_diskfree.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs diskfree - Shows data about the partition housing a directory or file ++fs_diskfree - Shows data about the partition housing a directory or file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_examine.pod ++++ openafs/doc/man-pages/pod1/fs_examine.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs examine - Shows data about the volume containing a directory or file ++fs_examine - Shows data about the volume containing a directory or file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_exportafs.pod ++++ openafs/doc/man-pages/pod1/fs_exportafs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs exportafs - Configures export of AFS to clients of other file systems ++fs_exportafs - Configures export of AFS to clients of other file systems + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_flush.pod ++++ openafs/doc/man-pages/pod1/fs_flush.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs flush - Forces the Cache Manager to discard a cached file or directory ++fs_flush - Forces the Cache Manager to discard a cached file or directory + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_flushall.pod ++++ openafs/doc/man-pages/pod1/fs_flushall.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs flushall - Force the AFS Cache Manager to discard all data ++fs_flushall - Force the AFS Cache Manager to discard all data + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_flushmount.pod ++++ openafs/doc/man-pages/pod1/fs_flushmount.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs flushmount - Forces the Cache Manager to discard a mount point ++fs_flushmount - Forces the Cache Manager to discard a mount point + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_flushvolume.pod ++++ openafs/doc/man-pages/pod1/fs_flushvolume.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs flushvolume - Forces the Cache Manager to discard cached data from a volume ++fs_flushvolume - Forces the Cache Manager to discard cached data from a volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_getcacheparms.pod ++++ openafs/doc/man-pages/pod1/fs_getcacheparms.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs getcacheparms - Displays the current size and usage of the cache ++fs_getcacheparms - Displays the current size and usage of the cache + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_getcalleraccess.pod ++++ openafs/doc/man-pages/pod1/fs_getcalleraccess.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs getcalleraccess - Show the current user's access to a file or directory ++fs_getcalleraccess - Show the current user's access to a file or directory + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_getcellstatus.pod ++++ openafs/doc/man-pages/pod1/fs_getcellstatus.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs getcellstatus - Reports whether setuid programs are honored in a cell ++fs_getcellstatus - Reports whether setuid programs are honored in a cell + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_getclientaddrs.pod ++++ openafs/doc/man-pages/pod1/fs_getclientaddrs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs getclientaddrs - Displays the client interfaces to register ++fs_getclientaddrs - Displays the client interfaces to register + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_getcrypt.pod ++++ openafs/doc/man-pages/pod1/fs_getcrypt.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs getcrypt - Displays the state of encryption for AFS file transfers ++fs_getcrypt - Displays the state of encryption for AFS file transfers + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_getserverprefs.pod ++++ openafs/doc/man-pages/pod1/fs_getserverprefs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs getserverprefs - Displays preference ranks for file servers or VL servers ++fs_getserverprefs - Displays preference ranks for file servers or VL servers + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_help.pod ++++ openafs/doc/man-pages/pod1/fs_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs help - Displays help for fs commands ++fs_help - Displays help for fs commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_listacl.pod ++++ openafs/doc/man-pages/pod1/fs_listacl.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs listacl - Displays ACLs ++fs_listacl - Displays ACLs + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_listaliases.pod ++++ openafs/doc/man-pages/pod1/fs_listaliases.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs listaliases - Displays the current list of aliases for AFS cells ++fs_listaliases - Displays the current list of aliases for AFS cells + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_listcells.pod ++++ openafs/doc/man-pages/pod1/fs_listcells.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs listcells - Displays the database server machines known to the Cache Manager ++fs_listcells - Displays the database server machines known to the Cache Manager + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_listquota.pod ++++ openafs/doc/man-pages/pod1/fs_listquota.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs listquota - Displays quota information for a volume ++fs_listquota - Displays quota information for a volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_lsmount.pod ++++ openafs/doc/man-pages/pod1/fs_lsmount.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs lsmount - Reports the volume for which a directory is the mount point. ++fs_lsmount - Reports the volume for which a directory is the mount point. + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_messages.pod ++++ openafs/doc/man-pages/pod1/fs_messages.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs messages - Sets whether the Cache Manager writes log messages ++fs_messages - Sets whether the Cache Manager writes log messages + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_mkmount.pod ++++ openafs/doc/man-pages/pod1/fs_mkmount.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs mkmount - Creates a mount point for a volume ++fs_mkmount - Creates a mount point for a volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_newalias.pod ++++ openafs/doc/man-pages/pod1/fs_newalias.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs newalias - Creates a new alias for a cell ++fs_newalias - Creates a new alias for a cell + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_newcell.pod ++++ openafs/doc/man-pages/pod1/fs_newcell.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs newcell - Changes the kernel-resident list of a cell's database servers ++fs_newcell - Changes the kernel-resident list of a cell's database servers + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_quota.pod ++++ openafs/doc/man-pages/pod1/fs_quota.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs quota - Displays the quota used in the volume containing a directory or file ++fs_quota - Displays the quota used in the volume containing a directory or file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_rmmount.pod ++++ openafs/doc/man-pages/pod1/fs_rmmount.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs rmmount - Removes a mount point ++fs_rmmount - Removes a mount point + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setacl.pod ++++ openafs/doc/man-pages/pod1/fs_setacl.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setacl - Sets the ACL for a directory ++fs_setacl - Sets the ACL for a directory + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setcachesize.pod ++++ openafs/doc/man-pages/pod1/fs_setcachesize.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setcachesize - Sets the size of the disk cache ++fs_setcachesize - Sets the size of the disk cache + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setcell.pod ++++ openafs/doc/man-pages/pod1/fs_setcell.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setcell - Configures permissions for setuid programs from specified cells ++fs_setcell - Configures permissions for setuid programs from specified cells + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setclientaddrs.pod ++++ openafs/doc/man-pages/pod1/fs_setclientaddrs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setclientaddrs - Sets the client interfaces to register with the File Server ++fs_setclientaddrs - Sets the client interfaces to register with the File Server + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setcrypt.pod ++++ openafs/doc/man-pages/pod1/fs_setcrypt.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setcrypt - Enables of disables the encryption of AFS file transfers ++fs_setcrypt - Enables of disables the encryption of AFS file transfers + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setquota.pod ++++ openafs/doc/man-pages/pod1/fs_setquota.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setquota - Sets the quota for the volume containing a file or directory ++fs_setquota - Sets the quota for the volume containing a file or directory + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setserverprefs.pod ++++ openafs/doc/man-pages/pod1/fs_setserverprefs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setserverprefs - Sets the preference ranks for file servers or VL servers ++fs_setserverprefs - Sets the preference ranks for file servers or VL servers + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_setvol.pod ++++ openafs/doc/man-pages/pod1/fs_setvol.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs setvol - Set quota and messages for a volume containing a file or directory ++fs_setvol - Set quota and messages for a volume containing a file or directory + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_storebehind.pod ++++ openafs/doc/man-pages/pod1/fs_storebehind.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs storebehind - Enables asynchronous writes to the file server ++fs_storebehind - Enables asynchronous writes to the file server + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_sysname.pod ++++ openafs/doc/man-pages/pod1/fs_sysname.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs sysname - Reports or sets the CPU/operating system type ++fs_sysname - Reports or sets the CPU/operating system type + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_uuid.pod ++++ openafs/doc/man-pages/pod1/fs_uuid.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs uuid - Prints the uuid of the client or generates a new one ++fs_uuid - Prints the uuid of the client or generates a new one + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_whereis.pod ++++ openafs/doc/man-pages/pod1/fs_whereis.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs whereis - Reports each file server housing a file or directory ++fs_whereis - Reports each file server housing a file or directory + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_whichcell.pod ++++ openafs/doc/man-pages/pod1/fs_whichcell.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs whichcell - Returns the cell to which a file or directory belongs ++fs_whichcell - Returns the cell to which a file or directory belongs + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_wscell.pod ++++ openafs/doc/man-pages/pod1/fs_wscell.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs wscell - Returns the name of the cell to which a machine belongs ++fs_wscell - Returns the name of the cell to which a machine belongs + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_adduser.pod ++++ openafs/doc/man-pages/pod1/pts_adduser.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts adduser - Adds a user or machine to a Protection Database group ++pts_adduser - Adds a user or machine to a Protection Database group + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_apropos.pod ++++ openafs/doc/man-pages/pod1/pts_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts apropos - Displays each help entry containing a keyword string ++pts_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_chown.pod ++++ openafs/doc/man-pages/pod1/pts_chown.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts chown - Changes the owner of a Protection Database entry ++pts_chown - Changes the owner of a Protection Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_creategroup.pod ++++ openafs/doc/man-pages/pod1/pts_creategroup.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts creategroup - Creates an (empty) Protection Database group entry ++pts_creategroup - Creates an (empty) Protection Database group entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_createuser.pod ++++ openafs/doc/man-pages/pod1/pts_createuser.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts createuser - Creates a user or machine entry in the Protection Database ++pts_createuser - Creates a user or machine entry in the Protection Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_delete.pod ++++ openafs/doc/man-pages/pod1/pts_delete.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts delete - Deletes a Protection Database entry ++pts_delete - Deletes a Protection Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_examine.pod ++++ openafs/doc/man-pages/pod1/pts_examine.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts examine - Displays a Protection Database entry ++pts_examine - Displays a Protection Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_help.pod ++++ openafs/doc/man-pages/pod1/pts_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts help - Displays help for pts commands ++pts_help - Displays help for pts commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_interactive.pod ++++ openafs/doc/man-pages/pod1/pts_interactive.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts interactive - Enters interactive mode ++pts_interactive - Enters interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_listentries.pod ++++ openafs/doc/man-pages/pod1/pts_listentries.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts listentries - Displays all users or groups in the Protection Database ++pts_listentries - Displays all users or groups in the Protection Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_listmax.pod ++++ openafs/doc/man-pages/pod1/pts_listmax.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts listmax - Displays the max user id and max group id counters ++pts_listmax - Displays the max user id and max group id counters + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_listowned.pod ++++ openafs/doc/man-pages/pod1/pts_listowned.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts listowned - Show the Protection Database groups owned by a user or group ++pts_listowned - Show the Protection Database groups owned by a user or group + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_membership.pod ++++ openafs/doc/man-pages/pod1/pts_membership.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts membership - Displays the membership list for a user or group ++pts_membership - Displays the membership list for a user or group + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_quit.pod ++++ openafs/doc/man-pages/pod1/pts_quit.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts quit - Exit from pts interactive mode ++pts_quit - Exit from pts interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_removeuser.pod ++++ openafs/doc/man-pages/pod1/pts_removeuser.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts removeuser - Removes a user from a Protection Database group ++pts_removeuser - Removes a user from a Protection Database group + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_rename.pod ++++ openafs/doc/man-pages/pod1/pts_rename.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts rename - Changes the name of a Protection Database entry ++pts_rename - Changes the name of a Protection Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_setfields.pod ++++ openafs/doc/man-pages/pod1/pts_setfields.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts setfields - Sets privacy flags or quota for a Protection Database entry ++pts_setfields - Sets privacy flags or quota for a Protection Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_setmax.pod ++++ openafs/doc/man-pages/pod1/pts_setmax.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts setmax - Sets the value of the max group id or max user id counter ++pts_setmax - Sets the value of the max group id or max user id counter + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_sleep.pod ++++ openafs/doc/man-pages/pod1/pts_sleep.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts sleep - Pauses for a few seconds ++pts_sleep - Pauses for a few seconds + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/pts_source.pod ++++ openafs/doc/man-pages/pod1/pts_source.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-pts source - Read pts commands from a file ++pts_source - Read pts commands from a file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_addsite.pod ++++ openafs/doc/man-pages/pod1/vos_addsite.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos addsite - Adds a read-only site definition to a volume's VLDB entry ++vos_addsite - Adds a read-only site definition to a volume's VLDB entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_apropos.pod ++++ openafs/doc/man-pages/pod1/vos_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos apropos - Displays each help entry containing a keyword string ++vos_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_backup.pod ++++ openafs/doc/man-pages/pod1/vos_backup.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos backup - Creates a backup volume for a single read/write volume ++vos_backup - Creates a backup volume for a single read/write volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_backupsys.pod ++++ openafs/doc/man-pages/pod1/vos_backupsys.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos backupsys - Creates a backup volume for several read/write volumes ++vos_backupsys - Creates a backup volume for several read/write volumes + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_changeaddr.pod ++++ openafs/doc/man-pages/pod1/vos_changeaddr.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos changeaddr - Changes or removes a file server machine's entry in the VLDB ++vos_changeaddr - Changes or removes a file server machine's entry in the VLDB + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_changeloc.pod ++++ openafs/doc/man-pages/pod1/vos_changeloc.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos changeloc - Change a volume's entry in the VLDB ++vos_changeloc - Change a volume's entry in the VLDB + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_create.pod ++++ openafs/doc/man-pages/pod1/vos_create.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos create - Creates a read/write volume and associated VLDB entry ++vos_create - Creates a read/write volume and associated VLDB entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_delentry.pod ++++ openafs/doc/man-pages/pod1/vos_delentry.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos delentry - Removes a volume entry from the VLDB. ++vos_delentry - Removes a volume entry from the VLDB. + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_dump.pod ++++ openafs/doc/man-pages/pod1/vos_dump.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos dump - Converts a volume into ASCII format and writes it to a file ++vos_dump - Converts a volume into ASCII format and writes it to a file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_examine.pod ++++ openafs/doc/man-pages/pod1/vos_examine.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos examine - Shows volume header and VLDB entry information for a volume ++vos_examine - Shows volume header and VLDB entry information for a volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_help.pod ++++ openafs/doc/man-pages/pod1/vos_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos help - Displays help for vos commands ++vos_help - Displays help for vos commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_listaddrs.pod ++++ openafs/doc/man-pages/pod1/vos_listaddrs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos listaddrs - Displays all VLDB server entries ++vos_listaddrs - Displays all VLDB server entries + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_listpart.pod ++++ openafs/doc/man-pages/pod1/vos_listpart.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos listpart - Displays all AFS partitions on a file server machine ++vos_listpart - Displays all AFS partitions on a file server machine + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_listvldb.pod ++++ openafs/doc/man-pages/pod1/vos_listvldb.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos listvldb - Displays a volume's VLDB entry ++vos_listvldb - Displays a volume's VLDB entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_listvol.pod ++++ openafs/doc/man-pages/pod1/vos_listvol.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos listvol - Displays information from a volume header ++vos_listvol - Displays information from a volume header + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_lock.pod ++++ openafs/doc/man-pages/pod1/vos_lock.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos lock - Locks a VLDB volume entry ++vos_lock - Locks a VLDB volume entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_move.pod ++++ openafs/doc/man-pages/pod1/vos_move.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos move - Moves a read/write volume to another site ++vos_move - Moves a read/write volume to another site + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_offline.pod ++++ openafs/doc/man-pages/pod1/vos_offline.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos offline - Takes a volume offline ++vos_offline - Takes a volume offline + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_online.pod ++++ openafs/doc/man-pages/pod1/vos_online.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos online - Brings a volume online ++vos_online - Brings a volume online + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_partinfo.pod ++++ openafs/doc/man-pages/pod1/vos_partinfo.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos partinfo - Reports the available and total space on a partition ++vos_partinfo - Reports the available and total space on a partition + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_release.pod ++++ openafs/doc/man-pages/pod1/vos_release.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos release - Updates read-only volumes to match the read/write source volume ++vos_release - Updates read-only volumes to match the read/write source volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_remove.pod ++++ openafs/doc/man-pages/pod1/vos_remove.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos remove - Removes a volume from a site ++vos_remove - Removes a volume from a site + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_remsite.pod ++++ openafs/doc/man-pages/pod1/vos_remsite.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos remsite - Removes a read-only site definition from a VLDB entry ++vos_remsite - Removes a read-only site definition from a VLDB entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_rename.pod ++++ openafs/doc/man-pages/pod1/vos_rename.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos rename - Renames a volume ++vos_rename - Renames a volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_restore.pod ++++ openafs/doc/man-pages/pod1/vos_restore.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos restore - Converts an ASCII dump file into an AFS volume ++vos_restore - Converts an ASCII dump file into an AFS volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_size.pod ++++ openafs/doc/man-pages/pod1/vos_size.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos size - Computes the size of a volume dump ++vos_size - Computes the size of a volume dump + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_status.pod ++++ openafs/doc/man-pages/pod1/vos_status.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos status - Reports a Volume Server's status ++vos_status - Reports a Volume Server's status + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_syncserv.pod ++++ openafs/doc/man-pages/pod1/vos_syncserv.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos syncserv - Verifies VLDB entries that mention a specified site ++vos_syncserv - Verifies VLDB entries that mention a specified site + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_syncvldb.pod ++++ openafs/doc/man-pages/pod1/vos_syncvldb.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos syncvldb - Verifies VLDB entries for volumes residing at specified site ++vos_syncvldb - Verifies VLDB entries for volumes residing at specified site + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_unlock.pod ++++ openafs/doc/man-pages/pod1/vos_unlock.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos unlock - Unlocks a single VLDB entry ++vos_unlock - Unlocks a single VLDB entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_unlockvldb.pod ++++ openafs/doc/man-pages/pod1/vos_unlockvldb.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos unlockvldb - Unlocks several locked VLDB entries ++vos_unlockvldb - Unlocks several locked VLDB entries + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/vos_zap.pod ++++ openafs/doc/man-pages/pod1/vos_zap.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-vos zap - Removes a volume from its site without writing to the VLDB ++vos_zap - Removes a volume from its site without writing to the VLDB + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_adddump.pod ++++ openafs/doc/man-pages/pod8/backup_adddump.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup adddump - Defines a dump level in the dump hierarchy ++backup_adddump - Defines a dump level in the dump hierarchy + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_addhost.pod ++++ openafs/doc/man-pages/pod8/backup_addhost.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup addhost - Adds a Tape Coordinator entry to the Backup Database ++backup_addhost - Adds a Tape Coordinator entry to the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_addvolentry.pod ++++ openafs/doc/man-pages/pod8/backup_addvolentry.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup addvolentry - Defines a volume entry in a volume set ++backup_addvolentry - Defines a volume entry in a volume set + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_addvolset.pod ++++ openafs/doc/man-pages/pod8/backup_addvolset.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup addvolset - Creates a new (empty) volume set ++backup_addvolset - Creates a new (empty) volume set + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_apropos.pod ++++ openafs/doc/man-pages/pod8/backup_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup apropos - Displays each help entry containing a keyword string ++backup_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_dbverify.pod ++++ openafs/doc/man-pages/pod8/backup_dbverify.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup dbverify - Checks the integrity of the Backup Database ++backup_dbverify - Checks the integrity of the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_deldump.pod ++++ openafs/doc/man-pages/pod8/backup_deldump.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup deldump - Deletes a dump level from the Backup Database ++backup_deldump - Deletes a dump level from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_deletedump.pod ++++ openafs/doc/man-pages/pod8/backup_deletedump.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup deletedump - Deletes one or more dump records from the Backup Database ++backup_deletedump - Deletes one or more dump records from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_delhost.pod ++++ openafs/doc/man-pages/pod8/backup_delhost.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup delhost - Deletes a Tape Coordinator entry from the Backup Database ++backup_delhost - Deletes a Tape Coordinator entry from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_delvolentry.pod ++++ openafs/doc/man-pages/pod8/backup_delvolentry.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup delvolentry - Deletes a volume entry from a volume set ++backup_delvolentry - Deletes a volume entry from a volume set + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_delvolset.pod ++++ openafs/doc/man-pages/pod8/backup_delvolset.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup delvolset - Deletes one or more volume sets from the Backup Database ++backup_delvolset - Deletes one or more volume sets from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_diskrestore.pod ++++ openafs/doc/man-pages/pod8/backup_diskrestore.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup diskrestore - Restores the entire contents of a partition ++backup_diskrestore - Restores the entire contents of a partition + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_dump.pod ++++ openafs/doc/man-pages/pod8/backup_dump.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup dump - Creates a dump (dumps a volume set at a particular dump level) ++backup_dump - Creates a dump (dumps a volume set at a particular dump level) + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_dumpinfo.pod ++++ openafs/doc/man-pages/pod8/backup_dumpinfo.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup dumpinfo - Displays a dump record from the Backup Database ++backup_dumpinfo - Displays a dump record from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_help.pod ++++ openafs/doc/man-pages/pod8/backup_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup help - Displays help for backup commands ++backup_help - Displays help for backup commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_interactive.pod ++++ openafs/doc/man-pages/pod8/backup_interactive.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup interactive - Enters interactive mode ++backup_interactive - Enters interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_jobs.pod ++++ openafs/doc/man-pages/pod8/backup_jobs.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup jobs - Lists pending and running operations in interactive mode ++backup_jobs - Lists pending and running operations in interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_kill.pod ++++ openafs/doc/man-pages/pod8/backup_kill.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup kill - Terminates a pending or running operation ++backup_kill - Terminates a pending or running operation + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_labeltape.pod ++++ openafs/doc/man-pages/pod8/backup_labeltape.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup labeltape - Creates the magnetic label on a tape ++backup_labeltape - Creates the magnetic label on a tape + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_listdumps.pod ++++ openafs/doc/man-pages/pod8/backup_listdumps.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup listdumps - Displays the dump hierarchy from the Backup Database ++backup_listdumps - Displays the dump hierarchy from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_listhosts.pod ++++ openafs/doc/man-pages/pod8/backup_listhosts.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup listhosts - Lists Tape Coordinators registered in the Backup Database ++backup_listhosts - Lists Tape Coordinators registered in the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_listvolsets.pod ++++ openafs/doc/man-pages/pod8/backup_listvolsets.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup listvolsets - Lists volume set entries from the Backup Database ++backup_listvolsets - Lists volume set entries from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_quit.pod ++++ openafs/doc/man-pages/pod8/backup_quit.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup quit - Leaves interactive mode ++backup_quit - Leaves interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_readlabel.pod ++++ openafs/doc/man-pages/pod8/backup_readlabel.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup readlabel - Reads and displays a tape's label ++backup_readlabel - Reads and displays a tape's label + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_restoredb.pod ++++ openafs/doc/man-pages/pod8/backup_restoredb.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup restoredb - Restores a saved copy of the Backup Database ++backup_restoredb - Restores a saved copy of the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_savedb.pod ++++ openafs/doc/man-pages/pod8/backup_savedb.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup savedb - Creates a saved copy of the Backup Database ++backup_savedb - Creates a saved copy of the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_scantape.pod ++++ openafs/doc/man-pages/pod8/backup_scantape.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup scantape - Extracts dump information from a tape ++backup_scantape - Extracts dump information from a tape + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_setexp.pod ++++ openafs/doc/man-pages/pod8/backup_setexp.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup setexp - Sets the expiration date for existing dump levels. ++backup_setexp - Sets the expiration date for existing dump levels. + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_status.pod ++++ openafs/doc/man-pages/pod8/backup_status.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup status - Reports a Tape Coordinator's status ++backup_status - Reports a Tape Coordinator's status + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_volinfo.pod ++++ openafs/doc/man-pages/pod8/backup_volinfo.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup volinfo - Displays a volume's dump history from the Backup Database ++backup_volinfo - Displays a volume's dump history from the Backup Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_volrestore.pod ++++ openafs/doc/man-pages/pod8/backup_volrestore.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup volrestore - Restores one or more volumes ++backup_volrestore - Restores one or more volumes + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/backup_volsetrestore.pod ++++ openafs/doc/man-pages/pod8/backup_volsetrestore.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-backup volsetrestore - Restores all volumes in a volume set ++backup_volsetrestore - Restores all volumes in a volume set + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_addhost.pod ++++ openafs/doc/man-pages/pod8/bos_addhost.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos addhost - Adds a database server machine to the CellServDB file ++bos_addhost - Adds a database server machine to the CellServDB file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_addkey.pod ++++ openafs/doc/man-pages/pod8/bos_addkey.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos addkey - Adds a new server encryption key to the KeyFile file ++bos_addkey - Adds a new server encryption key to the KeyFile file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_adduser.pod ++++ openafs/doc/man-pages/pod8/bos_adduser.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos adduser - Adds a privileged user to the UserList file ++bos_adduser - Adds a privileged user to the UserList file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_apropos.pod ++++ openafs/doc/man-pages/pod8/bos_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos apropos - Displays each help entry containing a keyword string ++bos_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_create.pod ++++ openafs/doc/man-pages/pod8/bos_create.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos create - Defines a new process in the BosConfig file and starts it ++bos_create - Defines a new process in the BosConfig file and starts it + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_delete.pod ++++ openafs/doc/man-pages/pod8/bos_delete.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos delete - Deletes a server process from the BosConfig file ++bos_delete - Deletes a server process from the BosConfig file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_exec.pod ++++ openafs/doc/man-pages/pod8/bos_exec.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos exec - Executes a command on a remote server machine ++bos_exec - Executes a command on a remote server machine + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_getdate.pod ++++ openafs/doc/man-pages/pod8/bos_getdate.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos getdate - Displays the time stamps on an AFS binary file ++bos_getdate - Displays the time stamps on an AFS binary file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_getlog.pod ++++ openafs/doc/man-pages/pod8/bos_getlog.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos getlog - Prints a server process's log file ++bos_getlog - Prints a server process's log file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_getrestart.pod ++++ openafs/doc/man-pages/pod8/bos_getrestart.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos getrestart - Displays the automatic restart times for server processes ++bos_getrestart - Displays the automatic restart times for server processes + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_help.pod ++++ openafs/doc/man-pages/pod8/bos_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos help - Displays help for bos commands ++bos_help - Displays help for bos commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_install.pod ++++ openafs/doc/man-pages/pod8/bos_install.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos install - Installs a new version of a binary file ++bos_install - Installs a new version of a binary file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_listhosts.pod ++++ openafs/doc/man-pages/pod8/bos_listhosts.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos listhosts - Displays the contents of the CellServDB file ++bos_listhosts - Displays the contents of the CellServDB file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_listkeys.pod ++++ openafs/doc/man-pages/pod8/bos_listkeys.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos listkeys - Displays the server encryption keys from the KeyFile file ++bos_listkeys - Displays the server encryption keys from the KeyFile file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_listusers.pod ++++ openafs/doc/man-pages/pod8/bos_listusers.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos listusers - Lists the privileged users from the UserList file ++bos_listusers - Lists the privileged users from the UserList file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_prune.pod ++++ openafs/doc/man-pages/pod8/bos_prune.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos prune - Removes obsolete files from /usr/afs/bin and /usr/afs/logs ++bos_prune - Removes obsolete files from /usr/afs/bin and /usr/afs/logs + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_removehost.pod ++++ openafs/doc/man-pages/pod8/bos_removehost.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos removehost - Removes a database server machine from the CellServDB file ++bos_removehost - Removes a database server machine from the CellServDB file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_removekey.pod ++++ openafs/doc/man-pages/pod8/bos_removekey.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos removekey - Removes a server encryption key from the KeyFile file ++bos_removekey - Removes a server encryption key from the KeyFile file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_removeuser.pod ++++ openafs/doc/man-pages/pod8/bos_removeuser.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos removeuser - Removes a privileged user from the UserList file ++bos_removeuser - Removes a privileged user from the UserList file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_restart.pod ++++ openafs/doc/man-pages/pod8/bos_restart.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos restart - Restarts a server process ++bos_restart - Restarts a server process + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_salvage.pod ++++ openafs/doc/man-pages/pod8/bos_salvage.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos salvage - Restores internal consistency to a file system or volume ++bos_salvage - Restores internal consistency to a file system or volume + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_setauth.pod ++++ openafs/doc/man-pages/pod8/bos_setauth.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos setauth - Sets authorization checking requirements for all server processes ++bos_setauth - Sets authorization checking requirements for all server processes + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_setcellname.pod ++++ openafs/doc/man-pages/pod8/bos_setcellname.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos setcellname - Sets the cell's name in ThisCell and CellServDB ++bos_setcellname - Sets the cell's name in ThisCell and CellServDB + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_setrestart.pod ++++ openafs/doc/man-pages/pod8/bos_setrestart.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos setrestart - Sets when the BOS Server restarts processes ++bos_setrestart - Sets when the BOS Server restarts processes + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_shutdown.pod ++++ openafs/doc/man-pages/pod8/bos_shutdown.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos shutdown - Stops a process without changing its status flag ++bos_shutdown - Stops a process without changing its status flag + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_start.pod ++++ openafs/doc/man-pages/pod8/bos_start.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos start - Starts a process after setting its status flag ++bos_start - Starts a process after setting its status flag + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_startup.pod ++++ openafs/doc/man-pages/pod8/bos_startup.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos startup - Starts a process without changing its status flag ++bos_startup - Starts a process without changing its status flag + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_status.pod ++++ openafs/doc/man-pages/pod8/bos_status.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos status - Displays the status of server processes ++bos_status - Displays the status of server processes + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_stop.pod ++++ openafs/doc/man-pages/pod8/bos_stop.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos stop - Stops a process after changing its status flag ++bos_stop - Stops a process after changing its status flag + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/bos_uninstall.pod ++++ openafs/doc/man-pages/pod8/bos_uninstall.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-bos uninstall - Reverts to the former version of a process's binary file ++bos_uninstall - Reverts to the former version of a process's binary file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_apropos.pod ++++ openafs/doc/man-pages/pod8/fstrace_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace apropos - Displays each help entry containing a keyword string ++fstrace_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_clear.pod ++++ openafs/doc/man-pages/pod8/fstrace_clear.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace clear - Clears the trace log ++fstrace_clear - Clears the trace log + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_dump.pod ++++ openafs/doc/man-pages/pod8/fstrace_dump.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace dump - Dumps a trace log ++fstrace_dump - Dumps a trace log + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_help.pod ++++ openafs/doc/man-pages/pod8/fstrace_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace help - Displays help for fstrace commands ++fstrace_help - Displays help for fstrace commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_lslog.pod ++++ openafs/doc/man-pages/pod8/fstrace_lslog.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace lslog - Displays information about a log ++fstrace_lslog - Displays information about a log + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_lsset.pod ++++ openafs/doc/man-pages/pod8/fstrace_lsset.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace lsset - Reports the status of an event set ++fstrace_lsset - Reports the status of an event set + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_setlog.pod ++++ openafs/doc/man-pages/pod8/fstrace_setlog.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace setlog - Sets the size of a trace log ++fstrace_setlog - Sets the size of a trace log + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/fstrace_setset.pod ++++ openafs/doc/man-pages/pod8/fstrace_setset.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fstrace setset - Sets the status of an event set ++fstrace_setset - Sets the status of an event set + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_apropos.pod ++++ openafs/doc/man-pages/pod8/kas_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas apropos - Displays each help entry containing a keyword string ++kas_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_create.pod ++++ openafs/doc/man-pages/pod8/kas_create.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas create - Creates an entry in the Authentication Database ++kas_create - Creates an entry in the Authentication Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_delete.pod ++++ openafs/doc/man-pages/pod8/kas_delete.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas delete - Deletes an entry from the Authentication Database ++kas_delete - Deletes an entry from the Authentication Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_examine.pod ++++ openafs/doc/man-pages/pod8/kas_examine.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas examine - Displays information from an Authentication Database entry ++kas_examine - Displays information from an Authentication Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_forgetticket.pod ++++ openafs/doc/man-pages/pod8/kas_forgetticket.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas forgetticket - Discards all tickets for the issuer ++kas_forgetticket - Discards all tickets for the issuer + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_help.pod ++++ openafs/doc/man-pages/pod8/kas_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas help - Displays help for kas commands ++kas_help - Displays help for kas commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_interactive.pod ++++ openafs/doc/man-pages/pod8/kas_interactive.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas interactive - Enters interactive mode ++kas_interactive - Enters interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_list.pod ++++ openafs/doc/man-pages/pod8/kas_list.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas list - Displays all entries in the Authentication Database ++kas_list - Displays all entries in the Authentication Database + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_listtickets.pod ++++ openafs/doc/man-pages/pod8/kas_listtickets.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas listtickets - Displays all of the issuer's tickets (tokens) ++kas_listtickets - Displays all of the issuer's tickets (tokens) + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_noauthentication.pod ++++ openafs/doc/man-pages/pod8/kas_noauthentication.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas noauthentication - Discards an authenticated identity in interactive mode ++kas_noauthentication - Discards an authenticated identity in interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_quit.pod ++++ openafs/doc/man-pages/pod8/kas_quit.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas quit - Leaves interactive mode ++kas_quit - Leaves interactive mode + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_setfields.pod ++++ openafs/doc/man-pages/pod8/kas_setfields.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas setfields - Sets fields in an Authentication Database entry ++kas_setfields - Sets fields in an Authentication Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_setpassword.pod ++++ openafs/doc/man-pages/pod8/kas_setpassword.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas setpassword - Changes the key field in an Authentication Database entry ++kas_setpassword - Changes the key field in an Authentication Database entry + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_statistics.pod ++++ openafs/doc/man-pages/pod8/kas_statistics.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas statistics - Displays statistics from an Authentication Server process ++kas_statistics - Displays statistics from an Authentication Server process + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_stringtokey.pod ++++ openafs/doc/man-pages/pod8/kas_stringtokey.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas stringtokey - Converts a character string into an octal key ++kas_stringtokey - Converts a character string into an octal key + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/kas_unlock.pod ++++ openafs/doc/man-pages/pod8/kas_unlock.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-kas unlock - Unlocks a locked user account ++kas_unlock - Unlocks a locked user account + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/uss_add.pod ++++ openafs/doc/man-pages/pod8/uss_add.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-uss add - Creates a user account ++uss_add - Creates a user account + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/uss_apropos.pod ++++ openafs/doc/man-pages/pod8/uss_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-uss apropos - Displays each help entry containing a keyword string. ++uss_apropos - Displays each help entry containing a keyword string. + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/uss_bulk.pod ++++ openafs/doc/man-pages/pod8/uss_bulk.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-uss bulk - Executes multiple uss commands listed in a file ++uss_bulk - Executes multiple uss commands listed in a file + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/uss_delete.pod ++++ openafs/doc/man-pages/pod8/uss_delete.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-uss delete - Deletes a user account ++uss_delete - Deletes a user account + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod8/uss_help.pod ++++ openafs/doc/man-pages/pod8/uss_help.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-uss help - Displays help for uss commands ++uss_help - Displays help for uss commands + + =head1 SYNOPSIS + +--- openafs.orig/doc/man-pages/pod1/fs_apropos.pod ++++ openafs/doc/man-pages/pod1/fs_apropos.pod +@@ -1,6 +1,6 @@ + =head1 NAME + +-fs apropos - Displays each help entry containing a keyword string ++fs_apropos - Displays each help entry containing a keyword string + + =head1 SYNOPSIS + diff --git a/src/packaging/Debian/patches/alloc-vnode b/src/packaging/Debian/patches/alloc-vnode new file mode 100644 index 000000000..9c4d535c3 --- /dev/null +++ b/src/packaging/Debian/patches/alloc-vnode @@ -0,0 +1,34 @@ +Allocate vnodes rather than using the stack, which fixes file server +problems on SPARC. Upstream delta: + +STABLE14-volprocs-alloc-vnode-instead-of-using-stack-20071126 + +Debian Bug#448380 + +--- openafs.orig/src/volser/volprocs.c ++++ openafs/src/volser/volprocs.c +@@ -210,14 +210,14 @@ + struct acl_accessList *ACL; + ViceFid did; + Inode inodeNumber, nearInode; +- char buf[SIZEOF_LARGEDISKVNODE]; +- struct VnodeDiskObject *vnode = (struct VnodeDiskObject *)buf; ++ struct VnodeDiskObject *vnode; + struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge]; + IHandle_t *h; + FdHandle_t *fdP; + int code; + afs_fsize_t length; + ++ vnode = (struct VnodeDiskObject *)malloc(SIZEOF_LARGEDISKVNODE); + memset(vnode, 0, SIZEOF_LARGEDISKVNODE); + + V_pref(vp, nearInode); +@@ -282,6 +282,7 @@ + VNDISK_GET_LEN(length, vnode); + V_diskused(vp) = nBlocks(length); + ++ free(vnode); + return 1; + } + diff --git a/src/packaging/Debian/patches/bos-permissions b/src/packaging/Debian/patches/bos-permissions new file mode 100644 index 000000000..cae2297fe --- /dev/null +++ b/src/packaging/Debian/patches/bos-permissions @@ -0,0 +1,24 @@ +Expect the server directory to be mode 0700 since that's where the AFS +KeyFile is stored. Allow the local directory to be mode 0755, since +there's no reason for it to be more restrictive. Allowing the server +directory to be mode 0700 causes problems upstream if people symlink the +client configuration to the server directory, which is recommended by +some documentation. + +--- openafs.orig/src/bozo/bosoprocs.c ++++ openafs/src/bozo/bosoprocs.c +@@ -1324,12 +1324,12 @@ + + struct bozo_bosEntryStats bozo_bosEntryStats[] = { + {NULL, 1, 1, 0755, 02}, /* AFSDIR_SERVER_AFS_DIRPATH */ +- {NULL, 1, 1, 0755, 02}, /* AFSDIR_SERVER_ETC_DIRPATH */ ++ {NULL, 1, 1, 0700, 02}, /* AFSDIR_SERVER_ETC_DIRPATH */ + {NULL, 1, 1, 0755, 02}, /* AFSDIR_SERVER_BIN_DIRPATH */ + {NULL, 1, 1, 0755, 02}, /* AFSDIR_SERVER_LOGS_DIRPATH */ + {NULL, 1, 0, 0700, 07}, /* AFSDIR_SERVER_BACKUP_DIRPATH */ + {NULL, 1, 1, 0700, 07}, /* AFSDIR_SERVER_DB_DIRPATH */ +- {NULL, 1, 1, 0700, 07}, /* AFSDIR_SERVER_LOCAL_DIRPATH */ ++ {NULL, 1, 1, 0700, 02}, /* AFSDIR_SERVER_LOCAL_DIRPATH */ + {NULL, 0, 1, 0600, 07}, /* AFSDIR_SERVER_KEY_FILEPATH */ + {NULL, 0, 1, 0600, 03} + }; /* AFSDIR_SERVER_ULIST_FILEPATH */ diff --git a/src/packaging/Debian/patches/compiler-flags b/src/packaging/Debian/patches/compiler-flags new file mode 100644 index 000000000..eddf6d449 --- /dev/null +++ b/src/packaging/Debian/patches/compiler-flags @@ -0,0 +1,213 @@ +Use $CC for the compiler instead of forcing cc or gcc and add -fPIC in +a few more places. The latter should be committed upstream. The former +is waiting for upstream work to separate the kernel compiler from the +userspace compiler, since $CC should only be used for the latter on other +platforms. + +Also combines the sparc sysnames together, which is suitable upstream. + +--- openafs.orig/src/cf/osconf.m4 ++++ openafs/src/cf/osconf.m4 +@@ -4,9 +4,8 @@ + dnl defaults, override in case below as needed + XCFLAGS='${DBG} ${OPTMZ}' + SHLIB_SUFFIX="so" +-CC="cc" +-CCOBJ="cc" +-MT_CC="cc" ++CCOBJ=$CC ++MT_CC=$CC + XLIBS="${LIB_AFSDB}" + + dnl debugging and optimization flag defaults +@@ -244,6 +243,7 @@ + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE -G0" +@@ -271,6 +271,7 @@ + MT_LIBS="-lpthread" + PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" ++ SHLIB_CFLAGS="-fPIC" + TXLIBS="/usr/lib64/libncurses.so" + XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" + SHLIB_LINKER="${MT_CC} -shared" +@@ -291,14 +292,14 @@ + ;; + + i386_umlinux22) +- CC="gcc -pipe" +- CCOBJ="gcc -pipe" +- MT_CC="gcc -pipe" ++ CCOBJ="${CC} -pipe" ++ MT_CC="${CC} -pipe" + KERN_OPTMZ=-O2 + LEX="flex -l" + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" +@@ -307,9 +308,8 @@ + ;; + + i386_linux*) +- CC="gcc -pipe" +- CCOBJ="gcc -pipe" +- MT_CC="gcc -pipe" ++ CCOBJ="${CC} -pipe" ++ MT_CC="${CC} -pipe" + KERN_OPTMZ=-O2 + LEX="flex -l" + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' +@@ -320,6 +320,7 @@ + LWP_OPTMZ=-O2 + OPTMZ=-O2 + PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" +@@ -327,9 +328,8 @@ + ;; + + i386_umlinux24) +- CC="gcc -pipe" +- CCOBJ="gcc -pipe" +- MT_CC="gcc -pipe" ++ CCOBJ="${CC} -pipe" ++ MT_CC="${CC} -pipe" + KERN_OPTMZ=-O2 + LEX="flex -l" + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' +@@ -340,6 +340,7 @@ + LWP_OPTMZ=-O2 + OPTMZ=-O2 + PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" +@@ -347,9 +348,8 @@ + ;; + + i386_umlinux26) +- CC="gcc -pipe" +- CCOBJ="gcc -pipe" +- MT_CC="gcc -pipe" ++ CCOBJ="${CC} -pipe" ++ MT_CC="${CC} -pipe" + KERN_OPTMZ=-O2 + LEX="flex -l" + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' +@@ -360,6 +360,7 @@ + LWP_OPTMZ=-O2 + OPTMZ=-O2 + PAM_CFLAGS="-g -O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-g -O2 -D_LARGEFILE64_SOURCE" +@@ -385,6 +386,7 @@ + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" +@@ -557,8 +559,7 @@ + ;; + + s390_linux22) +- CC="gcc" +- CCOBJ="gcc" ++ CCOBJ="$CC" + LD="ld" + KERN_OPTMZ=-O2 + LEX="flex -l" +@@ -566,6 +567,7 @@ + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" +@@ -574,8 +576,7 @@ + ;; + + s390_linux24|s390_linux26) +- CC="gcc" +- CCOBJ="gcc" ++ CCOBJ="$CC" + LD="ld" + KERN_OPTMZ=-O2 + LEX="flex -l" +@@ -583,6 +584,7 @@ + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" +@@ -591,8 +593,7 @@ + ;; + + s390x_linux24|s390x_linux26) +- CC="gcc" +- CCOBJ="gcc -fPIC" ++ CCOBJ="$CC" + LD="ld" + KERN_OPTMZ=-O2 + LEX="flex -l" +@@ -600,6 +601,7 @@ + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x -Xlinker -Bsymbolic" + TXLIBS="-lncurses" + XCFLAGS="-O -g -D_LARGEFILE64_SOURCE -D__s390x__" +@@ -669,12 +671,13 @@ + SHLIB_LINKER="${CC} -shared" + ;; + +- sparc64_linux*) ++ sparc*_linux*) + KERN_OPTMZ=-O2 + LEX="flex -l" + MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' + MT_LIBS="-lpthread" + PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" ++ SHLIB_CFLAGS="-fPIC" + SHLIB_LDFLAGS="-shared -Xlinker -x" + TXLIBS="-lncurses" + XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" +@@ -684,19 +687,6 @@ + SHLIB_LINKER="${MT_CC} -shared" + ;; + +- sparc_linux22) +- KERN_OPTMZ=-O2 +- LEX="flex -l" +- MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' +- MT_LIBS="-lpthread" +- PAM_CFLAGS="-O2 -Dlinux -DLINUX_PAM -fPIC" +- SHLIB_LDFLAGS="-shared -Xlinker -x" +- TXLIBS="-lncurses" +- XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" +- YACC="bison -y" +- SHLIB_LINKER="${MT_CC} -shared" +- ;; +- + sun4_413) + CCXPG2="/usr/xpg2bin/cc" + CC="gcc" diff --git a/src/packaging/Debian/patches/dfsg b/src/packaging/Debian/patches/dfsg new file mode 100644 index 000000000..4604db1db --- /dev/null +++ b/src/packaging/Debian/patches/dfsg @@ -0,0 +1,73 @@ +Patch upstream Makefiles to remove references to files that had to be +removed from the source package for DFSG freeness reasons. Not suitable +upstream for obvious reasons. + +--- openafs.orig/src/afs/Makefile.in ++++ openafs/src/afs/Makefile.in +@@ -13,7 +13,7 @@ + all: depinstall + + depinstall: ${TOP_INCDIR}/afs/afs.h ${TOP_INCDIR}/afs/osi_inode.h ${TOP_INCDIR}/afs/afs_stats.h \ +- ${TOP_INCDIR}/afs/exporter.h ${TOP_INCDIR}/afs/nfsclient.h afszcm.cat AFS_component_version_number.c ${TOP_INCDIR}/afs/unified_afs.h ${TOP_INCDIR}/afs/sysctl.h ++ ${TOP_INCDIR}/afs/exporter.h ${TOP_INCDIR}/afs/nfsclient.h afszcm.cat AFS_component_version_number.c ${TOP_INCDIR}/afs/unified_afs.h + case ${SYS_NAME} in \ + pmax_ul43 | pmax_ul43a) \ + ${INSTALL} longc_procs.h ${TOP_INCDIR}/afs ;; \ +@@ -43,7 +43,7 @@ + gencat afszcm.cat afs_trace.msf ;; \ + esac + +-install: ${DESTDIR}${includedir}/afs/afs.h ${DESTDIR}${includedir}/afs/osi_inode.h ${DESTDIR}${includedir}/afs/afs_stats.h ${DESTDIR}${includedir}/afs/exporter.h ${DESTDIR}${includedir}/afs/nfsclient.h ${DESTDIR}${includedir}/afs/unified_afs.h ${DESTDIR}${includedir}/afs/sysctl.h ++install: ${DESTDIR}${includedir}/afs/afs.h ${DESTDIR}${includedir}/afs/osi_inode.h ${DESTDIR}${includedir}/afs/afs_stats.h ${DESTDIR}${includedir}/afs/exporter.h ${DESTDIR}${includedir}/afs/nfsclient.h ${DESTDIR}${includedir}/afs/unified_afs.h + case ${SYS_NAME} in \ + pmax_ul43 | pmax_ul43a) \ + ${INSTALL} longc_procs.h ${DESTDIR}${includedir}/afs ;; \ +@@ -131,7 +131,7 @@ + ${INSTALL} $? $@ + + +-dest: ${DEST}/include/afs/afs.h ${DEST}/include/afs/osi_inode.h ${DEST}/include/afs/afs_stats.h ${DEST}/include/afs/exporter.h ${DEST}/include/afs/nfsclient.h ${DEST}/include/afs/unified_afs.h ${DEST}/include/afs/sysctl.h ++dest: ${DEST}/include/afs/afs.h ${DEST}/include/afs/osi_inode.h ${DEST}/include/afs/afs_stats.h ${DEST}/include/afs/exporter.h ${DEST}/include/afs/nfsclient.h ${DEST}/include/afs/unified_afs.h + case ${SYS_NAME} in \ + pmax_ul43 | pmax_ul43a) \ + ${INSTALL} longc_procs.h ${DEST}/include/afs ;; \ +--- openafs.orig/src/tviced/Makefile.in ++++ openafs/src/tviced/Makefile.in +@@ -38,8 +38,7 @@ + DIROBJS=buffer.o dir.o salvage.o + + VOLOBJS= vnode.o volume.o vutil.o partition.o fssync.o purge.o \ +- clone.o devname.o common.o ihandle.o listinodes.o namei_ops.o \ +- fstab.o ++ clone.o devname.o common.o ihandle.o listinodes.o namei_ops.o + + FSINTOBJS= afsaux.o afscbint.cs.o afsint.ss.o afsint.xdr.o + +--- openafs.orig/src/util/Makefile.in ++++ openafs/src/util/Makefile.in +@@ -12,7 +12,7 @@ + + objects = assert.o base64.o casestrcpy.o ktime.o volparse.o hostparse.o \ + hputil.o kreltime.o isathing.o get_krbrlm.o uuid.o serverLog.o \ +- dirpath.o fileutil.o netutils.o flipbase64.o fstab.o \ ++ dirpath.o fileutil.o netutils.o flipbase64.o \ + afs_atomlist.o afs_lhash.o snprintf.o strlcat.o strlcpy.o \ + daemon.o rxkstats.o ${REGEX_OBJ} + +@@ -392,4 +392,4 @@ + assert.c base64.c casestrcpy.c ktime.c volparse.c hostparse.c \ + hputil.c kreltime.c isathing.c get_krbrlm.c uuid.c serverLog.c \ + dirpath.c fileutil.c netutils.c flipbase64.c \ +- afs_atomlist.c afs_lhash.c snprintf.c fstab.c ++ afs_atomlist.c afs_lhash.c snprintf.c +--- openafs.orig/configure.in ++++ openafs/configure.in +@@ -82,8 +82,6 @@ + src/mpp/Makefile \ + src/null/Makefile \ + src/package/Makefile \ +-src/packaging/MacOS/OpenAFS.Info.plist \ +-src/packaging/MacOS/OpenAFS.info \ + src/packaging/RedHat/openafs.spec \ + src/pam/Makefile \ + src/pinstall/Makefile \ diff --git a/src/packaging/Debian/patches/find-core-files b/src/packaging/Debian/patches/find-core-files new file mode 100644 index 000000000..d8c292ef0 --- /dev/null +++ b/src/packaging/Debian/patches/find-core-files @@ -0,0 +1,70 @@ +--- openafs.orig/src/bozo/bnode.c ++++ openafs/src/bozo/bnode.c +@@ -28,6 +28,7 @@ + #include + #endif + #include ++#include + + #ifdef HAVE_STRING_H + #include +@@ -105,13 +106,45 @@ + char tbuffer[256]; + struct stat tstat; + register afs_int32 code; ++ char *corefile = NULL; + #ifdef BOZO_SAVE_CORES + struct timeval Start; + struct tm *TimeFields; + char FileName[256]; + #endif + ++ /* Linux always appends the PID to core dumps from threaded processes, so ++ * we have to scan the directory to find core files under another name. */ + code = stat(AFSDIR_SERVER_CORELOG_FILEPATH, &tstat); ++ if (code) { ++ DIR *logdir; ++ struct dirent *file; ++ char *p; ++ size_t length; ++ unsigned long pid; ++ ++ logdir = opendir(AFSDIR_LOGS_DIR); ++ if (logdir == NULL) ++ return; ++ while ((file = readdir(logdir)) != NULL) { ++ if (strncmp(file->d_name, "core.", 5) != 0) ++ continue; ++ pid = atol(file->d_name + 5); ++ if (pid == aproc->pid) { ++ length = strlen(AFSDIR_LOGS_DIR) + strlen(file->d_name) + 2; ++ corefile = malloc(length); ++ if (corefile == NULL) { ++ closedir(logdir); ++ return; ++ } ++ snprintf(corefile, length, "%s/%s", AFSDIR_LOGS_DIR, ++ file->d_name); ++ code = 0; ++ break; ++ } ++ } ++ closedir(logdir); ++ } + if (code) + return; + +@@ -124,7 +157,12 @@ + TimeFields->tm_hour, TimeFields->tm_min, TimeFields->tm_sec); + strcpy(tbuffer, FileName); + #endif +- code = renamefile(AFSDIR_SERVER_CORELOG_FILEPATH, tbuffer); ++ if (corefile == NULL) ++ code = renamefile(AFSDIR_SERVER_CORELOG_FILEPATH, tbuffer); ++ else { ++ code = renamefile(corefile, tbuffer); ++ free(corefile); ++ } + } + + int diff --git a/src/packaging/Debian/patches/fstrace-paths b/src/packaging/Debian/patches/fstrace-paths new file mode 100644 index 000000000..bdc45baff --- /dev/null +++ b/src/packaging/Debian/patches/fstrace-paths @@ -0,0 +1,27 @@ +fstrace uses the NLS functions to do message translation and needs a +message catalog installed. The default paths are rather broken. Patch +the source to look for it in /usr/share/openafs instead. Not suitable +upstream with the hard-coded paths, but something more sophisticated +would be appropriate. + +--- openafs.orig/src/venus/fstrace.c ++++ openafs/src/venus/fstrace.c +@@ -1471,7 +1471,7 @@ + */ + + #ifndef RPC_NLS_FORMAT +-#define RPC_NLS_FORMAT "%s.cat" ++#define RPC_NLS_FORMAT "/usr/share/openafs/%s.cat" + #endif + + dce1_error_inq_text(status_to_convert, error_text, status) +@@ -1488,7 +1488,8 @@ + char component_name[4]; + char *facility_name; + char filename_prefix[7]; +- char nls_filename[11]; ++ /* strlen("/usr/share/openafs/") + 6 + strlen(".cat") + 1 */ ++ char nls_filename[19 + 6 + 4 + 1]; + char alt_filename[80]; + char *message; + #if defined(AFS_64BITPOINTER_ENV) diff --git a/src/packaging/Debian/patches/ktc-prototypes b/src/packaging/Debian/patches/ktc-prototypes new file mode 100644 index 000000000..5e59a4534 --- /dev/null +++ b/src/packaging/Debian/patches/ktc-prototypes @@ -0,0 +1,24 @@ +Expose prototypes for the ktc_* functions on platforms other than Windows. +Fixed upstream in a different way, but only on the 1.5 branch. + +Debian Bug#449432 + +--- openafs.orig/src/auth/auth.p.h ++++ openafs/src/auth/auth.p.h +@@ -24,7 +24,6 @@ + char ticket[MAXKTCTICKETLEN]; + }; + +-#ifdef AFS_NT40_ENV + extern int ktc_SetToken(struct ktc_principal *server, struct ktc_token *token, + struct ktc_principal *client, afs_int32 flags); + +@@ -38,6 +37,8 @@ + + extern int ktc_ForgetAllTokens(void); + ++#ifdef AFS_NT40_ENV ++ + /* Flags for the flag word sent along with a token */ + #define PIOCTL_LOGON 0x1 /* invoked from integrated logon */ + diff --git a/src/packaging/Debian/patches/linux-2.6.24 b/src/packaging/Debian/patches/linux-2.6.24 new file mode 100644 index 000000000..94af4a03e --- /dev/null +++ b/src/packaging/Debian/patches/linux-2.6.24 @@ -0,0 +1,421 @@ +Add support for Linux 2.6.24. This patch combines the upstream deltas: + +STABLE14-linux-afs-unlinked-file-dentry-flagging-20071031 +STABLE14-linux-nsec-timestamp-zero-20071106 +STABLE14-linux-splice-support-20071106 +STABLE14-linux-2624-20071123 +STABLE14-linux-try-kbuild-deal-with-old-modpost-20071127 +STABLE14-linux24-kernel-configure-test-20071208 + +Debian Bug#456258, Bug#458331 + +--- openafs.orig/acinclude.m4 ++++ openafs/acinclude.m4 +@@ -582,6 +582,9 @@ + ) + + LINUX_KERNEL_COMPILE_WORKS ++ LINUX_KBUILD_USES_EXTRA_CFLAGS ++ LINUX_HAVE_CURRENT_KERNEL_TIME ++ LINUX_KMEM_CACHE_INIT + LINUX_HAVE_KMEM_CACHE_T + LINUX_KMEM_CACHE_CREATE_TAKES_DTOR + LINUX_CONFIG_H_EXISTS +@@ -614,12 +617,14 @@ + LINUX_AOP_WRITEBACK_CONTROL + LINUX_FS_STRUCT_FOP_HAS_FLOCK + LINUX_FS_STRUCT_FOP_HAS_SENDFILE ++ LINUX_FS_STRUCT_FOP_HAS_SPLICE + LINUX_KERNEL_LINUX_SYSCALL_H + LINUX_KERNEL_LINUX_SEQ_FILE_H + LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG + LINUX_KERNEL_SELINUX + LINUX_KERNEL_SOCK_CREATE + LINUX_KERNEL_PAGE_FOLLOW_LINK ++ LINUX_KEY_TYPE_H_EXISTS + LINUX_NEED_RHCONFIG + LINUX_RECALC_SIGPENDING_ARG_TYPE + LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT +@@ -647,6 +652,7 @@ + LINUX_GENERIC_FILE_AIO_READ + LINUX_INIT_WORK_HAS_DATA + LINUX_REGISTER_SYSCTL_TABLE_NOFLAG ++ LINUX_SYSCTL_TABLE_CHECKING + LINUX_EXPORTS_SYS_CHDIR + LINUX_EXPORTS_SYS_CLOSE + LINUX_EXPORTS_SYS_OPEN +@@ -720,6 +726,9 @@ + if test "x$ac_cv_linux_config_h_exists" = "xyes" ; then + AC_DEFINE(CONFIG_H_EXISTS, 1, [define if config.h exists]) + fi ++ if test "x$ac_cv_linux_key_type_h_exists" = "xyes" ; then ++ AC_DEFINE(KEY_TYPE_H_EXISTS, 1, [define if key-type.h exists]) ++ fi + if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then + AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined]) + fi +@@ -861,15 +870,27 @@ + if test "x$ac_cv_linux_fs_struct_fop_has_sendfile" = "xyes" ; then + AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SENDFILE, 1, [define if your struct file_operations has sendfile]) + fi ++ if test "x$ac_cv_linux_fs_struct_fop_has_splice" = "xyes" ; then ++ AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SPLICE, 1, [define if your struct file_operations has splice_write and splice_read]) ++ fi + if test "x$ac_cv_linux_register_sysctl_table_noflag" = "xyes" ; then + AC_DEFINE(REGISTER_SYSCTL_TABLE_NOFLAG, 1, [define if register_sysctl_table has no insert_at head flag]) + fi ++ if test "x$ac_cv_linux_sysctl_table_checking" = "xyes" ; then ++ AC_DEFINE(SYSCTL_TABLE_CHECKING, 1, [define if your kernel has sysctl table checking]) ++ fi + if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then + AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported]) + fi + if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then + AC_DEFINE(HAVE_KMEM_CACHE_T, 1, [define if kmem_cache_t exists]) + fi ++ if test "x$ac_cv_linux_kmem_cache_init" = "xyes" ; then ++ AC_DEFINE(KMEM_CACHE_INIT, 1, [define for new kmem_cache init function parameters]) ++ fi ++ if test "x$ac_cv_linux_have_current_kernel_time" = "xyes" ; then ++ AC_DEFINE(HAVE_CURRENT_KERNEL_TIME, 1, [define if current_kernel_time() exists]) ++ fi + if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then + AC_DEFINE(KMEM_CACHE_TAKES_DTOR, 1, [define if kmem_cache_create takes a destructor argument]) + fi +--- openafs.orig/src/afs/LINUX/osi_machdep.h ++++ openafs/src/afs/LINUX/osi_machdep.h +@@ -76,7 +76,18 @@ + + #define afs_hz HZ + #include "h/sched.h" ++#if defined(HAVE_CURRENT_KERNEL_TIME) ++static inline time_t osi_Time(void) { ++ struct timespec xtime; ++ xtime = current_kernel_time(); ++ return xtime.tv_sec; ++} ++#else + #define osi_Time() (xtime.tv_sec) ++#endif ++ ++ ++ + #ifdef AFS_LINUX_64BIT_KERNEL + #define osi_GetTime(V) \ + do { \ +--- openafs.orig/src/afs/LINUX/osi_sysctl.c ++++ openafs/src/afs/LINUX/osi_sysctl.c +@@ -1,7 +1,7 @@ + /* + * osi_sysctl.c: Linux sysctl interface to OpenAFS + * +- * $Id: linux-2.6.24,v 1.1.2.2 2008/02/20 21:36:31 shadow Exp $ ++ * $Id: linux-2.6.24,v 1.1.2.2 2008/02/20 21:36:31 shadow Exp $ + * + * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates) + */ +@@ -28,7 +28,11 @@ + + static ctl_table afs_sysctl_table[] = { + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 1, ++#endif + .procname = "hm_retry_RO", + .data = &hm_retry_RO, + .maxlen = sizeof(afs_int32), +@@ -36,7 +40,11 @@ + .proc_handler = &proc_dointvec + }, + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 2, ++#endif + .procname = "hm_retry_RW", + .data = &hm_retry_RW, + .maxlen = sizeof(afs_int32), +@@ -44,7 +52,11 @@ + .proc_handler = &proc_dointvec + }, + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 3, ++#endif + .procname = "hm_retry_int", + .data = &hm_retry_int, + .maxlen = sizeof(afs_int32), +@@ -52,7 +64,11 @@ + .proc_handler = &proc_dointvec + }, + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 4, ++#endif + .procname = "GCPAGs", + .data = &afs_gcpags, + .maxlen = sizeof(afs_int32), +@@ -60,7 +76,11 @@ + .proc_handler = &proc_dointvec + }, + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 5, ++#endif + .procname = "rx_deadtime", + .data = &afs_rx_deadtime, + .maxlen = sizeof(afs_int32), +@@ -68,7 +88,11 @@ + .proc_handler = &proc_dointvec + }, + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 6, ++#endif + .procname = "bkVolPref", + .data = &afs_bkvolpref, + .maxlen = sizeof(afs_int32), +@@ -80,7 +104,11 @@ + + static ctl_table fs_sysctl_table[] = { + { ++#if defined(SYSCTL_TABLE_CHECKING) ++ .ctl_name = CTL_UNNUMBERED, ++#else + .ctl_name = 1, ++#endif + .procname = "afs", + .mode = 0555, + .child = afs_sysctl_table +--- openafs.orig/src/afs/LINUX/osi_vfsops.c ++++ openafs/src/afs/LINUX/osi_vfsops.c +@@ -16,7 +16,7 @@ + #include "afs/param.h" + + RCSID +- ("$Header: /cvs/openafs/src/packaging/Debian/patches/linux-2.6.24,v 1.1.2.2 2008/02/20 21:36:31 shadow Exp $"); ++ ("$Header: /cvs/openafs/src/packaging/Debian/patches/linux-2.6.24,v 1.1.2.2 2008/02/20 21:36:31 shadow Exp $"); + + #define __NO_VERSION__ /* don't define kernel_version in module.h */ + #include /* early to avoid printf->printk mapping */ +@@ -295,8 +295,12 @@ + #if defined(HAVE_KMEM_CACHE_T) + init_once(void * foo, kmem_cache_t * cachep, unsigned long flags) + #else ++#if defined(KMEM_CACHE_INIT) ++init_once(struct kmem_cache * cachep, void * foo) ++#else + init_once(void * foo, struct kmem_cache * cachep, unsigned long flags) + #endif ++#endif + { + struct vcache *vcp = (struct vcache *) foo; + +@@ -531,8 +535,11 @@ + ip->i_size = vp->va_size; + #if defined(AFS_LINUX26_ENV) + ip->i_atime.tv_sec = vp->va_atime.tv_sec; ++ ip->i_atime.tv_nsec = 0; + ip->i_mtime.tv_sec = vp->va_mtime.tv_sec; ++ ip->i_mtime.tv_nsec = 0; + ip->i_ctime.tv_sec = vp->va_ctime.tv_sec; ++ ip->i_ctime.tv_nsec = 0; + #else + ip->i_atime = vp->va_atime.tv_sec; + ip->i_mtime = vp->va_mtime.tv_sec; +--- openafs.orig/src/afs/LINUX/osi_vnodeops.c ++++ openafs/src/afs/LINUX/osi_vnodeops.c +@@ -22,7 +22,7 @@ + #include "afs/param.h" + + RCSID +- ("$Header: /cvs/openafs/src/packaging/Debian/patches/linux-2.6.24,v 1.1.2.2 2008/02/20 21:36:31 shadow Exp $"); ++ ("$Header: /cvs/openafs/src/packaging/Debian/patches/linux-2.6.24,v 1.1.2.2 2008/02/20 21:36:31 shadow Exp $"); + + #include "afs/sysincludes.h" + #include "afsincludes.h" +@@ -643,6 +643,10 @@ + #if defined(AFS_LINUX26_ENV) && defined(STRUCT_FILE_OPERATIONS_HAS_SENDFILE) + .sendfile = generic_file_sendfile, + #endif ++#if defined(AFS_LINUX26_ENV) && defined(STRUCT_FILE_OPERATIONS_HAS_SPLICE) ++ .splice_write = generic_file_splice_write, ++ .splice_read = generic_file_splice_read, ++#endif + .release = afs_linux_release, + .fsync = afs_linux_fsync, + .lock = afs_linux_lock, +@@ -878,6 +882,15 @@ + AFS_GLOCK(); + (void) afs_InactiveVCache(vcp, NULL); + AFS_GUNLOCK(); ++#ifdef DCACHE_NFSFS_RENAMED ++#ifdef AFS_LINUX26_ENV ++ spin_lock(&dp->d_lock); ++#endif ++ dp->d_flags &= ~DCACHE_NFSFS_RENAMED; ++#ifdef AFS_LINUX26_ENV ++ spin_unlock(&dp->d_lock); ++#endif ++#endif + + iput(ip); + } +@@ -1095,6 +1108,15 @@ + } + tvc->uncred = credp; + tvc->states |= CUnlinked; ++#ifdef DCACHE_NFSFS_RENAMED ++#ifdef AFS_LINUX26_ENV ++ spin_lock(&dp->d_lock); ++#endif ++ dp->d_flags |= DCACHE_NFSFS_RENAMED; ++#ifdef AFS_LINUX26_ENV ++ spin_unlock(&dp->d_lock); ++#endif ++#endif + } else { + osi_FreeSmallSpace(__name); + } +--- openafs.orig/src/afs/sysincludes.h ++++ openafs/src/afs/sysincludes.h +@@ -75,6 +75,9 @@ + #if defined(LINUX_KEYRING_SUPPORT) + #include + #include ++#if defined(KEY_TYPE_H_EXISTS) ++#include ++#endif + #ifndef KEY_ALLOC_IN_QUOTA + #define KEY_ALLOC_IN_QUOTA 1 + #endif +--- openafs.orig/src/cf/linux-test1.m4 ++++ openafs/src/cf/linux-test1.m4 +@@ -2,9 +2,12 @@ + # [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE]) + # + AC_DEFUN([AC_TRY_KBUILD26],[ rm -fr conftest.dir ++ if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then ++ CFLAGS_PREFIX='EXTRA_' ++ fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +-CFLAGS += $CPPFLAGS ++${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + + obj-m += conftest.o + _ACEOF +@@ -24,8 +27,9 @@ + + MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); + _ACEOF +- echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD +- make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD 2>conftest.err ++ echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD && ++ make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&AS_MESSAGE_LOG_FD 2>conftest.err && ++ ! grep "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then [$3] + else + sed '/^ *+/d' conftest.err >&AS_MESSAGE_LOG_FD +@@ -42,8 +46,10 @@ + # + AC_DEFUN([AC_TRY_KBUILD24], [ + ac_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ $CPPFLAGS" +- AC_TRY_COMPILE([$1], [$2], [$3], [$4]) ++ CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" ++ AC_TRY_COMPILE([ ++#include ++$1], [$2], [$3], [$4]) + CPPFLAGS="$ac_save_CPPFLAGS"]) + + +@@ -65,3 +71,16 @@ + [],:,AC_MSG_RESULT(no) + AC_MSG_FAILURE([Fix problem or use --disable-kernel-module...])) + AC_MSG_RESULT(yes)]) ++ ++AC_DEFUN([LINUX_KBUILD_USES_EXTRA_CFLAGS], [ ++ AC_MSG_CHECKING([if linux kbuild requires EXTRA_CFLAGS]) ++ save_CPPFLAGS="$CPPFLAGS" ++ CPPFLAGS=-Wall ++ AC_TRY_KBUILD( ++[#include ++#include ], ++ [], ++ ac_linux_kbuild_requires_extra_cflags=no, ++ ac_linux_kbuild_requires_extra_cflags=yes) ++ CPPFLAGS="$save_CPPFLAGS" ++ AC_MSG_RESULT($ac_linux_kbuild_requires_extra_cflags)]) +--- openafs.orig/src/cf/linux-test4.m4 ++++ openafs/src/cf/linux-test4.m4 +@@ -894,3 +894,58 @@ + ac_cv_linux_fs_struct_fop_has_sendfile=no)]) + AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_sendfile)]) + ++AC_DEFUN([LINUX_FS_STRUCT_FOP_HAS_SPLICE], [ ++ AC_MSG_CHECKING([for splice_write and splice_read in struct file_operations]) ++ AC_CACHE_VAL([ac_cv_linux_fs_struct_fop_has_splice], [ ++ AC_TRY_KBUILD( ++[#include ], ++[struct file_operations _fop; ++_fop.splice_write(NULL, NULL, NULL, 0, 0); ++_fop.splice_read(NULL, NULL, NULL, 0, 0);], ++ ac_cv_linux_fs_struct_fop_has_splice=yes, ++ ac_cv_linux_fs_struct_fop_has_splice=no)]) ++ AC_MSG_RESULT($ac_cv_linux_fs_struct_fop_has_splice)]) ++ ++AC_DEFUN([LINUX_KEY_TYPE_H_EXISTS], [ ++ AC_MSG_CHECKING([whether linux/key-type.h exists]) ++ AC_CACHE_VAL([ac_cv_linux_key_type_h_exists], [ ++ AC_TRY_KBUILD( ++[#include ], ++[return;], ++ ac_cv_linux_key_type_h_exists=yes, ++ ac_cv_linux_key_type_h_exists=no)]) ++ AC_MSG_RESULT($ac_cv_linux_key_type_h_exists)]) ++ ++AC_DEFUN([LINUX_HAVE_CURRENT_KERNEL_TIME], [ ++ AC_MSG_CHECKING([for current_kernel_time()]) ++ AC_CACHE_VAL([ac_cv_linux_have_current_kernel_time], [ ++ AC_TRY_KBUILD( ++[#include ], ++[struct timespec s = current_kernel_time();], ++ ac_cv_linux_have_current_kernel_time=yes, ++ ac_cv_linux_have_current_kernel_time=no)]) ++ AC_MSG_RESULT($ac_cv_linux_have_current_kernel_time)]) ++ ++AC_DEFUN([LINUX_KMEM_CACHE_INIT], [ ++ AC_MSG_CHECKING([for new kmem_cache init function parameters]) ++ AC_CACHE_VAL([ac_cv_linux_kmem_cache_init], [ ++ AC_TRY_KBUILD( ++[#include ], ++[extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, ++ unsigned long, ++ void (*)(struct kmem_cache *, void *)); ++return;], ++ ac_cv_linux_kmem_cache_init=yes, ++ ac_cv_linux_kmem_cache_init=no)]) ++ AC_MSG_RESULT($ac_cv_linux_kmem_cache_init)]) ++ ++AC_DEFUN([LINUX_SYSCTL_TABLE_CHECKING], [ ++ AC_MSG_CHECKING([for sysctl table checking]) ++ AC_CACHE_VAL([ac_cv_linux_sysctl_table_checking], [ ++ AC_TRY_KBUILD( ++[#include ], ++[ sysctl_check_table(NULL);], ++ ac_cv_linux_sysctl_table_checking=yes, ++ ac_cv_linux_sysctl_table_checking=no)]) ++ AC_MSG_RESULT($ac_cv_linux_sysctl_table_checking)]) ++ diff --git a/src/packaging/Debian/patches/module-name b/src/packaging/Debian/patches/module-name index 148d2d837..8f13bcb96 100644 --- a/src/packaging/Debian/patches/module-name +++ b/src/packaging/Debian/patches/module-name @@ -1,14 +1,31 @@ -Upstream uses libafs as the module name, mostly for historic reasons. It -also uses a different module name depending on whether the module is built -for SMP systems, something that Debian deals with by creating separate -packages. This patch changes the name of the module to openafs and -removes the separate name for the SMP version. +Build the kernel module as openafs.ko instead of libafs.ko. This should +really be done upstream as well, but it poses backwards compatibility +problems and it's always been called libafs on other platforms, so it's +controversial. -Probably not acceptable upstream. - ---- openafs-1.3.87.orig/src/libafs/MakefileProto.LINUX.in -+++ openafs-1.3.87/src/libafs/MakefileProto.LINUX.in -@@ -216,8 +216,8 @@ +--- openafs.orig/src/config/linux-version ++++ openafs/src/config/linux-version +@@ -38,7 +38,7 @@ + CAN_BUILD="" + + for VERS in $LINUX_VERS ; do +- dir=$LINUX_SRCDIR$VERS ++ dir=$LINUX_SRCDIR + if [ ! -d $dir ] ; then + dir=$LINUX_SRCDIR + if [ ! -d $dir ] ; then +@@ -47,7 +47,7 @@ + continue + fi + fi +- header=$LINUX_SRCDIR$VERS/include/linux/version.h ++ header=$LINUX_SRCDIR/include/linux/version.h + if [ ! -f $header ] ; then + header=$LINUX_SRCDIR/include/linux/version.h + if [ ! -f $header ] ; then +--- openafs.orig/src/libafs/MakefileProto.LINUX.in ++++ openafs/src/libafs/MakefileProto.LINUX.in +@@ -222,8 +222,8 @@ # Below this line are targets when in the COMMON directory: # For Linux there is no kernel NFS server. @@ -19,7 +36,7 @@ Probably not acceptable upstream. LIBAFS_EP = libafs-${CLIENT}.ep.${LINUX_MODULE_EXT} LIBAFS_BM = libafs-${CLIENT}.bm.${LINUX_MODULE_EXT} -@@ -226,10 +226,8 @@ +@@ -232,10 +232,8 @@ INST_LIBAFS_EP = ${DESTDIR}${afskerneldir}/${LIBAFS_EP} INST_LIBAFS_BM = ${DESTDIR}${afskerneldir}/${LIBAFS_BM} @@ -32,7 +49,7 @@ Probably not acceptable upstream. libafs: $(LIBAFS) -@@ -245,11 +243,11 @@ +@@ -251,11 +249,11 @@ echo BM Build Complete diff --git a/src/packaging/Debian/patches/multiple-local-realms b/src/packaging/Debian/patches/multiple-local-realms new file mode 100644 index 000000000..c2655613a --- /dev/null +++ b/src/packaging/Debian/patches/multiple-local-realms @@ -0,0 +1,578 @@ +Enable listing multiple realms in the server krb.conf file. Up to four +realms may be treated as local in that fashion for authorization +purposes (instead of the single realm supported without this patch). + +This upstream patch is in the 1.5 series but not in 1.4. However, it +has been working in production at Stanford University for some time. + +--- openafs.orig/src/audit/audit.c ++++ openafs/src/audit/audit.c +@@ -447,12 +447,43 @@ + } + if ((clen = strlen(tcell))) { + #if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) +- static char local_realm[AFS_REALM_SZ] = ""; +- if (!local_realm[0]) { +- if (afs_krb_get_lrealm(local_realm, 0) != 0 /*KSUCCESS*/) +- strncpy(local_realm, "UNKNOWN.LOCAL.REALM", AFS_REALM_SZ); ++ static char local_realms[AFS_NUM_LREALMS][AFS_REALM_SZ]; ++ static int num_lrealms = -1; ++ int i, lrealm_match; ++ ++ if (num_lrealms == -1) { ++ for (i=0; i= sizeof(vname)) + goto done; + strcat(vname, "@"); +--- openafs.orig/src/auth/userok.c ++++ openafs/src/auth/userok.c +@@ -403,7 +403,9 @@ + + afs_uint32 exp; + static char lcell[MAXCELLCHARS] = ""; +- static char lrealm[AFS_REALM_SZ] = ""; ++ static char lrealms[AFS_NUM_LREALMS][AFS_REALM_SZ]; ++ static int num_lrealms = -1; ++ int lrealm_match = 0, i; + + /* get auth details from server connection */ + code = +@@ -440,11 +442,40 @@ + /* if running a krb environment, also get the local realm */ + /* note - this assumes AFS_REALM_SZ <= MAXCELLCHARS */ + /* just set it to lcell if it fails */ +- if (!lrealm[0]) { +- if (afs_krb_get_lrealm(lrealm, 0) != 0) /* KSUCCESS */ +- strncpy(lrealm, lcell, AFS_REALM_SZ); ++ if (num_lrealms == -1) { ++ for (i=0; i"); + flag = 1; + +- /* cell of connection matches local cell or krb4 realm */ +- } else if (!strcasecmp(tcell, lcell) || !strcasecmp(tcell, lrealm)) { ++ /* cell of connection matches local cell or one of the realms */ ++ } else if (!strcasecmp(tcell, lcell) || lrealm_match) { + if ((tmp = CompFindUser(adir, tname, ".", tinst, NULL))) { + strcpy(uname, tmp); + flag = 1; +@@ -467,7 +498,6 @@ + flag = 1; + #endif + } +- + /* cell of conn doesn't match local cell or realm */ + } else { + if ((tmp = CompFindUser(adir, tname, ".", tinst, tcell))) { +--- openafs.orig/src/config/afs_sysnames.h ++++ openafs/src/config/afs_sysnames.h +@@ -286,4 +286,6 @@ + #ifdef AFS_KERBREALM_ENV + #define AFS_REALM_SZ 64 + #endif ++/* Specifies the number of equivalent local realm names */ ++#define AFS_NUM_LREALMS 4 + #endif /* __AFS_SYSNAMES_INCL_ENV_ */ +--- openafs.orig/src/ptserver/ptprocs.c ++++ openafs/src/ptserver/ptprocs.c +@@ -93,6 +93,7 @@ + extern afs_int32 Initdb(); + extern int pr_noAuth; + extern afs_int32 initd; ++extern char *pr_realmName; + afs_int32 iNewEntry(), newEntry(), whereIsIt(), dumpEntry(), addToGroup(), + nameToID(), Delete(), removeFromGroup(); + afs_int32 getCPS(), getCPS2(), getHostCPS(), listMax(), setMax(), listEntry(); +@@ -178,22 +179,9 @@ + if (exp < FT_ApproxTime()) + goto done; + #endif +- if (strlen(tcell)) { +- extern char *pr_realmName; +-#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) +- static char local_realm[AFS_REALM_SZ] = ""; +- if (!local_realm[0]) { +- if (afs_krb_get_lrealm(local_realm, 0) != 0 /*KSUCCESS*/) +- strncpy(local_realm, pr_realmName, AFS_REALM_SZ); +- } +-#endif +- if ( +-#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) +- strcasecmp(local_realm, tcell) && +-#endif +- strcasecmp(pr_realmName, tcell)) +- foreign = 1; +- } ++ if (tcell[0]) ++ foreign = afs_is_foreign_ticket_name(name,inst,tcell,pr_realmName); ++ + strncpy(vname, name, sizeof(vname)); + if (ilen = strlen(inst)) { + if (strlen(vname) + 1 + ilen >= sizeof(vname)) +@@ -640,7 +628,24 @@ + ABORT_WITH(tt, code); + + for (i = 0; i < aname->namelist_len; i++) { +- code = NameToID(tt, aname->namelist_val[i], &aid->idlist_val[i]); ++ char vname[256]; ++ char *nameinst, *cell; ++ ++ strncpy(vname, aname->namelist_val[i], sizeof(vname)); ++ vname[sizeof(vname)-1] ='\0'; ++ ++ nameinst = vname; ++ cell = strchr(vname, '@'); ++ if (cell) { ++ *cell = '\0'; ++ cell++; ++ } ++ ++ if (cell && afs_is_foreign_ticket_name(nameinst,NULL,cell,pr_realmName)) ++ code = NameToID(tt, aname->namelist_val[i], &aid->idlist_val[i]); ++ else ++ code = NameToID(tt, nameinst, &aid->idlist_val[i]); ++ + if (code != PRSUCCESS) + aid->idlist_val[i] = ANONYMOUSID; + osi_audit(PTS_NmToIdEvent, code, AUD_STR, +@@ -2281,7 +2286,6 @@ + } + #endif /* IP_WILDCARDS */ + +- + afs_int32 + WhoIsThisWithName(acall, at, aid, aname) + struct rx_call *acall; +@@ -2309,11 +2313,12 @@ + } else if (code == 2) { /* kad class */ + + int clen; +- extern char *pr_realmName; + + if ((code = rxkad_GetServerInfo(acall->conn, NULL, 0 /*was &exp */ , + name, inst, tcell, NULL))) + goto done; ++ ++ + strncpy(vname, name, sizeof(vname)); + if ((ilen = strlen(inst))) { + if (strlen(vname) + 1 + ilen >= sizeof(vname)) +@@ -2322,19 +2327,9 @@ + strcat(vname, inst); + } + if ((clen = strlen(tcell))) { ++ int foreign = afs_is_foreign_ticket_name(name,inst,tcell,pr_realmName); + +-#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) +- static char local_realm[AFS_REALM_SZ] = ""; +- if (!local_realm[0]) { +- if (afs_krb_get_lrealm(local_realm, 0) != 0 /*KSUCCESS*/) +- strncpy(local_realm, pr_realmName, AFS_REALM_SZ); +- } +-#endif +- if ( +-#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) +- strcasecmp(local_realm, tcell) && +-#endif +- strcasecmp(pr_realmName, tcell)) { ++ if (foreign) { + if (strlen(vname) + 1 + clen >= sizeof(vname)) + goto done; + strcat(vname, "@"); +--- openafs.orig/src/util/afsutil_prototypes.h ++++ openafs/src/util/afsutil_prototypes.h +@@ -74,7 +74,8 @@ + + /* get_krbrlm.c */ + extern int afs_krb_get_lrealm(char *r, int n); +- ++extern int afs_krb_exclusion(char *name); ++extern int afs_is_foreign_ticket_name(char *tname, char *tinst, char * tcell, char *localrealm); + /* hostparse.c */ + extern struct hostent *hostutil_GetHostByName(register char *ahost); + extern char *hostutil_GetNameByINet(afs_uint32 addr); +--- openafs.orig/src/util/dirpath.c ++++ openafs/src/util/dirpath.c +@@ -365,6 +365,8 @@ + pathp = dirPathArray[AFSDIR_SERVER_MIGRATELOG_FILEPATH_ID]; + AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_MIGR_DIR, AFSDIR_MIGRATE_LOGNAME); + ++ pathp = dirPathArray[AFSDIR_SERVER_KRB_EXCL_FILEPATH_ID]; ++ AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_SERVER_ETC_DIR, AFSDIR_KRB_EXCL_FILE); + + /* client file paths */ + #ifdef AFS_NT40_ENV +--- openafs.orig/src/util/dirpath.hin ++++ openafs/src/util/dirpath.hin +@@ -144,6 +144,7 @@ + #define AFSDIR_BOSVR_FILE "bosserver" + #define AFSDIR_VOLSERLOG_FILE "VolserLog" + #define AFSDIR_AUDIT_FILE "Audit" ++#define AFSDIR_KRB_EXCL_FILE "krb.excl" + + #define AFSDIR_ROOTVOL_FILE "RootVolume" + #define AFSDIR_HOSTDUMP_FILE "hosts.dump" +@@ -262,6 +263,7 @@ + AFSDIR_SERVER_MIGRATELOG_FILEPATH_ID, + AFSDIR_SERVER_BIN_FILE_DIRPATH_ID, + AFSDIR_CLIENT_CELLALIAS_FILEPATH_ID, ++ AFSDIR_SERVER_KRB_EXCL_FILEPATH_ID, + AFSDIR_PATHSTRING_MAX } afsdir_id_t; + + /* getDirPath() returns a pointer to a string from an internal array of path strings +@@ -329,6 +331,7 @@ + #define AFSDIR_SERVER_WEIGHTING_CONSTANTS_FILEPATH getDirPath(AFSDIR_SERVER_WEIGHTING_CONSTANTS_FILEPATH_ID) + #define AFSDIR_SERVER_THRESHOLD_CONSTANTS_FILEPATH getDirPath(AFSDIR_SERVER_THRESHOLD_CONSTANTS_FILEPATH_ID) + #define AFSDIR_SERVER_MIGRATELOG_FILEPATH getDirPath(AFSDIR_SERVER_MIGRATELOG_FILEPATH_ID) ++#define AFSDIR_SERVER_KRB_EXCL_FILEPATH getDirPath(AFSDIR_SERVER_KRB_EXCL_FILEPATH_ID) + + /* client file paths */ + #define AFSDIR_CLIENT_THISCELL_FILEPATH getDirPath(AFSDIR_CLIENT_THISCELL_FILEPATH_ID) +--- openafs.orig/src/util/dirpath_nt.h ++++ openafs/src/util/dirpath_nt.h +@@ -135,6 +135,7 @@ + #define AFSDIR_BOSVR_FILE "bosserver" + #define AFSDIR_VOLSERLOG_FILE "VolserLog" + #define AFSDIR_AUDIT_FILE "Audit" ++#define AFSDIR_KRB_EXCL_FILE "krb.excl" + + #define AFSDIR_ROOTVOL_FILE "RootVolume" + #define AFSDIR_HOSTDUMP_FILE "hosts.dump" +@@ -257,6 +258,7 @@ + AFSDIR_SERVER_MIGRATELOG_FILEPATH_ID, + AFSDIR_SERVER_BIN_FILE_DIRPATH_ID, + AFSDIR_CLIENT_CELLALIAS_FILEPATH_ID, ++ AFSDIR_SERVER_KRB_EXCL_FILEPATH_ID, + AFSDIR_PATHSTRING_MAX + } afsdir_id_t; + +@@ -325,6 +327,7 @@ + #define AFSDIR_SERVER_WEIGHTING_CONSTANTS_FILEPATH getDirPath(AFSDIR_SERVER_WEIGHTING_CONSTANTS_FILEPATH_ID) + #define AFSDIR_SERVER_THRESHOLD_CONSTANTS_FILEPATH getDirPath(AFSDIR_SERVER_THRESHOLD_CONSTANTS_FILEPATH_ID) + #define AFSDIR_SERVER_MIGRATELOG_FILEPATH getDirPath(AFSDIR_SERVER_MIGRATELOG_FILEPATH_ID) ++#define AFSDIR_SERVER_KRB_EXCL_FILEPATH getDirPath(AFSDIR_SERVER_KRB_EXCL_FILEPATH_ID) + + /* client file paths */ + #define AFSDIR_CLIENT_THISCELL_FILEPATH getDirPath(AFSDIR_CLIENT_THISCELL_FILEPATH_ID) +--- openafs.orig/src/util/get_krbrlm.c ++++ openafs/src/util/get_krbrlm.c +@@ -26,21 +26,148 @@ + #define KSUCCESS 0 + #define KFAILURE (-1) + ++static char * ++parse_str(char *buffer, char *result, int size) ++{ ++ int n=0; ++ ++ if (!buffer) ++ goto cleanup; ++ ++ while (*buffer && isspace(*buffer)) ++ buffer++; ++ while (*buffer && !isspace(*buffer)) { ++ if (n < size - 1) { ++ *result++=*buffer++; ++ n++; ++ } else { ++ buffer++; ++ } ++ } ++ ++ cleanup: ++ *result='\0'; ++ return buffer; ++} ++ ++ + int + afs_krb_get_lrealm(char *r, int n) + { ++ char linebuf[2048]; ++ char tr[AFS_REALM_SZ] = ""; ++ char *p; + FILE *cnffile/*, *fopen()*/; ++ int i; ++ int rv = KFAILURE; + +- if (n > 1) +- return (KFAILURE); /* Temporary restriction */ ++ *r = '\0'; + + if ((cnffile = fopen(AFSDIR_SERVER_KCONF_FILEPATH, "r")) == NULL) { + return (KFAILURE); + } +- if (fscanf(cnffile, "%s", r) != 1) { +- (void)fclose(cnffile); +- return (KFAILURE); ++ if (fgets(linebuf, sizeof(linebuf)-1, cnffile) == NULL) { ++ goto cleanup; ++ } ++ linebuf[sizeof(linebuf)-1] = '\0'; ++ for (i=0, p=linebuf; i<=n && *p; i++) { ++ p = parse_str(p, tr, AFS_REALM_SZ); ++ } ++ ++ if (*tr) { ++ strcpy(r,tr); ++ rv = KSUCCESS; ++ } ++ ++ cleanup: ++ (void)fclose(cnffile); ++ return rv; ++} ++ ++int ++afs_krb_exclusion(char * name) ++{ ++ char linebuf[2048]; ++ char excl_name[256] = ""; ++ FILE *cnffile/*, *fopen()*/; ++ int exclude = 0; ++ ++ if ((cnffile = fopen(AFSDIR_SERVER_KRB_EXCL_FILEPATH, "r")) == NULL) ++ return exclude; ++ ++ for (;;) { ++ if (fgets(linebuf, sizeof(linebuf)-1, cnffile) == NULL) { ++ goto cleanup; ++ } ++ linebuf[sizeof(linebuf)-1] = '\0'; ++ parse_str(linebuf, excl_name, sizeof(excl_name)); ++ ++ if (!strcmp(name,excl_name)) { ++ exclude = 1; ++ break; ++ } + } ++ ++ cleanup: + (void)fclose(cnffile); +- return (KSUCCESS); ++ return exclude; ++} ++ ++int ++afs_is_foreign_ticket_name(char *tname, char *tinst, char * tcell, char *localrealm) ++{ ++ int foreign = 0; ++ ++ if (localrealm && strcasecmp(localrealm, tcell)) ++ foreign = 1; ++ ++#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV) ++ if (foreign) { ++ static char local_realms[AFS_NUM_LREALMS][AFS_REALM_SZ]; ++ static int num_lrealms = -1; ++ int lrealm_match, i; ++ char uname[256]; ++ ++ if (num_lrealms == -1) { ++ for (i=0; i= PR_MAXNAMELEN) { + ViceLog(2, + ("MapName: Name too long, using AnonymousID for %s@%s\n", +--- openafs.orig/src/viced/viced.c ++++ openafs/src/viced/viced.c +@@ -1077,7 +1077,8 @@ + return -1; + } + } else if (!strcmp(argv[i], "-realm")) { +- extern char local_realm[AFS_REALM_SZ]; ++ extern char local_realms[AFS_NUM_LREALMS][AFS_REALM_SZ]; ++ extern int num_lrealms; + if ((i + 1) >= argc) { + fprintf(stderr, "missing argument for -realm\n"); + return -1; +@@ -1088,7 +1089,15 @@ + AFS_REALM_SZ); + return -1; + } +- strncpy(local_realm, argv[i], AFS_REALM_SZ); ++ if (num_lrealms == -1) ++ num_lrealms = 0; ++ if (num_lrealms >= AFS_NUM_LREALMS) { ++ printf ++ ("a maximum of %d -realm arguments can be specified.\n", ++ AFS_NUM_LREALMS); ++ return -1; ++ } ++ strncpy(local_realms[num_lrealms++], argv[i], AFS_REALM_SZ); + } else if (!strcmp(argv[i], "-udpsize")) { + if ((i + 1) >= argc) { + printf("You have to specify -udpsize \n"); diff --git a/src/packaging/Debian/patches/no-admin-reference b/src/packaging/Debian/patches/no-admin-reference new file mode 100644 index 000000000..5a3df4b3a --- /dev/null +++ b/src/packaging/Debian/patches/no-admin-reference @@ -0,0 +1,13 @@ +The Admin Reference has now been completely replaced by the man pages, so +don't refer to it since we'll no longer bother to install it. + +--- openafs.orig/doc/html/index.htm ++++ openafs/doc/html/index.htm +@@ -24,7 +24,6 @@ +

    Included: +

    +
    AFS Administrator's Guide +-
    AFS Administration Reference +
    AFS Quick Start Guide for UNIX +
    AFS Quick Start Guide for Windows NT/2000 +
    AFS User's Guide diff --git a/src/packaging/Debian/patches/pam b/src/packaging/Debian/patches/pam deleted file mode 100644 index c0f00b005..000000000 --- a/src/packaging/Debian/patches/pam +++ /dev/null @@ -1,158 +0,0 @@ -The standard upstream source builds the PAM modules against static -libraries, which means they contain non-PIC code. This isn't allowed by -Debian Policy and doesn't work on some supported platforms. - -Two approaches for fixing this have been tried. One is to rebuild the -various object files that are part of the libraries PIC and then link with -those object files. The other, which this implements, is to link with the -object files used to create the libafsauthent and libafsrpc shared -libraries (which can't be shipped since they don't have a stable API or -correct SONAME). The latter means that the PAM modules must also be -linked with libpthread, but that's a feature since that means they'll work -with sshd built threaded. - -Not submitted upstream yet. The call to rx_Init should be submitted -upstream and would probably be accepted. Upstream would probably rather -link the PAM modules against the shared libraries rather than accepting -this hack, which is unsuitable for Debian until the shared libraries are -handled more consistently. - ---- openafs-1.3.87.orig/src/pam/Makefile.in -+++ openafs-1.3.87/src/pam/Makefile.in -@@ -25,7 +25,17 @@ - afs_pam_msg.o afs_message.o AFS_component_version_number.o - OBJS = $(SHOBJS) test_pam.o - INCLUDES=-I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} --CFLAGS = ${DEBUG} ${INCLUDES} ${PAM_CFLAGS} -+CFLAGS = ${DEBUG} ${INCLUDES} ${PAM_CFLAGS} ${MT_CFLAGS} -+ -+# For Debian, we link directly with the object files that would have gone -+# into the libafsrpc and libafsauthent shared libraries. The shared libraries -+# themselves cannot be used because the interface isn't stable and they have -+# no SONAME, but this is the easiest way of getting PIC objects built with the -+# pthread API. -+SHLIB_OBJS := `ls ../shlibafsauthent/*.o | grep -v version_num` \ -+ `ls ../shlibafsrpc/*.o | grep -v version_num` -+KRB_SHLIB_OBJS := `ls ../shlibafsauthent/*.o | egrep -v 'version_num|ktc.o'` \ -+ `ls ../shlibafsrpc/*.o | grep -v version_num` - - all: test_pam ${TOP_LIBDIR}/pam_afs.so.1 ${TOP_LIBDIR}/pam_afs.krb.so.1 - -@@ -39,14 +49,18 @@ - ${CC} ${CFLAGS} -c ${srcdir}/afs_auth.c -o afs_auth.o - - afs_auth_krb.o: afs_auth.c afs_pam_msg.h afs_message.h afs_util.h -- ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_auth.c -o afs_auth_krb.o -+ ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_auth.c -o afs_auth_krb.o - - afs_util.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h - ${CC} ${CFLAGS} -c ${srcdir}/afs_util.c -o afs_util.o - -+ - afs_util_krb.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h - ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_util.c -o afs_util_krb.o - -+ktc.o: ${srcdir}/../auth/ktc.c -+ ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/../auth/ktc.c -+ - pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o - set -x; \ - case "$(SYS_NAME)" in \ -@@ -59,8 +73,9 @@ - afs_setcred.o afs_auth.o afs_util.o \ - $(SHOBJS) $(LIBS) ;; \ - *linux*) \ -- $(CC) $(LDFLAGS) -o $@ afs_setcred.o \ -- afs_auth.o afs_util.o $(SHOBJS) $(LIBS) ;;\ -+ $(CC) $(LDFLAGS) $(PAM_CFLAGS) -o $@ afs_setcred.o \ -+ afs_auth.o afs_util.o $(SHOBJS) $(SHLIB_OBJS) \ -+ $(MT_LIBS) -lpam -lresolv;;\ - *fbsd*| *nbsd*) \ - $(CC) $(LDFLAGS) -o $@ afs_setcred.o \ - afs_auth.o afs_util.o $(SHOBJS) $(LIBS) ;;\ -@@ -68,7 +83,7 @@ - echo No link line for system $(SYS_NAME). ;; \ - esac - --pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o -+pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o ktc.o - set -x; \ - case "$(SYS_NAME)" in \ - hp_ux* | ia64_hpux*) \ -@@ -81,7 +96,8 @@ - $(SHOBJS) $(LDFLAGS) $(KLIBS) ;; \ - *linux*) \ - $(CC) $(LDFLAGS) -o $@ afs_setcred_krb.o \ -- afs_auth_krb.o afs_util_krb.o $(SHOBJS) $(KLIBS) ;;\ -+ afs_auth_krb.o afs_util_krb.o ktc.o $(SHOBJS) \ -+ $(KRB_SHLIB_OBJS) $(MT_LIBS) -lpam -lresolv;;\ - *fbsd*| *nbsd*) \ - $(CC) $(LDFLAGS) -o $@ afs_setcred_krb.o \ - afs_auth_krb.o afs_util_krb.o $(SHOBJS) $(KLIBS) ;;\ ---- openafs-1.3.87.orig/src/pam/afs_setcred.c -+++ openafs-1.3.87/src/pam/afs_setcred.c -@@ -52,7 +52,7 @@ - int refresh_token = 0; - int set_expires = 0; /* the default is to not to set the env variable */ - int use_klog = 0; -- int i; -+ int i, code; - struct pam_conv *pam_convp = NULL; - char my_password_buf[256]; - char *cell_ptr = NULL; -@@ -281,6 +281,11 @@ - #endif - } - -+ if ((code = rx_Init(0)) != 0) { -+ pam_afs_syslog(LOG_ERR, PAMAFS_KAERROR, code); -+ RET(PAM_AUTH_ERR); -+ } -+ - if (flags & PAM_REFRESH_CRED) { - if (use_klog) { - auth_ok = !do_klog(user, password, "00:00:01", cell_ptr); ---- openafs-1.3.87.orig/src/pam/afs_auth.c -+++ openafs-1.3.87/src/pam/afs_auth.c -@@ -314,6 +314,10 @@ - if (cpid <= 0) { /* The child process */ - if (logmask && LOG_MASK(LOG_DEBUG)) - syslog(LOG_DEBUG, "in child"); -+ if ((code = rx_Init(0)) != 0) { -+ pam_afs_syslog(LOG_ERR, PAMAFS_KAERROR, code); -+ exit(0); -+ } - if (refresh_token || set_token) - code = ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION, user, /* kerberos name */ - NULL, /* instance */ -@@ -363,6 +367,10 @@ - pam_afs_syslog(LOG_ERR, PAMAFS_PAMERROR, errno); - } - } else { /* dont_fork, used by httpd */ -+ if ((code = rx_Init(0)) != 0) { -+ pam_afs_syslog(LOG_ERR, PAMAFS_KAERROR, code); -+ RET(PAM_AUTH_ERR); -+ } - if (logmask && LOG_MASK(LOG_DEBUG)) - syslog(LOG_DEBUG, "dont_fork"); - if (refresh_token || set_token) ---- openafs-1.3.87.orig/Makefile.in -+++ openafs-1.3.87/Makefile.in -@@ -507,8 +507,6 @@ - # pthread based user space RX library - shlibafsrpc: rx rxkad des - case ${SYS_NAME} in \ -- amd64_linux24) \ -- echo Skipping shlibafsrpc for amd64_linux24 ;; \ - alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*) \ - ${COMPILE_PART1} shlibafsrpc ${COMPILE_PART2} ;; \ - *) \ -@@ -517,8 +515,6 @@ - - shlibafsauthent: ubik auth kauth shlibafsrpc - case ${SYS_NAME} in \ -- amd64_linux24) \ -- echo Skipping shlibafsauthent for amd64_linux24 ;; \ - alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*) \ - ${COMPILE_PART1} shlibafsauthent ${COMPILE_PART2} ;; \ - *) \ diff --git a/src/packaging/Debian/patches/pam-build b/src/packaging/Debian/patches/pam-build new file mode 100644 index 000000000..9000aab04 --- /dev/null +++ b/src/packaging/Debian/patches/pam-build @@ -0,0 +1,88 @@ +Apply an incredibly ugly hack to build the PAM modules against the shared +objects generated for the shared libraries. Not suitable upstream in its +current form. The right upstream solution is to standardize the shared +library ABI and install it with a real SONAME, and then link the PAM +modules against it. + +--- openafs.orig/Makefile.in ++++ openafs/Makefile.in +@@ -515,8 +515,6 @@ + # pthread based user space RX library + shlibafsrpc: rx rxkad des + case ${SYS_NAME} in \ +- amd64_linux24) \ +- echo Skipping shlibafsrpc for amd64_linux24 ;; \ + alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*) \ + ${COMPILE_PART1} shlibafsrpc ${COMPILE_PART2} ;; \ + *) \ +@@ -525,8 +523,6 @@ + + shlibafsauthent: ubik auth kauth shlibafsrpc + case ${SYS_NAME} in \ +- amd64_linux24) \ +- echo Skipping shlibafsauthent for amd64_linux24 ;; \ + alpha_dux*|sgi_*|sun4x_*|sunx86_*|rs_aix*|*linux*|hp_ux11*|ia64_hpux*) \ + ${COMPILE_PART1} shlibafsauthent ${COMPILE_PART2} ;; \ + *) \ +--- openafs.orig/src/pam/Makefile.in ++++ openafs/src/pam/Makefile.in +@@ -25,7 +25,17 @@ + afs_pam_msg.o afs_message.o AFS_component_version_number.o + OBJS = $(SHOBJS) test_pam.o + INCLUDES=-I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} +-CFLAGS = ${DEBUG} ${INCLUDES} ${PAM_CFLAGS} ++CFLAGS = ${DEBUG} ${INCLUDES} ${PAM_CFLAGS} ${MT_CFLAGS} ++ ++# For Debian, we link directly with the object files that would have gone ++# into the libafsrpc and libafsauthent shared libraries. The shared libraries ++# themselves cannot be used because the interface isn't stable and they have ++# no SONAME, but this is the easiest way of getting PIC objects built with the ++# pthread API. ++SHLIB_OBJS := `ls ../shlibafsauthent/*.o | grep -v version_num` \ ++ `ls ../shlibafsrpc/*.o | grep -v version_num` ++KRB_SHLIB_OBJS := `ls ../shlibafsauthent/*.o | egrep -v 'version_num|ktc.o'` \ ++ `ls ../shlibafsrpc/*.o | grep -v version_num` + + all: test_pam ${TOP_LIBDIR}/pam_afs.so.1 ${TOP_LIBDIR}/pam_afs.krb.so.1 + +@@ -47,6 +57,9 @@ + afs_util_krb.o: afs_util.c afs_pam_msg.h afs_message.h afs_util.h + ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/afs_util.c -o afs_util_krb.o + ++ktc.o: ${srcdir}/../auth/ktc.c ++ ${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/../auth/ktc.c ++ + pam_afs.so.1: $(SHOBJS) afs_setcred.o afs_auth.o afs_util.o + set -x; \ + case "$(SYS_NAME)" in \ +@@ -59,8 +72,9 @@ + afs_setcred.o afs_auth.o afs_util.o \ + $(SHOBJS) $(LIBS) ;; \ + *linux*) \ +- $(CC) $(LDFLAGS) -o $@ afs_setcred.o \ +- afs_auth.o afs_util.o $(SHOBJS) $(LIBS) ;;\ ++ $(CC) $(LDFLAGS) $(PAM_CFLAGS) -o $@ afs_setcred.o \ ++ afs_auth.o afs_util.o $(SHOBJS) $(SHLIB_OBJS) \ ++ $(MT_LIBS) -lpam -lresolv;;\ + *fbsd*| *nbsd*) \ + $(CC) $(LDFLAGS) -o $@ afs_setcred.o \ + afs_auth.o afs_util.o $(SHOBJS) $(LIBS) ;;\ +@@ -68,7 +82,7 @@ + echo No link line for system $(SYS_NAME). ;; \ + esac + +-pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o ++pam_afs.krb.so.1: $(SHOBJS) afs_setcred_krb.o afs_auth_krb.o afs_util_krb.o ktc.o + set -x; \ + case "$(SYS_NAME)" in \ + hp_ux* | ia64_hpux*) \ +@@ -81,7 +95,8 @@ + $(SHOBJS) $(LDFLAGS) $(KLIBS) ;; \ + *linux*) \ + $(CC) $(LDFLAGS) -o $@ afs_setcred_krb.o \ +- afs_auth_krb.o afs_util_krb.o $(SHOBJS) $(KLIBS) ;;\ ++ afs_auth_krb.o afs_util_krb.o ktc.o $(SHOBJS) \ ++ $(KRB_SHLIB_OBJS) $(MT_LIBS) -lpam -lresolv;;\ + *fbsd*| *nbsd*) \ + $(CC) $(LDFLAGS) -o $@ afs_setcred_krb.o \ + afs_auth_krb.o afs_util_krb.o $(SHOBJS) $(KLIBS) ;;\ diff --git a/src/packaging/Debian/patches/paths b/src/packaging/Debian/patches/paths new file mode 100644 index 000000000..4d9a27c35 --- /dev/null +++ b/src/packaging/Debian/patches/paths @@ -0,0 +1,16 @@ +Patch pt_util to use the correct Debian patch for the Protection Server +database. Not suitable upstream in its current form, but will be +obsolete if upstream uses the standard functions to figure out the +database path. + +--- openafs.orig/src/ptserver/pt_util.c ++++ openafs/src/ptserver/pt_util.c +@@ -136,7 +136,7 @@ + struct prentry uentry, gentry; + struct ubik_hdr *uh; + char *dfile = 0; +- char *pfile = "/usr/afs/db/prdb.DB0"; ++ char *pfile = "/var/lib/openafs/db/prdb.DB0"; + struct cmd_parmdesc *tparm; + + tparm = a_as->parms; diff --git a/src/packaging/Debian/patches/series b/src/packaging/Debian/patches/series new file mode 100644 index 000000000..24b452d06 --- /dev/null +++ b/src/packaging/Debian/patches/series @@ -0,0 +1,11 @@ +dfsg +paths +fstrace-paths +module-name +pam-build +bos-permissions +compiler-flags +no-admin-reference +find-core-files +ktc-prototypes +multiple-local-realms diff --git a/src/packaging/Debian/patches/ucontext-everywhere b/src/packaging/Debian/patches/ucontext-everywhere new file mode 100644 index 000000000..5e1e53fc4 --- /dev/null +++ b/src/packaging/Debian/patches/ucontext-everywhere @@ -0,0 +1,59 @@ +Build with UCONTEXT everywhere for current glibc. Patch pulled from +upstream stable branch, will be in 1.4.5. + +--- openafs.orig/src/config/param.alpha_linux_26.h ++++ openafs/src/config/param.alpha_linux_26.h +@@ -81,6 +81,11 @@ + #define SYS_NAME_ID SYS_NAME_ID_alpha_linux_26 + + ++#ifdef __GLIBC__ ++#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) ++#define USE_UCONTEXT ++#endif ++#endif + #endif /* AFS_PARAM_H */ + + #else /* !defined(UKERNEL) */ +--- openafs.orig/src/config/param.parisc_linux24.h ++++ openafs/src/config/param.parisc_linux24.h +@@ -70,6 +70,11 @@ + #endif + #endif /* KERNEL */ + ++#ifdef __GLIBC__ ++#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) ++#define USE_UCONTEXT ++#endif ++#endif + #endif /* AFS_PARAM_H */ + + #else /* !defined(UKERNEL) */ +--- openafs.orig/src/config/param.s390_linux26.h ++++ openafs/src/config/param.s390_linux26.h +@@ -86,6 +86,11 @@ + #endif + #endif /* KERNEL */ + ++#ifdef __GLIBC__ ++#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) ++#define USE_UCONTEXT ++#endif ++#endif + #endif /* AFS_PARAM_H */ + + #else /* !defined(UKERNEL) */ +--- openafs.orig/src/config/param.s390x_linux26.h ++++ openafs/src/config/param.s390x_linux26.h +@@ -89,6 +89,11 @@ + #endif + #endif /* KERNEL */ + ++#ifdef __GLIBC__ ++#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) ++#define USE_UCONTEXT ++#endif ++#endif + #endif /* AFS_PARAM_H */ + + #else /* !defined(UKERNEL) */ diff --git a/src/packaging/Debian/po/cs.po b/src/packaging/Debian/po/cs.po index 1901ea7a8..88a481c4a 100644 --- a/src/packaging/Debian/po/cs.po +++ b/src/packaging/Debian/po/cs.po @@ -13,10 +13,10 @@ # msgid "" msgstr "" -"Project-Id-Version: openafs 1.4rc1-1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-08-18 12:47-0700\n" -"PO-Revision-Date: 2005-08-19 08:01+0200\n" +"Project-Id-Version: openafs 1.4.1-3\n" +"Report-Msgid-Bugs-To: hartmans@debian.org\n" +"POT-Creation-Date: 2006-06-07 12:06-0700\n" +"PO-Revision-Date: 2006-06-07 21:47+0200\n" "Last-Translator: Martin Sin \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" @@ -26,8 +26,8 @@ msgstr "" #. Type: string #. Description #: ../openafs-client.templates:3 -msgid "What hosts are DB servers for your home cell?" -msgstr "Které počítače jsou DB servery pro vaÅ¡i domovskou buňku?" +msgid "DB server host names for your home cell:" +msgstr "Jména počítačů s DB serverem vaší domovské buňky:" #. Type: string #. Description @@ -56,8 +56,8 @@ msgstr "" #. Type: string #. Description #: ../openafs-client.templates:16 -msgid "What AFS cell does this workstation belong to?" -msgstr "Ke které buňce AFS bude tento počítač náležet?" +msgid "AFS cell this workstation belongs to:" +msgstr "Buňka AFS, ke které náleží tento počítač:" #. Type: string #. Description @@ -74,8 +74,8 @@ msgstr "" #. Type: string #. Description #: ../openafs-client.templates:24 -msgid "How large is your AFS cache (kB)?" -msgstr "Jak velká je vaÅ¡e cache AFS (v kB)?" +msgid "Size of AFS cache in kB:" +msgstr "Velikost cache AFS v kB:" #. Type: string #. Description @@ -101,17 +101,15 @@ msgstr "Spustit klienta Openafs nyní a při zavádění počítače?" #. Description #: ../openafs-client.templates:34 msgid "" -"Should the Openafs filesystem be started and mounted at boot? Normally, most " -"users who install the openafs-client package expect to run it at boot. " -"However, if you are planning on setting up a new cell or are on a laptop, " -"you may not want it started at boot time. If you choose not to start AFS at " -"boot, run /etc/init.d/openafs-client force-start to start the client when " -"you wish to run it." +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." msgstr "" -"Má být souborový systém Openafs spuÅ¡těn a připojen při startu počítače? " -"VětÅ¡ina uživatelů, kteří instalují balíček openafs-client, očekává, že se " -"AFS spustí hned při startu počítače. Samozřejmě, pokud plánujete nastavení " -"nové buňky, nebo pokud používáte laptop, pak byste zřejmě AFS při startu " +"Běžně větÅ¡ina uživatelů balíčku openafs-client očekává, že bude AFS " +"připojeno automaticky při startu počítače. Samozřejmě, pokud plánujete " +"nastavení nové buňky, nebo používáte laptop, pak byste zřejmě AFS při startu " "spouÅ¡tět nechtěli. Zvolíte-li možnost nespouÅ¡tět AFS při startu počítače, " "můžete klienta spustit ručně příkazem /etc/init.d/openafs-client force-start." @@ -190,7 +188,6 @@ msgstr "" "jeden řádek na alias, který se skládá ze jména buňky, mezery a pak následuje " "alias pro tuto buňku.)" - #. Type: boolean #. Description #: ../openafs-client.templates:79 @@ -218,8 +215,8 @@ msgstr "" #. Type: string #. Description #: ../openafs-fileserver.templates:3 -msgid "What cell does this server serve files for?" -msgstr "Kterým buňkám má tento server poskytovat soubory?" +msgid "Cell this server serves files for:" +msgstr "Buňka, které bude tento server poskytovat soubory:" #. Type: string #. Description @@ -277,3 +274,6 @@ msgstr "" "fungovat; DES kód se ve spojení s vlákny na souborovém serveru chová " "podivně. Souborový server nejpravděpodobněji vůbec nespustí nespustí, ale " "pokud naběhne, může dojít ke ztrátě dat. Byli jste varováni." + +#~ msgid "How large is your AFS cache (kB)?" +#~ msgstr "Jak velká je vaÅ¡e cache AFS (v kB)?" diff --git a/src/packaging/Debian/po/de.po b/src/packaging/Debian/po/de.po index 7e786a702..1f4cb449f 100644 --- a/src/packaging/Debian/po/de.po +++ b/src/packaging/Debian/po/de.po @@ -11,28 +11,27 @@ # # Developers do not need to manually edit POT or PO files. # -#, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-08-18 12:47-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" +"Project-Id-Version: openafs 1.4.2-3\n" +"Report-Msgid-Bugs-To: openafs@bugs.debian.org\n" +"POT-Creation-Date: 2006-11-22 08:17+0100\n" +"PO-Revision-Date: 2006-11-24 22:34+0200\n" +"Last-Translator: Henrik Kroeger \n" +"Language-Team: Debian German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description -#: ../openafs-client.templates:3 -msgid "What hosts are DB servers for your home cell?" -msgstr "" +#: ../openafs-client.templates:1001 +msgid "DB server host names for your home cell:" +msgstr "Rechnername des Datenbank-Servers für Ihre Home-Zelle:" #. Type: string #. Description -#: ../openafs-client.templates:3 +#: ../openafs-client.templates:1001 msgid "" "AFS uses the file /etc/openafs/CellServDB to hold the list of servers that " "should be contacted to find parts of a cell. The cell you claim this " @@ -44,82 +43,112 @@ msgid "" "cell is configured. When you are ready you can edit /etc/openafs/afs.conf." "client to enable the client." msgstr "" +"AFS benutzt die Datei /etc/openafs/CellServDB für eine Liste von Servern, " +"die angesprochen werden sollen, um Teile einer Zelle zu finden. Die Zelle, " +"von der Sie sagen, diese Workstation gehöre zu ihr, ist nicht in dieser " +"Datei. Geben Sie die Hostnamen der Datenbank-Server ein, getrennt durch " +"Leerzeichen. WICHTIG: Falls Sie eine neue Zelle erstellen und dieser " +"Computer der Datenbank-Server der Zelle sein soll, geben Sie nur den " +"Hostnamen dieses Computers ein; fügen Sie andere Server erst später hinzu, " +"sobald diese funktionieren. Außerdem sollten Sie den AFS-Client auf diesem " +"Server nicht beim Rechnerstart starten lassen, bevor diese Zelle konfiguriert ist. " +"Wenn Sie soweit sind, können Sie /etc/openafs/afs.conf.client editieren, um " +"den AFS-Client zu aktivieren." #. Type: string #. Description -#: ../openafs-client.templates:16 -#, fuzzy -msgid "What AFS cell does this workstation belong to?" -msgstr "Für welche Zelle liefert der Server Dateien?" +#: ../openafs-client.templates:2001 +msgid "AFS cell this workstation belongs to:" +msgstr "AFS-Zelle, zu der diese Workstation gehört:" #. Type: string #. Description -#: ../openafs-client.templates:16 +#: ../openafs-client.templates:2001 msgid "" "AFS filespace is organized into cells or administrative domains. Each " "workstation belongs to one cell. Usually the cell is the DNS domain name of " "the site." msgstr "" +"Der AFS-Dateiraum ist in Zellen bzw. administrativen Domains organisiert. " +"Jede " +"Workstation gehört zu einer Zelle. Normalerweise ist eine Zelle gleich dem " +"DNS Domain-Namen." #. Type: string #. Description -#: ../openafs-client.templates:24 -msgid "How large is your AFS cache (kB)?" -msgstr "" +#: ../openafs-client.templates:3001 +msgid "Size of AFS cache in kB:" +msgstr "Größe des AFS-Cache in kB:" #. Type: string #. Description -#: ../openafs-client.templates:24 +#: ../openafs-client.templates:3001 msgid "" "AFS uses an area of the disk to cache remote files for faster access. This " "cache will be mounted on /var/cache/openafs. It is important that the cache " "not overfill the partition it is located on. Often, people find it useful " "to dedicate a partition to their AFS cache." msgstr "" +"AFS benutzt einen Bereich der Festplatte, um Netzwerk-Dateien zum schnelleren " +"Zugriff zwischenzuspeichern. Dieser Cache wird unter /var/cache/openafs " +"eingehängt werden. Es ist wichtig, dass der Cache nicht die Partition " +"überfüllt, auf dem er sich befindet. Viele Leute finden es nützlich, eine " +"extra Partition für ihren AFS-Cache zu haben. " #. Type: boolean #. Description -#: ../openafs-client.templates:34 +#: ../openafs-client.templates:4001 msgid "Run Openafs client now and at boot?" -msgstr "" +msgstr "Soll der Openafs-Client jetzt und beim Booten gestartet werden?" #. Type: boolean #. Description -#: ../openafs-client.templates:34 +#: ../openafs-client.templates:4001 msgid "" -"Should the Openafs filesystem be started and mounted at boot? Normally, most " -"users who install the openafs-client package expect to run it at boot. " -"However, if you are planning on setting up a new cell or are on a laptop, " -"you may not want it started at boot time. If you choose not to start AFS at " -"boot, run /etc/init.d/openafs-client force-start to start the client when " -"you wish to run it." +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." msgstr "" +"Normalerweise erwarten Benutzer, die das Paket openafs-client installieren, " +"dass AFS automatisch beim Boot eingehängt wird. Falls Sie aber eine neue " +"Zelle erstellen wollen, oder einen Laptop benutzen, möchten Sie es " +"vielleicht nicht beim Boot gestartet haben. Wenn Sie sich dafür entscheiden, " +"AFS nicht beim Rechnerstart zu starten, können Sie /etc/init.d/openafs-client force-" +"start ausführen, um den AFS-Client zu starten. " #. Type: boolean #. Description -#: ../openafs-client.templates:45 +#: ../openafs-client.templates:5001 msgid "Look up AFS cells in DNS?" -msgstr "" +msgstr "Sollen AFS-Zellen im DNS nachgeschlagen werden?" #. Type: boolean #. Description -#: ../openafs-client.templates:45 +#: ../openafs-client.templates:5001 msgid "" "In order to contact an AFS cell, you need the IP addresses of the cell's " "database servers. Normally, this information is read from /etc/openafs/" "CellServDB. However, if Openafs cannot find a cell in that file, it can use " "DNS to look for AFSDB records that contain the information." msgstr "" +"Um eine AFS-Zelle zu kontaktieren, brauchen Sie die IP-Adressen der " +"Datenbank-Server der Zellen. Normalerweise werden diese Informationen aus der " +"Datei /etc/openafs/CellServDB gelesen. Falls Openafs aber keine Zelle in " +"dieser Datei finden kann, kann auch DNS benutzt werden, um nach AFSDB-" +"Einträgen zu suchen, die diese Information enthalten." #. Type: boolean #. Description -#: ../openafs-client.templates:55 +#: ../openafs-client.templates:6001 msgid "Encrypt authenticated traffic with AFS fileserver?" msgstr "" +"Soll authentifizierter Verkehr mit AFS-Dateiservern verschlüsselt werden?" #. Type: boolean #. Description -#: ../openafs-client.templates:55 +#: ../openafs-client.templates:6001 msgid "" "AFS provides a weak form of encryption that can optionally be used between a " "client and the fileservers. While this encryption is weaker than DES and " @@ -127,42 +156,58 @@ msgid "" "confidentiality and is likely to make the job of a casual attacker " "significantly more difficult." msgstr "" +"AFS bietet eine schwache Form der Verschlüsselung, die optional zwischen " +"Client und Dateiserver benutzt werden kann. Obwohl diese Verschlüsselung " +"schwächer als DES und daher nicht ausreichend für sehr " +"vertrauliche Daten ist, macht es einem möglichen Angreifer die Arbeit dennoch " +"deutlich schwerer." #. Type: boolean #. Description -#: ../openafs-client.templates:65 +#: ../openafs-client.templates:7001 msgid "Dynamically generate the contents of /afs?" -msgstr "" +msgstr "Soll der Inhalt von /afs dynamisch generiert werden?" #. Type: boolean #. Description -#: ../openafs-client.templates:65 +#: ../openafs-client.templates:7001 msgid "" "/afs generally contains an entry for each cell that a client can talk to. " "Traditionally, these entries were generated by servers in the client's home " "cell. However, OpenAFS clients can generate the contents of /afs " "dynamically based on the contents of /etc/openafs/CellServDB and DNS." msgstr "" +"/afs enthält einen Eintrag für jede Zelle, mit der der Client interagieren " +"kann. Normalerweise werden diese Einträge von Servern in der Home-Zelle des " +"Clients generiert. Trotzdem kann aber der OpenAFS-Client den Inhalt von /afs " +"dynamisch anhand der Informationen von /etc/openafs/CellServDB und DNS " +"erstellen." #. Type: boolean #. Description -#: ../openafs-client.templates:65 +#: ../openafs-client.templates:7001 msgid "" "If you generate /afs dynamically, you may need to create /etc/openafs/" "CellAlias to include aliases for common cells. (The syntax of this file is " "one line per alias, with the cell name, a space, and then the alias for that " "cell.)" msgstr "" +"Wenn Sie /afs dynamisch erstellen lassen, werden Sie vielleicht /etc/openafs/" +"CellAlias erstellen müssen, sodass die Datei Aliase für gebräuchliche " +"Zellen enthält. Die Syntax ist: Eine Zeile pro Aliase, mit Zellenname - Leerzeichen " +"- Alias." #. Type: boolean #. Description -#: ../openafs-client.templates:79 +#: ../openafs-client.templates:8001 msgid "Use fakestat to avoid hangs when listing /afs?" msgstr "" +"Soll fakestat benutzt werden, um eine Verzögerung beim Auflisten von /afs zu " +"vermeiden?" #. Type: boolean #. Description -#: ../openafs-client.templates:79 +#: ../openafs-client.templates:8001 msgid "" "Because AFS is a global file space, operations on the /afs directory can " "generate significant network traffic. If some AFS cells are unavailable " @@ -171,34 +216,40 @@ msgid "" "operations locally to avoid these hangs. You want this option under most " "circumstances." msgstr "" +"Da AFS ein globaler Dateiraum ist, können Operationen im /afs-Verzeichnis " +"zu großen Netzverkehr führen. Wenn einige AFS-Zellen nicht erreichbar " +"sind, kann das Anschauen von /afs (mit ls oder einem Dateibrowser) zu " +"minutenlangem Aufhängen führen. AFS kann aber Antworten zu solchen " +"Operationen simulieren, um ein Aufhängen zu vermeiden. Die meisten Leute " +"wollen das." #. Type: string #. Description -#: ../openafs-fileserver.templates:3 -msgid "What cell does this server serve files for?" -msgstr "Für welche Zelle liefert der Server Dateien?" +#: ../openafs-fileserver.templates:1001 +msgid "Cell this server serves files for:" +msgstr "Zelle, für die dieser Server Dateien ausliefert:" #. Type: string #. Description -#: ../openafs-fileserver.templates:3 +#: ../openafs-fileserver.templates:1001 msgid "" "AFS fileservers belong to a cell. They have the key for that cell's " "Kerberos service and serve volumes into that cell. Normally, this cell is " "the same cell as the workstation's client belongs to." msgstr "" -"AFS-Dateiserver gehören zu einer Zelle. Die Server haben den Schlüssel für " -"den Kerberos-Service der Zelle und stellen Volumes für die Zelle bereit. " -"Normalerweise ist die Zelle identisch mit der des Clients" +"AFS-Dateiserver gehören zu einer Zelle. Die Server haben den Schlüssel für " +"den Kerberos-Service der Zelle und stellen Volumes für die Zelle bereit. " +"Normalerweise ist die Zelle identisch mit der des Clients." #. Type: boolean #. Description -#: ../openafs-fileserver.templates:11 +#: ../openafs-fileserver.templates:2001 msgid "Upgrading will move files to new locations; continue?" -msgstr "" +msgstr "Upgraden wird Dateien an neue Orte verschieben; Fortfahren?" #. Type: boolean #. Description -#: ../openafs-fileserver.templates:11 +#: ../openafs-fileserver.templates:2001 msgid "" "Between Openafs 1.1 and Openafs 1.2, several files moved. In particular, " "files in /etc/openafs/server-local have been distributed to other " @@ -207,19 +258,31 @@ msgid "" "these files will be moved. You should use the bos restart command to reload " "your servers. Any configuration changes made before you do so will be lost." msgstr "" +"Zwischen Openafs 1.1 und Openafs 1.2, wurden einige Dateien verschoben. " +"Besonders Dateien in /etc/openafs/server-local sind betroffen. Die " +"BosConfig-Datei ist nun unter /etc/openafs zu finden und alle anderen Dateien " +"sind unter /var/lib/openafs. Wenn Sie mit dem Upgrade fortfahren, werden " +"diese Dateien verschoben. Sie sollten den bos restart Befehl verwenden, um " +"Ihre Server neuzustarten. Jede Konfigurationsänderung, die Sie davor machen, " +"wird verloren gehen." #. Type: note #. Description -#: ../openafs-fileserver.templates:22 +#: ../openafs-fileserver.templates:3001 msgid "OpenAFS file server probably does not work!" -msgstr "" +msgstr "Der OpenAFS-Dateiserver wird wahrscheinlich nicht funktionieren!" #. Type: note #. Description -#: ../openafs-fileserver.templates:22 +#: ../openafs-fileserver.templates:3001 msgid "" "You are running the OpenAFS file server package on an alpha. This probably " "doesn't work; the DES code is flaky on the alpha, along with the threaded " "file server. Likely, the fileserver will simply fail to start, but if it " "does load, data corruption may result. You have been warned." msgstr "" +"Sie benutzen den OpenAFS-Dateiserver auf einer Alpha-Maschine. Das " +"funktioniert wahrscheinlich nicht; der DES-Code unter Alpha zusammen mit dem " +"Dateiserver im Thread-Modus ist fehlerhaft. Wahrscheinlich wird der " +"Dateiserver einfach nicht starten, aber wenn er gestartet wird, könnte " +"Datenverlust die Folge sein. Sie wurden gewarnt." \ No newline at end of file diff --git a/src/packaging/Debian/po/fr.po b/src/packaging/Debian/po/fr.po index 0e4c7df0c..b10553217 100644 --- a/src/packaging/Debian/po/fr.po +++ b/src/packaging/Debian/po/fr.po @@ -12,23 +12,24 @@ # # Developers do not need to manually edit POT or PO files. # +# Christian Perrier , 2006. msgid "" msgstr "" -"Project-Id-Version: openafs 1.4rc1-1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-08-18 12:47-0700\n" -"PO-Revision-Date: 2005-08-22 15:11+0200\n" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: hartmans@debian.org\n" +"POT-Creation-Date: 2006-06-07 12:06-0700\n" +"PO-Revision-Date: 2006-06-08 06:46+0200\n" "Last-Translator: Christian Perrier \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" +"X-Generator: KBabel 1.11.2\n" #. Type: string #. Description #: ../openafs-client.templates:3 -msgid "What hosts are DB servers for your home cell?" +msgid "DB server host names for your home cell:" msgstr "" "Hôtes serveurs de bases de données pour votre cellule locale (« home " "cell ») :" @@ -62,7 +63,7 @@ msgstr "" #. Type: string #. Description #: ../openafs-client.templates:16 -msgid "What AFS cell does this workstation belong to?" +msgid "AFS cell this workstation belongs to:" msgstr "Cellule AFS dont ce poste de travail fait partie :" #. Type: string @@ -80,8 +81,8 @@ msgstr "" #. Type: string #. Description #: ../openafs-client.templates:24 -msgid "How large is your AFS cache (kB)?" -msgstr "Taille de votre cache pour AFS (en kilo-octets) :" +msgid "Size of AFS cache in kB:" +msgstr "Taille du cache d'AFS (ko) :" #. Type: string #. Description @@ -95,7 +96,7 @@ msgstr "" "AFS utilise une partie du disque pour mettre en cache des fichiers distants " "et accélérer les accès. Ce cache sera monté sur /var/cache/openafs. Il est " "important que le cache ne remplisse pas la partition sur laquelle il est " -"situé. De nombreux utilisateurs choisissent de dédier une partition pour le " +"situé. De nombreux utilisateurs choisissent de dédier une partition au " "cache d'AFS." #. Type: boolean @@ -108,21 +109,18 @@ msgstr "Lancer le client AFS maintenant, puis #. Description #: ../openafs-client.templates:34 msgid "" -"Should the Openafs filesystem be started and mounted at boot? Normally, most " -"users who install the openafs-client package expect to run it at boot. " -"However, if you are planning on setting up a new cell or are on a laptop, " -"you may not want it started at boot time. If you choose not to start AFS at " -"boot, run /etc/init.d/openafs-client force-start to start the client when " -"you wish to run it." +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." msgstr "" -"Veuillez indiquer si le système de fichiers Openafs doit être mis en service " -"et monté au démarrage. Normalement, la majorité des utilisateurs qui " -"installent le paquet openafs-client s'attendent à ce qu'il soit lancé au " -"démarrage. Cependant, si vous prévoyez de mettre en service une nouvelle " -"cellule ou si vous utilisez un ordinateur portable, vous ne souhaitez peut-" -"être pas le lancer au démarrage. Si vous préférez ne pas le lancer au " -"démarrage, utilisez la commande « /etc/init.d/openafs-client force-start » " -"pour le lancer quand vous en aurez besoin." +"La majorité des utilisateurs qui installent le paquet openafs-client " +"s'attendent à ce qu'il soit lancé au démarrage. Cependant, si vous prévoyez " +"de mettre en service une nouvelle cellule ou si vous utilisez un ordinateur " +"portable, vous ne souhaitez peut-être pas le lancer au démarrage. Si vous " +"préférez ne pas le lancer au démarrage, utilisez la commande « /etc/init.d/" +"openafs-client force-start » pour le lancer quand vous en aurez besoin." #. Type: boolean #. Description @@ -141,7 +139,7 @@ msgid "" msgstr "" "Afin de contacter une cellule AFS, vous avez besoin des adresses IP de ses " "serveurs de bases de données. Cette information est normalement extraite de /" -"etc/openafs/CellServDB. Cependant, si Openafs ne peut pas trouver de cellule " +"etc/openafs/CellServDB. Cependant, si OpenAFS ne peut pas trouver de cellule " "dans ce fichier, il peut utiliser le DNS pour rechercher des enregistrements " "AFSDB qui fourniront cette information." @@ -149,7 +147,8 @@ msgstr "" #. Description #: ../openafs-client.templates:55 msgid "Encrypt authenticated traffic with AFS fileserver?" -msgstr "Faut-il chiffrer le trafic authentifié avec le serveur de fichiers AFS ?" +msgstr "" +"Faut-il chiffrer le trafic authentifié avec le serveur de fichiers AFS ?" #. Type: boolean #. Description @@ -198,13 +197,16 @@ msgid "" "cell.)" msgstr "" "Si vous créez /afs de manière dynamique, vous aurez peut-être à créer /etc/" -"openafs/CellAlias pour inclure les alias des cellules communes. Ce fichier comporte une ligne par alias, avec le nom de la cellule, un espace et l'alias utilisé pour la cellule." +"openafs/CellAlias pour inclure les alias des cellules communes. Ce fichier " +"comporte une ligne par alias, avec le nom de la cellule, une espace et " +"l'alias utilisé pour la cellule." #. Type: boolean #. Description #: ../openafs-client.templates:79 msgid "Use fakestat to avoid hangs when listing /afs?" -msgstr "Utiliser fakestat pour éviter les erreurs à l'affichage du contenu de /afs ?" +msgstr "" +"Utiliser fakestat pour éviter les erreurs à l'affichage du contenu de /afs ?" #. Type: boolean #. Description @@ -227,7 +229,7 @@ msgstr "" #. Type: string #. Description #: ../openafs-fileserver.templates:3 -msgid "What cell does this server serve files for?" +msgid "Cell this server serves files for:" msgstr "Cellule pour laquelle ce serveur est un serveur de fichiers :" #. Type: string @@ -247,7 +249,8 @@ msgstr "" #. Description #: ../openafs-fileserver.templates:11 msgid "Upgrading will move files to new locations; continue?" -msgstr "Faut-il procéder au déplacement de fichiers requis pour la mise à jour ?" +msgstr "" +"Faut-il procéder au déplacement de fichiers requis pour la mise à jour ?" #. Type: boolean #. Description @@ -289,4 +292,3 @@ msgstr "" "ces plateformes de même que le serveur de fichiers à processus légers. Il " "est probable que le serveur refusera tout simplement de démarrer. Cependant, " "s'il démarre quand même, des corruptions de données peuvent avoir lieu." - diff --git a/src/packaging/Debian/po/nl.po b/src/packaging/Debian/po/nl.po new file mode 100644 index 000000000..42f37b0eb --- /dev/null +++ b/src/packaging/Debian/po/nl.po @@ -0,0 +1,156 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: openafs\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-01-30 04:32+0100\n" +"PO-Revision-Date: 2007-02-28 02:09+0100\n" +"Last-Translator: Bart Cornelis \n" +"Language-Team: debian-l10n-dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: nl\n" + +#. Type: string +#. Description +#: ../openafs-client.templates:1001 +msgid "DB server host names for your home cell:" +msgstr "Computernamen van de DB-servers voor uw thuiscel:" + +#. Type: string +#. Description +#: ../openafs-client.templates:1001 +msgid "AFS uses the file /etc/openafs/CellServDB to hold the list of servers that should be contacted to find parts of a cell. The cell you claim this workstation belongs to is not in that file. Enter the host names of the database servers separated by spaces. IMPORTANT: If you are creating a new cell and this machine is to be a database server in that cell, only enter this machine's name; add the other servers later after they are functioning. Also, do not enable the AFS client to start at boot on this server until the cell is configured. When you are ready you can edit /etc/openafs/afs.conf.client to enable the client." +msgstr "AFS houdt in het bestand '/etc/openafs/CellServDB een lijst bij van servers die gecontacteerd moeten worden bij het zoeken naar delen van een cel. De cel waartoe dit werkstation volgens wat u aangaf behoort, is niet terug te vinden in dit bestand. Gelieve dus de computernamen van de databaseservers op te geven, gescheiden met spaties. OPGELET: als bezig bent een nieuwe cel op te zetten en deze machine als databaseserver voor deze cel zal fungeren dient u hier enkel de naam van deze machine in te geven; u kunt verdere servers dan later toevoegen eens alles functioneert. Zorg er ook voor dat u het opstarten van de AFS-client tijdens het opstarten van de machine niet activeert voordat de cel geconfigureerd is, zodra u daarmee klaar bent kunt u /etc/openafs/afs.conf.client aanpassen om het automatisch opstarten van de client tijdens de machinestart te activeren." + +#. Type: string +#. Description +#: ../openafs-client.templates:2001 +msgid "AFS cell this workstation belongs to:" +msgstr "Tot welke AFS-cel behoort dit werkstation?" + +#. Type: string +#. Description +#: ../openafs-client.templates:2001 +msgid "AFS filespace is organized into cells or administrative domains. Each workstation belongs to one cell. Usually the cell is the DNS domain name of the site." +msgstr "Een AFS-bestandsruimte is georganiseerd in cellen of administratieve domeinen. Elk werkstation behoort tot 1 cel. Gewoonlijk is deze cel de DNS-domeinnaam van de site." + +#. Type: string +#. Description +#: ../openafs-client.templates:3001 +msgid "Size of AFS cache in kB:" +msgstr "Grootte van de AFS-cache in kB:" + +#. Type: string +#. Description +#: ../openafs-client.templates:3001 +msgid "AFS uses an area of the disk to cache remote files for faster access. This cache will be mounted on /var/cache/openafs. It is important that the cache not overfill the partition it is located on. Often, people find it useful to dedicate a partition to their AFS cache." +msgstr "AFS gebruikt ruimte op de schijf als cache, zodat toegang tot bestanden op andere systemen sneller werkt. Deze cache wordt aangekoppeld in /var/cache/openafs. Het is belangrijk dat de cache niet groter wordt dan de partitie waarop deze zich bevindt. Vaak is het handig om een partititie te hebben met enkel de AFS-cache." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:4001 +msgid "Run Openafs client now and at boot?" +msgstr "Wilt u de Openafs-client nu en tijdens het opstarten draaien?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:4001 +msgid "Normally, most users who install the openafs-client package expect AFS to be mounted automatically at boot. However, if you are planning on setting up a new cell or are on a laptop, you may not want it started at boot time. If you choose not to start AFS at boot, run /etc/init.d/openafs-client force-start to start the client when you wish to run it." +msgstr "Gebruikers die het 'openafs-client'-pakket installeren verwachten meestal dat AFS automatisch aangekoppeld wordt tijdens het opstarten. Als u echter van plan bent een nieuwe cel op te zetten, of als deze machine een laptop is, wilt u wellicht niet dat AFS tijdens het opstarten aangekoppeld wordt. U kunt AFS op elk moment starten met het commando '/etc/init.d/openafs-client force-start." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:5001 +msgid "Look up AFS cells in DNS?" +msgstr "AFS-cellen opzoeken in DNS?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:5001 +msgid "In order to contact an AFS cell, you need the IP addresses of the cell's database servers. Normally, this information is read from /etc/openafs/CellServDB. However, if Openafs cannot find a cell in that file, it can use DNS to look for AFSDB records that contain the information." +msgstr "Om een AFS-cel te contacteren dient u het IP-adres van de databaseserver voor die cel te hebben. Normaal is deze informatie beschikbaar in /etc/openafs/CellServDB. Openafs biedt de mogelijkheid om de AFSDB-records op te zoeken via DNS wanneer dit bestand niet aanwezig is." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:6001 +msgid "Encrypt authenticated traffic with AFS fileserver?" +msgstr "Wilt u dat geauthenticeerd verkeer met de AFS-bestandsserver versleuteld word?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:6001 +msgid "AFS provides a weak form of encryption that can optionally be used between a client and the fileservers. While this encryption is weaker than DES and thus is not sufficient for highly confidential data, it does provide some confidentiality and is likely to make the job of a casual attacker significantly more difficult." +msgstr "AFS biedt een zwakke encryptievorm aan die optioneel kan gebruikt worden bij de communicatie tussen de client en bestandsservers. Hoewel deze encryptie zwakker is dan DES, en dus niet voldoende is voor hoogvertrouwelijke data, biedt het enige betrouwbaarheid daar het de taak van een niet-gerichte aanval significant moeilijker maakt. " + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "Dynamically generate the contents of /afs?" +msgstr "Wilt u de inhoud van /afs dynamisch genereren?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "/afs generally contains an entry for each cell that a client can talk to. Traditionally, these entries were generated by servers in the client's home cell. However, OpenAFS clients can generate the contents of /afs dynamically based on the contents of /etc/openafs/CellServDB and DNS." +msgstr "/afs bevat een ingang voor elke cel waarmee een client kan communiceren. Traditioneel worden deze ingangen aangemaakt door de servers van de thuiscel van de client. OpenAFS-clients zijn echter in staat om de inhoud van /afs dynamisch te genereren, uitgaande van de data in /etc/openafs/CellServDB en DNS." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "If you generate /afs dynamically, you may need to create /etc/openafs/CellAlias to include aliases for common cells. (The syntax of this file is one line per alias, with the cell name, a space, and then the alias for that cell.)" +msgstr "Als u ervoor kiest om /afs dynamisch te genereren kan het noodzakelijk zijn om /etc/openafs/CellAlias aan te maken met daarin de aliases voor veelgebruikte cellen. (de syntax van dit bestand is 1 regel per alias, waarbij elke regel bestaat uit een celnaam gevolgd door een spatie en de alias voor die cel)" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:8001 +msgid "Use fakestat to avoid hangs when listing /afs?" +msgstr "Wilt u fakestat gebruiken om vasthangen tijdens het weergeven van de inhoud van /afs tegen te gaan?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:8001 +msgid "Because AFS is a global file space, operations on the /afs directory can generate significant network traffic. If some AFS cells are unavailable then looking at /afs using ls or a graphical file browser may hang your machine for minutes. AFS has an option to simulate answers to these operations locally to avoid these hangs. You want this option under most circumstances." +msgstr "Omdat AFS een globale bestandsruimte is kunnen operaties op de '/afs'-map flink wat netwerkverkeer veroorzaken. Wanneer sommige AFS-cellen onbeschikbaar zijn kan het weergeven van /afs in een grafische browser uw machine enkele minuten vasthangen. AFS heeft een optie die antwoorden voor deze operaties lokaal simuleert en zo dit vasthangen vermijdt. Onder de meeste omstandigheden kunt u dit best activeren." + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:1001 +msgid "Cell this server serves files for:" +msgstr "Voor welke cellen biedt deze server bestanden aan?" + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:1001 +msgid "AFS fileservers belong to a cell. They have the key for that cell's Kerberos service and serve volumes into that cell. Normally, this cell is the same cell as the workstation's client belongs to." +msgstr "AFS-bestandsservers maken deel uit van een cel. Ze beschikken over de sleutel voor de Kerberos-dienst van die cel, en ondersteunen volumes binnen die cel. Normaal is dit dezelfde cel als waartoe de client op het werkstation behoort." + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:2001 +msgid "Upgrading will move files to new locations; continue?" +msgstr "Opwaarderen verplaatst bestanden naar nieuwe locaties, wilt u doorgaan?" + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:2001 +msgid "Between Openafs 1.1 and Openafs 1.2, several files moved. In particular, files in /etc/openafs/server-local have been distributed to other locations. The BosConfig file is now located in /etc/openafs and the other files are located in /var/lib/openafs. If you continue with this upgrade, these files will be moved. You should use the bos restart command to reload your servers. Any configuration changes made before you do so will be lost." +msgstr "Tijdens de overgang van Openafs 1.1 naar Openafs 1.2 zijn verschillende bestanden verplaatst. Meer precies zijn de bestanden uit /etc/openafs/server-local verplaatst naar andere locaties. Het bestand BosConfig bevindt zich nu in /etc/openafs en de andere bestanden vindt u terug in /var/lib/openafs. Als u doorgaat met deze opwaardering zullen deze bestanden verplaatst worden, u dient dan het bos herstart commando te gebruiken om uw servers te herladen. Als u configuratieaanpassingen doet voor dit gebeurd is gaan deze bij de volgende herstart verloren." + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:3001 +msgid "OpenAFS file server probably does not work!" +msgstr "De OpenAFS bestandsserver werkt waarschijnlijk niet!" + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:3001 +msgid "You are running the OpenAFS file server package on an alpha. This probably doesn't work; the DES code is flaky on the alpha, along with the threaded file server. Likely, the fileserver will simply fail to start, but if it does load, data corruption may result. You have been warned." +msgstr "U draait het OpenAFS bestandsserver pakket op een alpha. Dit werkt waarschijnlijk niet; de DES-code, en de 'threaded' bestandsserver zijn onbetrouwbaar op alpha. In alle waarschijnlijkheid zal de bestandsserver weigeren op te starten, maar als deze toch start is data corruptie waarschijnlijk. U bent gewaarschuwd. " + diff --git a/src/packaging/Debian/po/pt.po b/src/packaging/Debian/po/pt.po new file mode 100644 index 000000000..0b764cdec --- /dev/null +++ b/src/packaging/Debian/po/pt.po @@ -0,0 +1,276 @@ +# Portuguese translation for openafs debconf messages +# Copyright (C) 2007 Miguel Figueiredo +# This file is distributed under the same license as the openafs package. +# Miguel Figueiredo , 2007. +# +msgid "" +msgstr "" +"Project-Id-Version: openafs 1.4.2-5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-01-30 04:32+0100\n" +"PO-Revision-Date: 2007-03-12 22:35+0000\n" +"Last-Translator: Miguel Figueiredo \n" +"Language-Team: Portuguese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: string +#. Description +#: ../openafs-client.templates:1001 +msgid "DB server host names for your home cell:" +msgstr "Nomes de máquinas dos servidores de bases de dados para a sua célula:" + +#. Type: string +#. Description +#: ../openafs-client.templates:1001 +msgid "" +"AFS uses the file /etc/openafs/CellServDB to hold the list of servers that " +"should be contacted to find parts of a cell. The cell you claim this " +"workstation belongs to is not in that file. Enter the host names of the " +"database servers separated by spaces. IMPORTANT: If you are creating a new " +"cell and this machine is to be a database server in that cell, only enter " +"this machine's name; add the other servers later after they are functioning. " +"Also, do not enable the AFS client to start at boot on this server until the " +"cell is configured. When you are ready you can edit /etc/openafs/afs.conf." +"client to enable the client." +msgstr "" +"O AFS utiliza o ficheiro /etc/openafs/CellServDB para guardar a lista de " +"servidores que devem ser contactados para encontrar partes de uma célula. " +"A célula que você diz a que esta estação de trabalho pertence não está nesse " +"ficheiro. Introduza os nomes das máquinas dos servidores de bases de dados " +"separados por espaços. IMPORTANTE: Se está a criar uma nova célula e esta " +"máquina é uma máquina que irá servir a base de dados nessa célula, " +"apenas introduza o nome desta máquina; acrescente depois os outros " +"servidores depois de estes estarem a funcionar. Além disso, não habilite o " +"client AFS para iniciar no arranque neste servidor até que a célula esteja " +"configurada. Quando você estiver pronto pode editar /etc/openafs/afs.conf." +"client para habilitar o cliente." + +#. Type: string +#. Description +#: ../openafs-client.templates:2001 +msgid "AFS cell this workstation belongs to:" +msgstr "Célula AFS a que esta estação de trabalho pertence:" + +#. Type: string +#. Description +#: ../openafs-client.templates:2001 +msgid "" +"AFS filespace is organized into cells or administrative domains. Each " +"workstation belongs to one cell. Usually the cell is the DNS domain name of " +"the site." +msgstr "" +"O espaço de ficheiros do AFS é organizado em células ou domínios " +"administrativos. Cada estação de trabalho pertence a uma célula. Normalmente " +"a célula é o nome de domínio DNS do site." +#. Type: string +#. Description +#: ../openafs-client.templates:3001 +msgid "Size of AFS cache in kB:" +msgstr "Tamanho da cache AFS em kB:" + +#. Type: string +#. Description +#: ../openafs-client.templates:3001 +msgid "" +"AFS uses an area of the disk to cache remote files for faster access. This " +"cache will be mounted on /var/cache/openafs. It is important that the cache " +"not overfill the partition it is located on. Often, people find it useful " +"to dedicate a partition to their AFS cache." +msgstr "" +"O AFS utiliza uma área do disco para fazer cache de ficheiros remotos para um " +"acesso mais rápido. Esta cache irá ser montada em /var/cache/openafs. É " +"importante que a cache não encha a partição em que está localizada. Muitas " +"vezes, algumas pessoas acham útil dedicar uma partição para a sua cache AFS." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:4001 +msgid "Run Openafs client now and at boot?" +msgstr "Correr o cliente Openafs agora e no arranque?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:4001 +msgid "" +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." +msgstr "" +"Normalmente, a maioria dos utilizadores que instalam o pacote openafs-client " +"esperam que o AFS seja montado automaticamente no arranque. No entanto, " +"se você está a planear instalar uma nova célula ou está num portátil pode " +"não querer que seja iniciado no arranque. Se escolher não iniciar o " +"AFS no arranque, corra /etc/init.d/openafs-client force-start para iniciar " +"o cliente quando quiser que este corra." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:5001 +msgid "Look up AFS cells in DNS?" +msgstr "Procurar por células AFS no DNS?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:5001 +msgid "" +"In order to contact an AFS cell, you need the IP addresses of the cell's " +"database servers. Normally, this information is read from /etc/openafs/" +"CellServDB. However, if Openafs cannot find a cell in that file, it can use " +"DNS to look for AFSDB records that contain the information." +msgstr "" +"De modo a contactar uma célula AFS, você precisa dos endereços IP dos " +"servidores de bases de dados das células. Normalmente, esta informação é " +"lida a partir de /etc/openafs/CellServDB. No entanto, se o Openafs não " +"conseguir encontrar a célula nesse ficheiro, pode utilizar o DNS para " +"procurar por registos AFSDB que contenham esta informação." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:6001 +msgid "Encrypt authenticated traffic with AFS fileserver?" +msgstr "Encriptar tráfico autenticado com o servidor de ficheiros AFS?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:6001 +msgid "" +"AFS provides a weak form of encryption that can optionally be used between a " +"client and the fileservers. While this encryption is weaker than DES and " +"thus is not sufficient for highly confidential data, it does provide some " +"confidentiality and is likely to make the job of a casual attacker " +"significantly more difficult." +msgstr "" +"O AFS disponibiliza uma forma fraca de encriptação que pode ser utilizada " +"opcionalmente entre um cliente e os servidores de ficheiros. Enquanto " +"que esta encriptação é mais fraca que a DES e por isso não suficiente para " +"dados altamente confidenciais, esta disponibiliza alguma confidencialidade " +"e é provável que torne o trabalho de um casual atacante significativamente " +"mais difícil." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "Dynamically generate the contents of /afs?" +msgstr "Gerar dinamicamente o conteúdo de /afs?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "" +"/afs generally contains an entry for each cell that a client can talk to. " +"Traditionally, these entries were generated by servers in the client's home " +"cell. However, OpenAFS clients can generate the contents of /afs " +"dynamically based on the contents of /etc/openafs/CellServDB and DNS." +msgstr "" +"O /afs geralmente contém uma entrada para cada célula para a qual cada cliente " +"pode falar. Tradicionalmente, estas entradas foram geradas por servidores " +"na célula do cliente. No entanto, os clientes OpenAFS podem gerar o " +"conteúdo dinamicamente de /afs baseado no conteúdo de " +"/etc/openafs/CellServDB e do DNS." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "" +"If you generate /afs dynamically, you may need to create /etc/openafs/" +"CellAlias to include aliases for common cells. (The syntax of this file is " +"one line per alias, with the cell name, a space, and then the alias for that " +"cell.)" +msgstr "" +"Se gerar dinamicamente /afs, você pode precisar de criar /etc/openafs/" +"CellAlias para incluir 'aliases' para células usuais. (A sintaxe para este " +"ficheiro é uma linha por alias, com o nome da célula, um espaço, e depois o " +"alias para essa célula.)" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:8001 +msgid "Use fakestat to avoid hangs when listing /afs?" +msgstr "Utilizar o fakestat para evitar bloqueios ao listar /afs?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:8001 +msgid "" +"Because AFS is a global file space, operations on the /afs directory can " +"generate significant network traffic. If some AFS cells are unavailable " +"then looking at /afs using ls or a graphical file browser may hang your " +"machine for minutes. AFS has an option to simulate answers to these " +"operations locally to avoid these hangs. You want this option under most " +"circumstances." +msgstr "" +"Devido ao AFS ser um espaço de ficheiros global, as operações no directório " +"/afs podem gerar tráfego de rede significativo. Se algumas células AFS não " +"estiverem disponíveis então olhar para /afs utilizando o ls ou um explorador " +"de ficheiros gráfico pode bloquear a sua máquina por minutos. O AFS tem uma " +"opção para simular localmente respostas a essas operações para evitar esses " +"bloqueios. Você irá querer esta opção na maioria das circunstâncias." + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:1001 +msgid "Cell this server serves files for:" +msgstr "Célula para a qual este servidor serve ficheiros:" + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:1001 +msgid "" +"AFS fileservers belong to a cell. They have the key for that cell's " +"Kerberos service and serve volumes into that cell. Normally, this cell is " +"the same cell as the workstation's client belongs to." +msgstr "" +"Os servidores de ficheiros AFS pertencem a uma célula. Estes têm a chave para o " +"serviço Kerberos dessa célula e volumes a servir nessa célula. Normalmente, " +"esta célula é a mesma célula a que pertence o cliente da estação de trabalho." + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:2001 +msgid "Upgrading will move files to new locations; continue?" +msgstr "Actualizar irá mover ficheiros para novos locais; continuar?" + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:2001 +msgid "" +"Between Openafs 1.1 and Openafs 1.2, several files moved. In particular, " +"files in /etc/openafs/server-local have been distributed to other " +"locations. The BosConfig file is now located in /etc/openafs and the other " +"files are located in /var/lib/openafs. If you continue with this upgrade, " +"these files will be moved. You should use the bos restart command to reload " +"your servers. Any configuration changes made before you do so will be lost." +msgstr "" +"Entre o Openafs 1.1 e o Openafs 1.2, foram movidos vários ficheiros. Em " +"particular, os ficheiros em /etc/openafs/server-local foram distribuídos em " +"outras localizações. O ficheiro BosConfig agora está localizado em /etc/" +"openafs e os outros ficheiros estão localizados em /var/lib/openafs. Se " +"continuar com esta actualização, estes ficheiros irão ser movidos. Você " +"deve utilizar o comando para reiniciar o bos para carregar novamente os seus " +"servidores. Quaisquer alterações de configuração feitas antes de você o " +"fazer serão perdidas." + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:3001 +msgid "OpenAFS file server probably does not work!" +msgstr "O servidor de ficheiros AFS provavelmente não funciona!" + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:3001 +msgid "" +"You are running the OpenAFS file server package on an alpha. This probably " +"doesn't work; the DES code is flaky on the alpha, along with the threaded " +"file server. Likely, the fileserver will simply fail to start, but if it " +"does load, data corruption may result. You have been warned." +msgstr "" +"Você está a correr o pacote do servidor de ficheiros OpenAFS num alpha. " +"Isto provavelmente não funciona; o código DES tem problemas em alpha, além " +"do servidor de ficheiros com 'threads'. Provavelmente, o servidor de ficheiros " +"irá simplesmente falhar o arranque, mas se carregar, pode resultar em " +"corrupção de dados. Você foi avisado." diff --git a/src/packaging/Debian/po/pt_BR.po b/src/packaging/Debian/po/pt_BR.po index a89a2efa1..21f20af69 100644 --- a/src/packaging/Debian/po/pt_BR.po +++ b/src/packaging/Debian/po/pt_BR.po @@ -14,20 +14,20 @@ msgid "" msgstr "" "Project-Id-Version: openafs\n" -"Report-Msgid-Bugs-To: debian-l10n-portuguese@lists.debian.org\n" -"POT-Creation-Date: 2005-08-18 12:47-0700\n" -"PO-Revision-Date: 2005-08-26 18:53-0300\n" -"Last-Translator: André Luís Lopes \n" +"Report-Msgid-Bugs-To: hartmans@debian.org\n" +"POT-Creation-Date: 2006-06-07 12:06-0700\n" +"PO-Revision-Date: 2006-06-10 13:49-0300\n" +"Last-Translator: André Luís Lopes \n" "Language-Team: Debian-BR Project \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Description #: ../openafs-client.templates:3 -msgid "What hosts are DB servers for your home cell?" -msgstr "Quais hosts são servidor DB para sua célula home ?" +msgid "DB server host names for your home cell:" +msgstr "Nomes de host do servidor DB para sua célula home :" #. Type: string #. Description @@ -44,22 +44,22 @@ msgid "" "client to enable the client." msgstr "" "O AFS usa o arquivo /etc/openafs/CellServDB para armazenar a lista de " -"servidores que deverão ser contactados para se encontrar partes de uma " -"célula. A célula que você diz que essa estação de trabalho pertence não está " +"servidores que deverão ser contactados para se encontrar partes de uma " +"célula. A célula que você diz que essa estação de trabalho pertence não está " "nesse arquivo. Informe os nomes de hosts dos servidore de base de dados " -"separados por espaços. IMPORTANTE : Caso você esteja criando uma nova célula " -"e esta máquina será um servidor de base de dados na célula, somente informe " -"o nome desta máquina. Adicione os outros servidores posteriormente depois " -"que os mesmos estejam funcionando. Adicionalmente, não habilite o cliente " -"AFS para inicialização em tempo de inicialização neste servidor até que a " -"célula esteja configurada. Quando você estiver terminado você poderá editar " +"separados por espaços. IMPORTANTE : Caso você esteja criando uma nova célula " +"e esta máquina será um servidor de base de dados na célula, somente informe " +"o nome desta máquina. Adicione os outros servidores posteriormente depois " +"que os mesmos estejam funcionando. Adicionalmente, não habilite o cliente " +"AFS para inicialização em tempo de inicialização neste servidor até que a " +"célula esteja configurada. Quando você estiver terminado você poderá editar " "o arquivo /etc/openafs/afs.conf.client para habilitar este cliente." #. Type: string #. Description #: ../openafs-client.templates:16 -msgid "What AFS cell does this workstation belong to?" -msgstr "A qual célula AFS esta estação de trabalho pertence ?" +msgid "AFS cell this workstation belongs to:" +msgstr "Célula AFS a qual esta estação de trabalho pertence :" #. Type: string #. Description @@ -69,15 +69,15 @@ msgid "" "workstation belongs to one cell. Usually the cell is the DNS domain name of " "the site." msgstr "" -"O espaço de arquivo AFS é organizado em células ou domínios administrativos. " -"Cada estação de trabalho pertence a uma célula. Normalmente a célula é o " -"nome de domínio DNS do site." +"O espaço de arquivo AFS é organizado em células ou domínios administrativos. " +"Cada estação de trabalho pertence a uma célula. Normalmente a célula é o " +"nome de domínio DNS do site." #. Type: string #. Description #: ../openafs-client.templates:24 -msgid "How large is your AFS cache (kB)?" -msgstr "Qual o tamanho de seu cache AFS (KB) ?" +msgid "Size of AFS cache in kB:" +msgstr "Tamanho do cache AFS em kB :" #. Type: string #. Description @@ -88,42 +88,41 @@ msgid "" "not overfill the partition it is located on. Often, people find it useful " "to dedicate a partition to their AFS cache." msgstr "" -"O AFS usa uma àrea do disco para fazer cache de arquivos remotos para acesso " -"mais rápido. Esse cache será montando em /var/cache/openafs. É importante " -"que o cache não ocupe toda a partrição na qual está localizado. Geralmente, " -"os usuários AFS acham útil dedicar uma partição para seus caches AFS." +"O AFS usa uma àrea do disco para fazer cache de arquivos remotos para acesso " +"mais rápido. Esse cache será montando em /var/cache/openafs. É importante " +"que o cache não ocupe toda a partrição na qual está localizado. Geralmente, " +"os usuários AFS acham útil dedicar uma partição para seus caches AFS." #. Type: boolean #. Description #: ../openafs-client.templates:34 msgid "Run Openafs client now and at boot?" -msgstr "Executar o cliente OpenAFS agora e em tempo de inicialização ?" +msgstr "Executar o cliente OpenAFS agora e em tempo de inicialização ?" #. Type: boolean #. Description #: ../openafs-client.templates:34 msgid "" -"Should the Openafs filesystem be started and mounted at boot? Normally, most " -"users who install the openafs-client package expect to run it at boot. " -"However, if you are planning on setting up a new cell or are on a laptop, " -"you may not want it started at boot time. If you choose not to start AFS at " -"boot, run /etc/init.d/openafs-client force-start to start the client when " -"you wish to run it." +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." msgstr "" -"O sistema de arquivos OpenAFS deverá ser iniciado e montando em tempo de " -"inicialização ? Normalmente, a maioria dos usuários que instalam o pacote " -"openafs-client esperam executá-lo em tempo de inicialização. Porém, caso " -"você esteja planejando configurar uma nova célula ou esteja em um laptop, " -"você pode não desejar iniciar o OpenAFS em tempo de inicialização. Caso você " -"opte por não iniciar o AFS em tempo de inicialização, execute " -"/etc/init.d/openafs-cliente force-start para iniciar o cliente quando " -"desejar executá-lo." +"Normalmente, a maioria dos usuários que instalam o pacote " +"openafs-client esperam que o AFS seja montado automaticamente na " +"inicialização. Porém, caso você esteja planejando configurar uma nova " +"célula ou esteja em um laptop, você pode não desejar que o AFS seja " +"iniciado automaticamente no momento da inicialização da máquina. Caso " +"você opte por não iniciar o AFS na inicialização da máquina, execute " +"/etc/init.d/openafs-client force-start para iniciar o cliente quando " +"desejar executá-lo." #. Type: boolean #. Description #: ../openafs-client.templates:45 msgid "Look up AFS cells in DNS?" -msgstr "Procurar células AFS no DNS ?" +msgstr "Procurar células AFS no DNS ?" #. Type: boolean #. Description @@ -134,17 +133,17 @@ msgid "" "CellServDB. However, if Openafs cannot find a cell in that file, it can use " "DNS to look for AFSDB records that contain the information." msgstr "" -"Para poder contactar uma célula AFS, você precisa dos endereços IP dos " -"servidores de base de dados da célula. Normalmente, esta informação é lida " -"de /etc/openafs/CellServDB. Porém, caso o OpenAFS não possa encontrar uma " -"célula nesse arquivo, o DNS poderá ser usado para pesquisar registros AFSDB " -"que contenham a informação." +"Para poder contactar uma célula AFS, você precisa dos endereços IP dos " +"servidores de base de dados da célula. Normalmente, esta informação é lida " +"de /etc/openafs/CellServDB. Porém, caso o OpenAFS não possa encontrar uma " +"célula nesse arquivo, o DNS poderá ser usado para pesquisar registros AFSDB " +"que contenham a informação." #. Type: boolean #. Description #: ../openafs-client.templates:55 msgid "Encrypt authenticated traffic with AFS fileserver?" -msgstr "Encriptar o tráfego autenticado com o servidor de arquivos AFS ?" +msgstr "Encriptar o tráfego autenticado com o servidor de arquivos AFS ?" #. Type: boolean #. Description @@ -156,17 +155,17 @@ msgid "" "confidentiality and is likely to make the job of a casual attacker " "significantly more difficult." msgstr "" -"O AFS fornece uma forma fraca de encriptação que pode ser opcionalmente " -"usada entre o cliente e os servidor de arquivos. Enquanto esta encriptação é " -"mais fraca do que DES e portanto não é suficiente para dados altamente " -"confidenciais, essa encriptação fornece alguma confidencialidade e " -"provavelmente torna o trabalho de um atacante casual mais difícil." +"O AFS fornece uma forma fraca de encriptação que pode ser opcionalmente " +"usada entre o cliente e os servidor de arquivos. Enquanto esta encriptação é " +"mais fraca do que DES e portanto não é suficiente para dados altamente " +"confidenciais, essa encriptação fornece alguma confidencialidade e " +"provavelmente torna o trabalho de um atacante casual mais difícil." #. Type: boolean #. Description #: ../openafs-client.templates:65 msgid "Dynamically generate the contents of /afs?" -msgstr "Gerar dinamicamente o conteúdo de /afs ?" +msgstr "Gerar dinamicamente o conteúdo de /afs ?" #. Type: boolean #. Description @@ -177,10 +176,10 @@ msgid "" "cell. However, OpenAFS clients can generate the contents of /afs " "dynamically based on the contents of /etc/openafs/CellServDB and DNS." msgstr "" -"O /afs geralmente contém uma entrada para cada célula com a qual o cliente " +"O /afs geralmente contém uma entrada para cada célula com a qual o cliente " "pode conversar. Tradicionalmente, essas entradas eram geradas por servidores " -"no célula home do cliente. Porém, clientes OpenAFS podem gerar o conteúdo " -"de /afs dinamicamente baseando-se no conteúdo de /etc/openafs/CellServDB e " +"no célula home do cliente. Porém, clientes OpenAFS podem gerar o conteúdo " +"de /afs dinamicamente baseando-se no conteúdo de /etc/openafs/CellServDB e " "do DNS." #. Type: boolean @@ -192,10 +191,10 @@ msgid "" "one line per alias, with the cell name, a space, and then the alias for that " "cell.)" msgstr "" -"Caso você gere o /afs dinamicamente, você pode precisar criar o /etc/openafs/" -"CellAlias para incluir apelidos (aliases) para células comuns. (A " -"sintaxe desse arquivo é uma linha por apelido, com o nome da célula, " -"um espaço e depois o apelido para a célula.)" +"Caso você gere o /afs dinamicamente, você pode precisar criar o /etc/openafs/" +"CellAlias para incluir apelidos (aliases) para células comuns. (A sintaxe " +"desse arquivo é uma linha por apelido, com o nome da célula, um espaço e " +"depois o apelido para a célula.)" #. Type: boolean #. Description @@ -214,19 +213,19 @@ msgid "" "operations locally to avoid these hangs. You want this option under most " "circumstances." msgstr "" -"Devido ao AFS ser um espaço de arquivos global, operações no diretório /afs " -"podem gerar um tráfego de rede significativo. Caso algumas células AFS não " -"estejam disponíveis, pesquisar o /afs usando o comando \"ls\" ou um " -"gerenciador de arquivos gráfico pode travar sua máquina por alguns minutos. " -"O AFS possui uma opção para simular respostas para essas operações " -"localmente para evitar essas travadas. Você irá desejar usar esta opção na " +"Devido ao AFS ser um espaço de arquivos global, operações no diretório /afs " +"podem gerar um tráfego de rede significativo. Caso algumas células AFS não " +"estejam disponíveis, pesquisar o /afs usando o comando \"ls\" ou um " +"gerenciador de arquivos gráfico pode travar sua máquina por alguns minutos. " +"O AFS possui uma opção para simular respostas para essas operações " +"localmente para evitar essas travadas. Você irá desejar usar esta opção na " "maioria dos casos." #. Type: string #. Description #: ../openafs-fileserver.templates:3 -msgid "What cell does this server serve files for?" -msgstr "Para qual célula este servidor serve arquivos ?" +msgid "Cell this server serves files for:" +msgstr "Célula para a qual este servidor serve arquivos :" #. Type: string #. Description @@ -236,16 +235,16 @@ msgid "" "Kerberos service and serve volumes into that cell. Normally, this cell is " "the same cell as the workstation's client belongs to." msgstr "" -"Servidor de arquivos AFS pertencem a uma célula. Eles possuem uma chave para " -"cada serviço Kerberos da célula e servem volumes dentro da célula. " -"Normalmente, essa célula é a mesma célula da qual a estação de trabalho faz " +"Servidor de arquivos AFS pertencem a uma célula. Eles possuem uma chave para " +"cada serviço Kerberos da célula e servem volumes dentro da célula. " +"Normalmente, essa célula é a mesma célula da qual a estação de trabalho faz " "parte." #. Type: boolean #. Description #: ../openafs-fileserver.templates:11 msgid "Upgrading will move files to new locations; continue?" -msgstr "Atualizar irá mover arquivo para novos locais. Continuar ?" +msgstr "Atualizar irá mover arquivo para novos locais. Continuar ?" #. Type: boolean #. Description @@ -258,20 +257,20 @@ msgid "" "these files will be moved. You should use the bos restart command to reload " "your servers. Any configuration changes made before you do so will be lost." msgstr "" -"Entre as versões do OpenAFS 1.1 e do OpenAFS 1.2, diversos arquivos foram " +"Entre as versões do OpenAFS 1.1 e do OpenAFS 1.2, diversos arquivos foram " "movidos. Em particular, aruivos em /etc/openafs/server-local foram " -"distribuídos para outros locais. O arquivo BosConfig está agora localizado " -"em /etc/openafs e os outros arquivos estão localizados em /var/lib/openafs. " -"Caso você continue com esta atualização, esses arquivos serão movidos. Você " -"deverá usar o comando \"bos restart\" para recarregar seus servidores. " -"Quaisquer mudanças em configurações feitas antes que você tenha feito isso " -"serão perdidas." +"distribuídos para outros locais. O arquivo BosConfig está agora localizado " +"em /etc/openafs e os outros arquivos estão localizados em /var/lib/openafs. " +"Caso você continue com esta atualização, esses arquivos serão movidos. Você " +"deverá usar o comando \"bos restart\" para recarregar seus servidores. " +"Quaisquer mudanças em configurações feitas antes que você tenha feito isso " +"serão perdidas." #. Type: note #. Description #: ../openafs-fileserver.templates:22 msgid "OpenAFS file server probably does not work!" -msgstr "Servidor de Arquivos OpenAFS provavelmente não funciona !" +msgstr "Servidor de Arquivos OpenAFS provavelmente não funciona !" #. Type: note #. Description @@ -282,12 +281,15 @@ msgid "" "file server. Likely, the fileserver will simply fail to start, but if it " "does load, data corruption may result. You have been warned." msgstr "" -"Você está executando o pacote do servidor de arquivos OpenAFS em uma máquina " -"Alpha. Isso provavelmente não funcionará. O código DES é em conjunto com o " -"servidor de arquivos com suporte a threads é problemático em máquinas Alpha. " -"Provavelmente, o servidor de arquivos irá simplesmente falhar ao iniciar. " -"Caso consiga ser iniciado, poderá causar corrupção de dados. Você foi " +"Você está executando o pacote do servidor de arquivos OpenAFS em uma máquina " +"Alpha. Isso provavelmente não funcionará. O código DES é em conjunto com o " +"servidor de arquivos com suporte a threads é problemático em máquinas Alpha. " +"Provavelmente, o servidor de arquivos irá simplesmente falhar ao iniciar. " +"Caso consiga ser iniciado, poderá causar corrupção de dados. Você foi " "avisado." +#~ msgid "How large is your AFS cache (kB)?" +#~ msgstr "Qual o tamanho de seu cache AFS (KB) ?" + #~ msgid "50000" #~ msgstr "50000" diff --git a/src/packaging/Debian/po/templates.pot b/src/packaging/Debian/po/templates.pot new file mode 100644 index 000000000..2ca8c16bd --- /dev/null +++ b/src/packaging/Debian/po/templates.pot @@ -0,0 +1,212 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: hartmans@debian.org\n" +"POT-Creation-Date: 2006-06-07 12:06-0700\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: string +#. Description +#: ../openafs-client.templates:3 +msgid "DB server host names for your home cell:" +msgstr "" + +#. Type: string +#. Description +#: ../openafs-client.templates:3 +msgid "" +"AFS uses the file /etc/openafs/CellServDB to hold the list of servers that " +"should be contacted to find parts of a cell. The cell you claim this " +"workstation belongs to is not in that file. Enter the host names of the " +"database servers separated by spaces. IMPORTANT: If you are creating a new " +"cell and this machine is to be a database server in that cell, only enter " +"this machine's name; add the other servers later after they are functioning. " +"Also, do not enable the AFS client to start at boot on this server until the " +"cell is configured. When you are ready you can edit /etc/openafs/afs.conf." +"client to enable the client." +msgstr "" + +#. Type: string +#. Description +#: ../openafs-client.templates:16 +msgid "AFS cell this workstation belongs to:" +msgstr "" + +#. Type: string +#. Description +#: ../openafs-client.templates:16 +msgid "" +"AFS filespace is organized into cells or administrative domains. Each " +"workstation belongs to one cell. Usually the cell is the DNS domain name of " +"the site." +msgstr "" + +#. Type: string +#. Description +#: ../openafs-client.templates:24 +msgid "Size of AFS cache in kB:" +msgstr "" + +#. Type: string +#. Description +#: ../openafs-client.templates:24 +msgid "" +"AFS uses an area of the disk to cache remote files for faster access. This " +"cache will be mounted on /var/cache/openafs. It is important that the cache " +"not overfill the partition it is located on. Often, people find it useful " +"to dedicate a partition to their AFS cache." +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:34 +msgid "Run Openafs client now and at boot?" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:34 +msgid "" +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:45 +msgid "Look up AFS cells in DNS?" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:45 +msgid "" +"In order to contact an AFS cell, you need the IP addresses of the cell's " +"database servers. Normally, this information is read from /etc/openafs/" +"CellServDB. However, if Openafs cannot find a cell in that file, it can use " +"DNS to look for AFSDB records that contain the information." +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:55 +msgid "Encrypt authenticated traffic with AFS fileserver?" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:55 +msgid "" +"AFS provides a weak form of encryption that can optionally be used between a " +"client and the fileservers. While this encryption is weaker than DES and " +"thus is not sufficient for highly confidential data, it does provide some " +"confidentiality and is likely to make the job of a casual attacker " +"significantly more difficult." +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:65 +msgid "Dynamically generate the contents of /afs?" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:65 +msgid "" +"/afs generally contains an entry for each cell that a client can talk to. " +"Traditionally, these entries were generated by servers in the client's home " +"cell. However, OpenAFS clients can generate the contents of /afs " +"dynamically based on the contents of /etc/openafs/CellServDB and DNS." +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:65 +msgid "" +"If you generate /afs dynamically, you may need to create /etc/openafs/" +"CellAlias to include aliases for common cells. (The syntax of this file is " +"one line per alias, with the cell name, a space, and then the alias for that " +"cell.)" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:79 +msgid "Use fakestat to avoid hangs when listing /afs?" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:79 +msgid "" +"Because AFS is a global file space, operations on the /afs directory can " +"generate significant network traffic. If some AFS cells are unavailable " +"then looking at /afs using ls or a graphical file browser may hang your " +"machine for minutes. AFS has an option to simulate answers to these " +"operations locally to avoid these hangs. You want this option under most " +"circumstances." +msgstr "" + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:3 +msgid "Cell this server serves files for:" +msgstr "" + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:3 +msgid "" +"AFS fileservers belong to a cell. They have the key for that cell's " +"Kerberos service and serve volumes into that cell. Normally, this cell is " +"the same cell as the workstation's client belongs to." +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:11 +msgid "Upgrading will move files to new locations; continue?" +msgstr "" + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:11 +msgid "" +"Between Openafs 1.1 and Openafs 1.2, several files moved. In particular, " +"files in /etc/openafs/server-local have been distributed to other " +"locations. The BosConfig file is now located in /etc/openafs and the other " +"files are located in /var/lib/openafs. If you continue with this upgrade, " +"these files will be moved. You should use the bos restart command to reload " +"your servers. Any configuration changes made before you do so will be lost." +msgstr "" + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:22 +msgid "OpenAFS file server probably does not work!" +msgstr "" + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:22 +msgid "" +"You are running the OpenAFS file server package on an alpha. This probably " +"doesn't work; the DES code is flaky on the alpha, along with the threaded " +"file server. Likely, the fileserver will simply fail to start, but if it " +"does load, data corruption may result. You have been warned." +msgstr "" diff --git a/src/packaging/Debian/po/vi.po b/src/packaging/Debian/po/vi.po index 1f9220845..8bc29728a 100644 --- a/src/packaging/Debian/po/vi.po +++ b/src/packaging/Debian/po/vi.po @@ -1,29 +1,29 @@ -# Vietnamese translation for openafs. -# Copyright © 2005 Free Software Foundation, Inc. -# Clytie Siddall , 2005. +# Vietnamese translation for ApenAFS. +# Copyright © 2006 Free Software Foundation, Inc. +# Clytie Siddall , 2005-2006. # msgid "" -msgstr "" -"Project-Id-Version: openafs 1.4rc1-1\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-08-18 12:47-0700\n" -"PO-Revision-Date: 2005-08-19 16:26+0930\n" +"" +msgstr "Project-Id-Version: openafs 1.4.1-3\n" +"Report-Msgid-Bugs-To: hartmans@debian.org\n" +"POT-Creation-Date: 2006-06-07 12:06-0700\n" +"PO-Revision-Date: 2006-06-18 16:05+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0\n" -"X-Generator: LocFactoryEditor 1.2.2\n" +"X-Generator: LocFactoryEditor 1.6a7\n" -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-client.templates:3 -msgid "What hosts are DB servers for your home cell?" -msgstr "Máy nào chạy trình phục vụ cÆ¡ sở dữ liệu cho ô chính bạn?" +msgid "DB server host names for your home cell:" +msgstr "Các tên máy chạy trình phục vụ cÆ¡ sở dữ liệu cho ô chính cá»§a bạn:" -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-client.templates:3 msgid "" "AFS uses the file /etc/openafs/CellServDB to hold the list of servers that " @@ -35,9 +35,8 @@ msgid "" "Also, do not enable the AFS client to start at boot on this server until the " "cell is configured. When you are ready you can edit /etc/openafs/afs.conf." "client to enable the client." -msgstr "" -"AFS dùng tập tin « /etc/openafs/CellServDB » để chứa danh sách các máy phục vụ " -"nên được liên hệ để tìm phần ô. Bạn đã tuyên bố máy trạm này thuộc một ô " +msgstr "AFS dùng tập tin « /etc/openafs/CellServDB » để chứa danh sách các máy phục " +"vụ nên được liên hệ để tìm phần ô. Bạn đã tuyên bố máy trạm này thuộc một ô " "không phải trong tập tin ấy. Hãy nhập tên máy cá»§a những máy phục vụ cÆ¡ sở dữ " "liệu, định giới bằng dấu cách. QUAN TRỌNG: nếu bạn đang tạo một ô mới, và " "máy này sẽ là một máy phục vụ cÆ¡ sở dữ liệu trong ô ấy, thì bạn hãy nhập chỉ " @@ -46,99 +45,86 @@ msgstr "" "máy, chỉ sau khi cấu hình ô ấy. Khi bạn sẵn sàng thì có thể hiệu chỉnh tập " "tin « /etc/openafs/afs.conf.client » để hiệu lá»±c trình khách ấy." -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-client.templates:16 -msgid "What AFS cell does this workstation belong to?" -msgstr "Máy trạm này thuộc ô AFS nào?" +msgid "AFS cell this workstation belongs to:" +msgstr "Ô AFS chứa máy trăm này:" -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-client.templates:16 msgid "" "AFS filespace is organized into cells or administrative domains. Each " "workstation belongs to one cell. Usually the cell is the DNS domain name of " "the site." -msgstr "" -"Khoảng cách tập tin loại AFS được tổ chức ra nhiều ô hay miền quản lý. Mỗi " +msgstr "Khoảng cách tập tin loại AFS được tổ chức ra nhiều ô hay miền quản lý. Mỗi " "máy trạm thuộc một ô riêng lẻ. Thường ô ấy là tên miền DNS cá»§a nÆ¡i Mạng ấy." -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-client.templates:24 -msgid "How large is your AFS cache (kB)?" -msgstr "Bạn có bộ nhớ tạm AFS lớn bao nhiêu (theo kB)?" +msgid "Size of AFS cache in kB:" +msgstr "Kích cỡ cá»§a bộ nhớ tạm AFS theo kB:" -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-client.templates:24 msgid "" "AFS uses an area of the disk to cache remote files for faster access. This " "cache will be mounted on /var/cache/openafs. It is important that the cache " "not overfill the partition it is located on. Often, people find it useful " "to dedicate a partition to their AFS cache." -msgstr "" -"AFS dùng một vùng trên đĩa để lưu tạm tập tin từ xa, mà cho phép truy cập " +msgstr "AFS dùng một vùng trên đĩa để lưu tạm tập tin từ xa, mà cho phép truy cập " "nhanh hÆ¡n. Bộ nhớ tạm này sẽ được gắn vào « /var/cache/openafs ». Quan trọng " "là bộ nhớ tạm ấy không vượt quá phân vùng ở. Thường có ích khi dùng một phân " "vùng chỉ cho bộ nhớ tạm AFS thôi." -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:34 msgid "Run Openafs client now and at boot?" msgstr "Chạy trình khách Openafs ngay bây giờ và cÅ©ng khi khởi động máy không?" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:34 msgid "" -"Should the Openafs filesystem be started and mounted at boot? Normally, most " -"users who install the openafs-client package expect to run it at boot. " -"However, if you are planning on setting up a new cell or are on a laptop, " -"you may not want it started at boot time. If you choose not to start AFS at " -"boot, run /etc/init.d/openafs-client force-start to start the client when " -"you wish to run it." -msgstr "" -"Có nên khởi chạy và gắn hệ thống tập tin Openafs khi khởi động máy không? " -"Bình thường, phần lớn người dùng cài đặt gói « openafs-client » thì định " -"chạy nó khi khởi động máy. Tuy nhiên, nếu bạn định thiết lập một ô mới, hoặc " -"có dùng một máy tính xách tay, trong trường hợp ấy có lẽ bạn không muốn hệ " -"thống tập tin ấy khởi chạy khi khởi động máy. Nếu bạn chọn không khởi chạy " -"AFS khi khởi động máy thì hãy chạy lệnh « /etc/init.d/openafs-client force-" -"start » (buộc khởi chạy trình khách AFS) để khởi chạy trình khách khi mà bạn " -"muốn chạy nó." +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." +msgstr "Bình thường, phần lớn người dùng cài đặt gói ứng dụng khách « openafs-client » ngờ AFS được gắn kết tá»± động khi khởi động. Tuy nhiên, nếu bạn định thiết lập một ô mới, hoặc sá»­ dụng máy tính xách tay, bạn có thể không muốn nó được khởi chạy vào lúc khởi động. Nếu bạn chọn không khởi chạy AFS vào lúc khởi động, hãy chạy lệnh ép buộc khởi chạy « /etc/init.d/openafs-client force-start » để khởi chạy ứng dụng khách khi bạn muốn khởi chạy nó." -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:45 msgid "Look up AFS cells in DNS?" msgstr "Tra cứu ô AFS trong DNS không?" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:45 msgid "" "In order to contact an AFS cell, you need the IP addresses of the cell's " "database servers. Normally, this information is read from /etc/openafs/" "CellServDB. However, if Openafs cannot find a cell in that file, it can use " "DNS to look for AFSDB records that contain the information." -msgstr "" -"Để liên hệ một ô AFS, bạn cần có địa chỉ IP cá»§a mọi máy phục vụ cÆ¡ sở dữ " +msgstr "Để liên hệ một ô AFS, bạn cần có địa chỉ IP cá»§a mọi máy phục vụ cÆ¡ sở dữ " "liệu cá»§a nó. Bình thường, thông tin này được đọc từ tập tin « /etc/openafs/" "CellServDB ». Tuy nhiên, nếu trình Openafs không tìm thấy một ô nào đó trong " "tập tin ấy thì nó có thể dùng DNS (hệ thống tên miền) để tìm mục ghi AFSDB " "chứa thông tin ấy." -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:55 msgid "Encrypt authenticated traffic with AFS fileserver?" -msgstr "" -"Mật mã hóa các dữ liệu xác thá»±c truyền với trình phục vụ tập tin AFS không?" +msgstr "Mật mã hóa các dữ liệu xác thá»±c truyền với trình phục vụ tập tin AFS không?" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:55 msgid "" "AFS provides a weak form of encryption that can optionally be used between a " @@ -146,54 +132,51 @@ msgid "" "thus is not sufficient for highly confidential data, it does provide some " "confidentiality and is likely to make the job of a casual attacker " "significantly more difficult." -msgstr "" -"AFS cung cấp một cách mật mã yếu mà tùy chọn có thể được dùng giữa một trình " +msgstr "AFS cung cấp một cách mật mã yếu mà tùy chọn có thể được dùng giữa một trình " "khách nào đó và những trình phục vụ tập tin khác. Dù cách mặt mã này yếu hÆ¡n " "DES, vì vậy không đủ cho dữ liệu quan trọng, nó có cung cấp một mức độ riêng " "tư, thì sẽ làm cho người tấn công gặp khó khăn một phần." -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:65 msgid "Dynamically generate the contents of /afs?" msgstr "Tạo ra nội dung « /afs » một cách động không?" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:65 msgid "" "/afs generally contains an entry for each cell that a client can talk to. " "Traditionally, these entries were generated by servers in the client's home " "cell. However, OpenAFS clients can generate the contents of /afs " "dynamically based on the contents of /etc/openafs/CellServDB and DNS." -msgstr "" -"Thư mục « /afs » thường chứa một mục ghi cho mỗi ô mà trình khách có thể liên " -"hệ. Trước này, trình phục vụ trong ô chính cá»§a trình khác đã tạo ra mục ghi " -"này. Tuy nhiên, trình khách loại OpenAFS có thể tạo ra nội dung « /afs » một " -"cách động, đựa vào nội dung « /etc/openafs/CellServDB » và vào DNS." +msgstr "Thư mục « /afs » thường chứa một mục ghi cho mỗi ô mà trình khách có thể " +"liên hệ. Trước này, trình phục vụ trong ô chính cá»§a trình khác đã tạo ra mục " +"ghi này. Tuy nhiên, trình khách loại OpenAFS có thể tạo ra nội dung « /afs » " +"một cách động, đựa vào nội dung « /etc/openafs/CellServDB » và vào DNS." -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:65 msgid "" "If you generate /afs dynamically, you may need to create /etc/openafs/" "CellAlias to include aliases for common cells. (The syntax of this file is " "one line per alias, with the cell name, a space, and then the alias for that " "cell.)" -msgstr "" -"Nếu bạn chọn tạo ra « /afs » một cách động, có lẽ bạn sẽ cần phải tạo « etc/" -"openafs/CellAlias » (bí danh ô) để gồm bí danh cho các ô chung. (Cú pháp cá»§a tập tin này là một dòng cho mỗi bí danh, mà chứa tên ô, rồi một dấu cách, rồi bí danh cho ô đó.)" +msgstr "Nếu bạn chọn tạo ra « /afs » một cách động, có lẽ bạn sẽ cần phải tạo « etc/" +"openafs/CellAlias » (bí danh ô) để gồm bí danh cho các ô chung. (Cú pháp cá»§a " +"tập tin này là một dòng cho mỗi bí danh, mà chứa tên ô, rồi một dấu cách, " +"rồi bí danh cho ô đó.)" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:79 msgid "Use fakestat to avoid hangs when listing /afs?" -msgstr "" -"Dùng « fakestat » (thống kê giả) để tránh hệ thống treo cứng khi liệt kê « /" -"afs » không?" +msgstr "Dùng « fakestat » (thống kê giả) để tránh hệ thống treo cứng khi liệt kê « /afs » không?" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-client.templates:79 msgid "" "Because AFS is a global file space, operations on the /afs directory can " @@ -202,42 +185,39 @@ msgid "" "machine for minutes. AFS has an option to simulate answers to these " "operations locally to avoid these hangs. You want this option under most " "circumstances." -msgstr "" -"Vì AFS là một khoảng cách toàn cục, thao tác trên thư mục « /afs » có thể tạo " -"ra nhiều tải cho mạng. Nếu một số ô AFS không sẵn sàng thì việc xem « /afs » " -"dùng lệnh « ls » (liệt kê) hoặc dùng một trình đồ họa duyệt tập tin thì có thể " -"treo cứng máy bạn trong vòng nhiều phút. AFS tùy chọn có thể mô phỏng trả " -"lời cho thao tác loại này một cách địa phương, để tránh treo cứng hệ thống " -"như thế. Đệ nghi bạn sá»­ dụng tùy chọn này: nó cần thiết trong phần lớn " -"trường hợp." +msgstr "Vì AFS là một khoảng cách toàn cục, thao tác trên thư mục « /afs » có thể " +"tạo ra nhiều tải cho mạng. Nếu một số ô AFS không sẵn sàng thì việc xem « /" +"afs » dùng lệnh « ls » (liệt kê) hoặc dùng một trình đồ họa duyệt tập tin " +"thì có thể treo cứng máy bạn trong vòng nhiều phút. AFS tùy chọn có thể mô " +"phỏng trả lời cho thao tác loại này một cách địa phương, để tránh treo cứng " +"hệ thống như thế. Đệ nghi bạn sá»­ dụng tùy chọn này: nó cần thiết trong phần " +"lớn trường hợp." -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-fileserver.templates:3 -msgid "What cell does this server serve files for?" -msgstr "Trình phục vụ này phục vụ tập tin cho ô nào?" +msgid "Cell this server serves files for:" +msgstr "Ô cho đó trình phục vụ tập tin:" -#. Type: string -#. Description +#.Type: string +#.Description #: ../openafs-fileserver.templates:3 msgid "" "AFS fileservers belong to a cell. They have the key for that cell's " "Kerberos service and serve volumes into that cell. Normally, this cell is " "the same cell as the workstation's client belongs to." -msgstr "" -"Mọi trình phục vụ tập tin AFS thuộc một ô nào đó. Trình ấy có khóa cá»§a dịch " +msgstr "Mọi trình phục vụ tập tin AFS thuộc một ô nào đó. Trình ấy có khóa cá»§a dịch " "vụ Kerberos cá»§a ô này, và phục vụ khối đĩa vào ô này. Bình thường, ô này là " "cùng một ô với ô sở hữu trình khách cá»§a máy trạm này." -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-fileserver.templates:11 msgid "Upgrading will move files to new locations; continue?" -msgstr "" -"Nâng cấp sẽ di chuyển tập tin sang vị trí mới: bạn có muốn tiếp tục không?" +msgstr "Nâng cấp sẽ di chuyển tập tin sang vị trí mới: bạn có muốn tiếp tục không?" -#. Type: boolean -#. Description +#.Type: boolean +#.Description #: ../openafs-fileserver.templates:11 msgid "" "Between Openafs 1.1 and Openafs 1.2, several files moved. In particular, " @@ -246,33 +226,34 @@ msgid "" "files are located in /var/lib/openafs. If you continue with this upgrade, " "these files will be moved. You should use the bos restart command to reload " "your servers. Any configuration changes made before you do so will be lost." -msgstr "" -"Giữa Openafs phiên bản 1.1 và 1.2, vài tập tin đã được di chuyển. Đặc biệt, " +msgstr "Giữa Openafs phiên bản 1.1 và 1.2, vài tập tin đã được di chuyển. Đặc biệt, " "những tập tin trong « /etc/openafs/server-local » (trình phục vụ địa phương) " -"đã được chia ra nhiều vị trí khác. Tập tin « BosConfig » lúc này trong « /etc/" -"openafs », và những tập tin khác có trong « /var/lib/openafs ». Nếu bạn chọn " -"tiếp tục nâng cấp, các tập tin ấy sẽ được di chuyển như thế. Bạn hãy sá»­ dụng " -"lệnh « bos restart » (khởi chạy lại) để khởi chạy lại các trình phục vụ cá»§a " -"bạn. Mọi thay đổi cấu hình được tạo trước khi bạn khởi chạy lại thì sẽ bị " -"mất." +"đã được chia ra nhiều vị trí khác. Tập tin « BosConfig » lúc này trong « /" +"etc/openafs », và những tập tin khác có trong « /var/lib/openafs ». Nếu bạn " +"chọn tiếp tục nâng cấp, các tập tin ấy sẽ được di chuyển như thế. Bạn hãy sá»­ " +"dụng lệnh « bos restart » (khởi chạy lại) để khởi chạy lại các trình phục vụ " +"cá»§a bạn. Mọi thay đổi cấu hình được tạo trước khi bạn khởi chạy lại thì sẽ " +"bị mất." -#. Type: note -#. Description +#.Type: note +#.Description #: ../openafs-fileserver.templates:22 msgid "OpenAFS file server probably does not work!" msgstr "Rất có thể là trình phục vụ tập tin OpenAFS không hoạt động." -#. Type: note -#. Description +#.Type: note +#.Description #: ../openafs-fileserver.templates:22 msgid "" "You are running the OpenAFS file server package on an alpha. This probably " "doesn't work; the DES code is flaky on the alpha, along with the threaded " "file server. Likely, the fileserver will simply fail to start, but if it " "does load, data corruption may result. You have been warned." -msgstr "" -"Bạn có chạy gói tin trình phục vụ tập tin OpenAFS trên một anfa. Rất có thể " +msgstr "Bạn có chạy gói tin trình phục vụ tập tin OpenAFS trên một anfa. Rất có thể " "là nó không hoạt động vì mã DES bị lỗi trên anfa, cÅ©ng với trình phục vụ tập " "tin theo mạch. Rất có thể là trình phục vụ tập tin sẽ không khởi chạy, nhưng " "mà nếu nó có phải khởi chạy thì dữ liệu có thể bị hỏng. Bạn đã nhận một cảnh " "báo rồi." + +#~ msgid "How large is your AFS cache (kB)?" +#~ msgstr "Bạn có bộ nhớ tạm AFS lớn bao nhiêu (theo kB)?" diff --git a/src/packaging/Debian/po/zh_CN.po b/src/packaging/Debian/po/zh_CN.po new file mode 100644 index 000000000..a6865620b --- /dev/null +++ b/src/packaging/Debian/po/zh_CN.po @@ -0,0 +1,252 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: openafs 1.4.2-4\n" +"Report-Msgid-Bugs-To: hartmans@debian.org\n" +"POT-Creation-Date: 2007-01-19 11:07-0800\n" +"PO-Revision-Date: 2007-01-08 20:44+0800\n" +"Last-Translator: Chun Tian (binghe) \n" +"Language-Team: Internationalization \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: string +#. Description +#: ../openafs-client.templates:1001 +msgid "DB server host names for your home cell:" +msgstr "您起始单元的数据库服务器主机名:" + +#. Type: string +#. Description +#: ../openafs-client.templates:1001 +msgid "" +"AFS uses the file /etc/openafs/CellServDB to hold the list of servers that " +"should be contacted to find parts of a cell. The cell you claim this " +"workstation belongs to is not in that file. Enter the host names of the " +"database servers separated by spaces. IMPORTANT: If you are creating a new " +"cell and this machine is to be a database server in that cell, only enter " +"this machine's name; add the other servers later after they are functioning. " +"Also, do not enable the AFS client to start at boot on this server until the " +"cell is configured. When you are ready you can edit /etc/openafs/afs.conf." +"client to enable the client." +msgstr "" +"AFS 使用 /etc/openafs/CellServDB 文件来存放那些在寻找一个单元 (cell) 各部分服" +"务器用来联系的服务器列表. 当前工作站您声称其所在的单元并不在这个文件里. 请以" +"空格分隔输入该单元数据库服务器的主机名. 重要提示: 如果您正在创建一个新单元并" +"且该机将做为此单元的数据库服务器, 那么只输入这台机器的主机名即可; 其他服务器" +"当他们可用时再加入进来. 并且, 直到该单元配置完成之前不要令 AFS 客户端在这台服" +"务器引导时启动. 当您一切就绪以后可以编辑 /etc/openafs/afs.conf 来打开客户端." + +#. Type: string +#. Description +#: ../openafs-client.templates:2001 +msgid "AFS cell this workstation belongs to:" +msgstr "这台工作站所属的 AFS 单元:" + +#. Type: string +#. Description +#: ../openafs-client.templates:2001 +msgid "" +"AFS filespace is organized into cells or administrative domains. Each " +"workstation belongs to one cell. Usually the cell is the DNS domain name of " +"the site." +msgstr "" +"AFS 文件空间按单元和管理域来组织. 每一台工作站属于一个单元. 单元名是通常是该" +"站点的 DNS 域名." + +#. Type: string +#. Description +#: ../openafs-client.templates:3001 +msgid "Size of AFS cache in kB:" +msgstr "以 kB 计的 AFS 缓存大小:" + +#. Type: string +#. Description +#: ../openafs-client.templates:3001 +msgid "" +"AFS uses an area of the disk to cache remote files for faster access. This " +"cache will be mounted on /var/cache/openafs. It is important that the cache " +"not overfill the partition it is located on. Often, people find it useful " +"to dedicate a partition to their AFS cache." +msgstr "" +"AFS 使用磁盘的一块区域来缓存远程文件来加速访问. 缓存将被挂载到 /var/cache/" +"openafs. 很重要的一点是不能让该缓存把它所在的分区填满. 通常, 人们发现用独立的" +"分区做 AFS 缓存很有用." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:4001 +msgid "Run Openafs client now and at boot?" +msgstr "现在就启动 OpenAFS 客户端并且开机启动吗?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:4001 +msgid "" +"Normally, most users who install the openafs-client package expect AFS to be " +"mounted automatically at boot. However, if you are planning on setting up a " +"new cell or are on a laptop, you may not want it started at boot time. If " +"you choose not to start AFS at boot, run /etc/init.d/openafs-client force-" +"start to start the client when you wish to run it." +msgstr "" +"通常, 多数安装了 openafs-client 包的用户期望 AFS 在开机后自动挂载. 尽管如此, " +"如果您正在计划设置一个新单元或者在笔记本电脑上, 您可能不希望它开机自动启动. " +"如果您选择了开机不启动 AFS, 可以在您需要它启动的时候运行 /etc/init.d/openafs-" +"client force-start" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:5001 +msgid "Look up AFS cells in DNS?" +msgstr "要通过 DNS 查询 AFS 单元吗?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:5001 +msgid "" +"In order to contact an AFS cell, you need the IP addresses of the cell's " +"database servers. Normally, this information is read from /etc/openafs/" +"CellServDB. However, if Openafs cannot find a cell in that file, it can use " +"DNS to look for AFSDB records that contain the information." +msgstr "" +"为了联系一个 AFS 单元, 您需要该单元的数据库服务器 IP 地址. 正常情况下, 这一信" +"息从 /etc/openafs/CellServDB 读取. 尽管如此, 如果 OpenAFS 无法在这个文件里找" +"到一个单元, 它可以用 DNS 查询包含这一信息的 AFSDB 记录." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:6001 +msgid "Encrypt authenticated traffic with AFS fileserver?" +msgstr "要加密和 AFS 文件服务器之间的认证通信吗?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:6001 +msgid "" +"AFS provides a weak form of encryption that can optionally be used between a " +"client and the fileservers. While this encryption is weaker than DES and " +"thus is not sufficient for highly confidential data, it does provide some " +"confidentiality and is likely to make the job of a casual attacker " +"significantly more difficult." +msgstr "" +"AFS 提供一种可选的弱加密形式用在客户端和文件服务器之间. 虽然这种加密比 DES 还" +"弱一些, 从而不能适用于那些高度机密数据, 但它确实提供了一定的保密性, 可以令那" +"些偶然的攻击明显地变得困难." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "Dynamically generate the contents of /afs?" +msgstr "动态生成 /afs 的内容吗?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "" +"/afs generally contains an entry for each cell that a client can talk to. " +"Traditionally, these entries were generated by servers in the client's home " +"cell. However, OpenAFS clients can generate the contents of /afs " +"dynamically based on the contents of /etc/openafs/CellServDB and DNS." +msgstr "" +"/afs 里通常含有客户端能访问到的每一个单元的入口. 这些入口传统上是由客户端所在" +"单元的服务器生成. 尽管如此, OpenAFS 客户端也可以根据 /etc/openafs/" +"CellServDB 和 DNS 的内容来动态生成 /afs 的内容." + +#. Type: boolean +#. Description +#: ../openafs-client.templates:7001 +msgid "" +"If you generate /afs dynamically, you may need to create /etc/openafs/" +"CellAlias to include aliases for common cells. (The syntax of this file is " +"one line per alias, with the cell name, a space, and then the alias for that " +"cell.)" +msgstr "" +"如果您动态生成 /afs, 您可能需要创建 /etc/openafs/CellAlias 来包含通用单元的别" +"名. (这个文件的语法是每个别名一行, 由单元名, 一个空格, 和该单元的别名组成.)" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:8001 +msgid "Use fakestat to avoid hangs when listing /afs?" +msgstr "使用 fskestat 来避免对 /afs 列目录时挂起吗?" + +#. Type: boolean +#. Description +#: ../openafs-client.templates:8001 +msgid "" +"Because AFS is a global file space, operations on the /afs directory can " +"generate significant network traffic. If some AFS cells are unavailable " +"then looking at /afs using ls or a graphical file browser may hang your " +"machine for minutes. AFS has an option to simulate answers to these " +"operations locally to avoid these hangs. You want this option under most " +"circumstances." +msgstr "" +"因为 AFS 是一个公共文件空间, 所以对 /afs 目录的操作能产生明显的网络流量. 如" +"果某些 AFS 单元无法访问, 那么当使用 ls 或者图形界面文件浏览器列 /afs 目录时可" +"能会令您的主机挂起几分钟. AFS 有一个选项可以将这些操作模拟成本机操作从而避免" +"这类挂起. 大多数情况下您都需要这一选项." + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:1001 +msgid "Cell this server serves files for:" +msgstr "这台文件服务器所在的单元:" + +#. Type: string +#. Description +#: ../openafs-fileserver.templates:1001 +msgid "" +"AFS fileservers belong to a cell. They have the key for that cell's " +"Kerberos service and serve volumes into that cell. Normally, this cell is " +"the same cell as the workstation's client belongs to." +msgstr "" +"AFS 文件服务器属于一个单元. 它们有该单元的 Kerberos 服务密钥并且为该单元提供" +"卷服务. 正常情况下, 这个单元跟工作站上的客户端属于的那个单元是同一个." + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:2001 +msgid "Upgrading will move files to new locations; continue?" +msgstr "升级将移动文件到新的位置; 继续吗?" + +#. Type: boolean +#. Description +#: ../openafs-fileserver.templates:2001 +msgid "" +"Between Openafs 1.1 and Openafs 1.2, several files moved. In particular, " +"files in /etc/openafs/server-local have been distributed to other " +"locations. The BosConfig file is now located in /etc/openafs and the other " +"files are located in /var/lib/openafs. If you continue with this upgrade, " +"these files will be moved. You should use the bos restart command to reload " +"your servers. Any configuration changes made before you do so will be lost." +msgstr "" +"在 OpenAFS 1.1 和 OpenAFS 1.2 之间, 一些文件的位置移动了. 特别是, /etc/" +"openafs/server-local 里的文件已经被分发到其他位置了. BosConfig 文件现在位" +"于 /etc/openafs 目录里而其他文件位于 /var/lib/openafs. 如果您继续进行升级, " +"这些文件将会被移动. 您应该用 bos restart 命令重加载您的服务器. 在您操作之前" +"的任何配置改动将丢失." + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:3001 +msgid "OpenAFS file server probably does not work!" +msgstr "OpenAFS 文件服务器可能不会工作!" + +#. Type: note +#. Description +#: ../openafs-fileserver.templates:3001 +msgid "" +"You are running the OpenAFS file server package on an alpha. This probably " +"doesn't work; the DES code is flaky on the alpha, along with the threaded " +"file server. Likely, the fileserver will simply fail to start, but if it " +"does load, data corruption may result. You have been warned." +msgstr "" +"您正在一台 alpha 机上运行 OpenAFS 文件服务器包. 这可能不会工作; alpha 下的随" +"线程文件服务器带的 DES 代码很奇怪. 文件服务器很可能简单地直接启动失败, 但如果" +"它确实起来了, 数据错乱也有可能发生. 您将被警告这点." diff --git a/src/packaging/Debian/postinst.mod b/src/packaging/Debian/postinst.mod deleted file mode 100644 index cfb292bfe..000000000 --- a/src/packaging/Debian/postinst.mod +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -e - -update-modules - -exit 0 diff --git a/src/packaging/Debian/prep-modules b/src/packaging/Debian/prep-modules deleted file mode 100644 index 0ab5d5c10..000000000 --- a/src/packaging/Debian/prep-modules +++ /dev/null @@ -1,103 +0,0 @@ -#! /bin/sh -# -# Prepares to build kernel modules. This script figures out and munges -# version strings. The goal is: -# -# * Set the package name to openafs-modules-$(KVERS) where $(KVERS) is the -# major kernel revision plus the debian subrevision and whatever -# architecture string is appropriate if building against the stock Debian -# kernels. $(KVERS) should be identical to the version component contained -# in the Debian kernel package names. -# -# * Make the package recommend either kernel-image-$(KVERS) or -# linux-image-$(KVERS) as appropriate for the kernel version that we're -# building against. Use recommend rather than depends since the user may -# have built their own kernel outside of the Debian package infrastructure. -# -# * Save the version number of the binary package in debian/VERSION for later -# use by dh_gencontrol. This will be the version number of the source -# package followed by a + and the version number of the kernel package that -# we're building against. If the kernel package version contains an epoch, -# try to hack our way into doing the right thing by using that epoch number -# as our own. This isn't quite the right thing, but seems reasonably good. -# -# This script generates debian/control from debian/control.module using sed. -# Unfortunately, substvars cannot be used since the name of the package is -# modified and substvars happens too late. It also outputs debian/VERSION, -# containing the version of the binary package. - -set -e - -if [ "$#" -ne 1 ]; then - echo Usage: $0 kernelsource-location - exit 1 -fi - -# We can get the kernel version from one of three places. If KVERS and KDREV -# are both already set in the environment (which will be the case when invoked -# by make-kpkg or module-assistant), use them. Otherwise, if we have a kernel -# source directory that contains debian/changelog (generated by make-kpkg), -# parse that file to find the version information. Finally, if neither works, -# extract the kernel version from the kernel headers, append INT_SUBARCH to -# that version if it's available, and assume a kernel package revision of -0 -# if none is provided. -# -# Set the variables $afs_kvers, which will hold the revision of the kernel, -# and $afs_kdrev, which will hold the version of the kernel package that we're -# building against. - -changelog="$1/debian/changelog" -if [ -n "$KVERS" ] && [ -n "$KDREV" ]; then - afs_kvers="${KVERS}${INT_SUBARCH}" - afs_kdrev="${KDREV}" -elif [ ! -f "$changelog" ] ; then - if [ -n "$KVERS" ] ; then - afs_kvers="$KVERS" - else - afs_kvers=`perl debian/kernel-version "$1"` - fi - if [ -z "$KDREV" ] ; then - afs_kdrev="${afs_kvers}-0" - else - afs_kvers="${afs_kvers}${INT_SUBARCH}" - afs_kdrev="${KDREV}" - fi -else - if [ -n "$KVERS" ] ; then - afs_kvers="$KVERS" - else - afs_kvers=`head -1 "$changelog" \ - | sed -e 's/.*source-\([^ ]*\) (\([^)]*\)).*/\1/'` - fi - afs_kdrev=`head -1 "$changelog" \ - | sed -e 's/.*source-\([^ ]*\) (\([^)]*\)).*/\2/'` -fi - -# Determine the kernel package name. For right now, assume linux-image for -# 2.6.12 and later, and kernel-image for anything earlier. If this doesn't -# work for someone, please submit a bug with the details. - -if dpkg --compare-versions "$afs_kvers" ge "2.6.12" ; then - afs_image=linux-image -else - afs_image=kernel-image -fi - -# Generate the control file from the template. - -sed -e "s/=KVERS/${afs_kvers}/g" -e "s/=IMG/${afs_image}/g" \ - debian/control.module > debian/control - -# Now, calcuate the binary package version. Extract the epoch from the kernel -# package revision and add it to the beginning of the binary package version -# if present. Then, concatenate the source version, '+', and the kernel -# package revision without the epoch. - -afs_version=`head -1 debian/changelog | sed -e 's/.*(\([^)]*\)).*/\1/'` -afs_epoch=`echo ${afs_kdrev} | sed -n -e 's/^\([0-9]*\):.*/\1/p'` -afs_version="${afs_version}+`echo ${afs_kdrev} | sed -e 's/^[0-9]*://'`" -if [ -n "$afs_epoch" ] ; then - afs_version="${afs_epoch}:${afs_version}" -fi - -echo "$afs_version" > debian/VERSION diff --git a/src/packaging/Debian/prerm.mod b/src/packaging/Debian/prerm.mod deleted file mode 100644 index f11f4e184..000000000 --- a/src/packaging/Debian/prerm.mod +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -e -exit 0 diff --git a/src/packaging/Debian/pt_util.sgml b/src/packaging/Debian/pt_util.sgml deleted file mode 100644 index bdd4e1bfc..000000000 --- a/src/packaging/Debian/pt_util.sgml +++ /dev/null @@ -1,184 +0,0 @@ - - Sam"> - Hartman"> - - November 23, 2000"> - - 8"> - hartmans@mit.edu"> - - OPENAFS-PTUTIL"> - - - Debian GNU/Linux"> - GNU"> -]> - - - -
    - &dhemail; -
    - - &dhfirstname; - &dhsurname; - - - 2000 - &dhusername; - - &dhdate; -
    - - - pt_util - &dhsection; - - - pt_util - - Utility to load/dump AFS protection database - - - - pt_util - - - - - - - - - - - - - - DESCRIPTION - - This manual page documents pt_util, a - utility for dumping, loading and creating AFS protection - databases. The protection database is normally made available - by the ptserver daemon running on the AFS - database servers. However, pt_util - provides a mechanism for manipulating the database when - ptserver is unavailable. This is useful to - create an initial database, to effect large batch changes or - when the database has a damaged - system:administrators group. - - By default, pt_util opens the - database and prints the version. Options allow extraction of - information from the database or writing new entries into the - database. - - - - - OPTIONS - - - - - - - Show summary of options. - - - - - - Update PRDB with contents of data file or standard input if the is not used - - - - - - List users in the database. - - - - - - List groups in the database. - - - - - - List group members. - - - - - - Follow name hash chains instead of ID hashes. - - - - - - List only system: groups. Used by MIT's Moira. - - - - - - Read from or write printable representation of the - database from datafile. - - - - - - Manipulate the protection database - prdb. The running protection - database is - /var/lib/openafs/db/prdb.DB0 - - - - - - SEE ALSO - - ptserver(8) - - - - - AUTHOR - - This manual page was written by &dhusername; &dhemail; for - the &debian; system (but may be used by others). - - - - -
    - - in LRU chain (we zero it later) */ - hd->prev->next = hd->next; /* pull hd out of LRU list */ - hd->next->prev = hd->prev; /* if hd only element, this is noop */ + + if ((flags & VOL_STATS_PER_CHAIN2) && queue_IsNotEmpty(head)) { + /* compute detailed per-chain stats */ + struct stats hdr_loads, hdr_gets; + double v_looks, v_loads, v_gets; + + /* initialize stats with data from first element in chain */ + vp = queue_First(head, Volume); + v_looks = UInt64ToDouble(&vp->stats.hash_lookups); + v_loads = UInt64ToDouble(&vp->stats.hdr_loads); + v_gets = UInt64ToDouble(&vp->stats.hdr_gets); + ch_gets.min = ch_gets.max = v_looks; + hdr_loads.min = hdr_loads.max = v_loads; + hdr_gets.min = hdr_gets.max = v_gets; + hdr_loads.sum = hdr_gets.sum = 0; + + vp = queue_Next(vp, Volume); + + /* pull in stats from remaining elements in chain */ + for (queue_ScanFrom(head, vp, vp, np, Volume)) { + v_looks = UInt64ToDouble(&vp->stats.hash_lookups); + v_loads = UInt64ToDouble(&vp->stats.hdr_loads); + v_gets = UInt64ToDouble(&vp->stats.hdr_gets); + + hdr_loads.sum += v_loads; + hdr_gets.sum += v_gets; + + if (v_looks < ch_gets.min) + ch_gets.min = v_looks; + else if (v_looks > ch_gets.max) + ch_gets.max = v_looks; + + if (v_loads < hdr_loads.min) + hdr_loads.min = v_loads; + else if (v_loads > hdr_loads.max) + hdr_loads.max = v_loads; + + if (v_gets < hdr_gets.min) + hdr_gets.min = v_gets; + else if (v_gets > hdr_gets.max) + hdr_gets.max = v_gets; + } + + /* compute per-chain averages */ + ch_gets.avg = ch_gets.sum / ((double)head->len); + hdr_loads.avg = hdr_loads.sum / ((double)head->len); + hdr_gets.avg = hdr_gets.sum / ((double)head->len); + + /* dump per-chain stats */ + Log("Volume hash chain %d : len=%d, looks=%s, reorders=%s\n", + i, head->len, + DoubleToPrintable(ch_looks.sum, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(ch_reorders.sum, pr_buf[1], sizeof(pr_buf[1]))); + Log("\tVolume gets : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(ch_gets.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(ch_gets.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(ch_gets.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(ch_gets.sum, pr_buf[3], sizeof(pr_buf[3]))); + Log("\tHDR gets : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(hdr_gets.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(hdr_gets.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(hdr_gets.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(hdr_gets.sum, pr_buf[3], sizeof(pr_buf[3]))); + Log("\tHDR loads : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(hdr_loads.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(hdr_loads.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(hdr_loads.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(hdr_loads.sum, pr_buf[3], sizeof(pr_buf[3]))); + } else if (flags & VOL_STATS_PER_CHAIN) { + /* dump simple per-chain stats */ + Log("Volume hash chain %d : len=%d, looks=%s, gets=%s, reorders=%s\n", + i, head->len, + DoubleToPrintable(ch_looks.sum, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(ch_gets.sum, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(ch_reorders.sum, pr_buf[2], sizeof(pr_buf[2]))); } - hd->next = hd->prev = 0; - /* if not in LRU chain, next test won't be true */ - if (hd == volumeLRU) /* last header item, turn into empty list */ - volumeLRU = NULL; - } - return old; -} -/* Put it at the top of the LRU chain */ -static void -ReleaseVolumeHeader(register struct volHeader *hd) -{ - if (programType != fileServer) - return; - if (!hd || hd->next) /* no header, or header already released */ - return; - if (!volumeLRU) { - hd->next = hd->prev = hd; - } else { - hd->prev = volumeLRU->prev; - hd->next = volumeLRU; - hd->prev->next = hd->next->prev = hd; + VOL_LOCK; + VHashEndExclusive_r(head); } - volumeLRU = hd; -} -static void -FreeVolumeHeader(register Volume * vp) -{ - register struct volHeader *hd = vp->header; - if (!hd) - return; - if (programType == fileServer) { - ReleaseVolumeHeader(hd); - hd->back = 0; - } else { - free(hd); - } - vp->header = 0; -} + VOL_UNLOCK; + /* compute global averages */ + len.avg = len.sum / ((double)VolumeHashTable.Size); + looks.avg = looks.sum / ((double)VolumeHashTable.Size); + gets.avg = gets.sum / ((double)VolumeHashTable.Size); + reorders.avg = reorders.sum / ((double)VolumeHashTable.Size); + + /* dump global stats */ + Log("Volume hash summary: %d buckets\n", VolumeHashTable.Size); + Log(" chain length : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(len.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(len.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(len.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(len.sum, pr_buf[3], sizeof(pr_buf[3]))); + Log(" looks : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(looks.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(looks.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(looks.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(looks.sum, pr_buf[3], sizeof(pr_buf[3]))); + Log(" gets : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(gets.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(gets.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(gets.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(gets.sum, pr_buf[3], sizeof(pr_buf[3]))); + Log(" reorders : min=%s, max=%s, avg=%s, total=%s\n", + DoubleToPrintable(reorders.min, pr_buf[0], sizeof(pr_buf[0])), + DoubleToPrintable(reorders.max, pr_buf[1], sizeof(pr_buf[1])), + DoubleToPrintable(reorders.avg, pr_buf[2], sizeof(pr_buf[2])), + DoubleToPrintable(reorders.sum, pr_buf[3], sizeof(pr_buf[3]))); + + /* print extended disk related statistics */ + { + struct DiskPartition64 * diskP; + afs_uint32 vol_count[VOLMAXPARTS+1]; + byte part_exists[VOLMAXPARTS+1]; + Device id; + int i; -/***************************************************/ -/* Routines to add volume to hash chain, delete it */ -/***************************************************/ + memset(vol_count, 0, sizeof(vol_count)); + memset(part_exists, 0, sizeof(part_exists)); -static void -AddVolumeToHashTable(register Volume * vp, int hashid) -{ - int hash = VOLUME_HASH(hashid); - vp->hashid = hashid; - vp->hashNext = VolumeHashTable[hash]; - VolumeHashTable[hash] = vp; - vp->vnodeHashOffset = VolumeHashOffset_r(); -} + VOL_LOCK; -static void -DeleteVolumeFromHashTable(register Volume * vp) -{ - int hash = VOLUME_HASH(vp->hashid); - if (VolumeHashTable[hash] == vp) - VolumeHashTable[hash] = vp->hashNext; - else { - Volume *tvp = VolumeHashTable[hash]; - if (tvp == NULL) - return; - while (tvp->hashNext && tvp->hashNext != vp) - tvp = tvp->hashNext; - if (tvp->hashNext == NULL) - return; - tvp->hashNext = vp->hashNext; + for (diskP = DiskPartitionList; diskP; diskP = diskP->next) { + id = diskP->index; + vol_count[id] = diskP->vol_list.len; + part_exists[id] = 1; + } + + VOL_UNLOCK; + for (i = 0; i <= VOLMAXPARTS; i++) { + if (part_exists[i]) { + /* XXX while this is currently safe, it is a violation + * of the VGetPartitionById_r interface contract. */ + diskP = VGetPartitionById_r(i, 0); + if (diskP) { + Log("Partition %s has %d online volumes\n", + VPartitionPath(diskP), diskP->vol_list.len); + } + } + } + VOL_LOCK; } - vp->hashid = 0; -} -void -VPrintCacheStats_r(void) -{ - register struct VnodeClassInfo *vcp; - vcp = &VnodeClassInfo[vLarge]; - Log("Large vnode cache, %d entries, %d allocs, %d gets (%d reads), %d writes\n", vcp->cacheSize, vcp->allocs, vcp->gets, vcp->reads, vcp->writes); - vcp = &VnodeClassInfo[vSmall]; - Log("Small vnode cache,%d entries, %d allocs, %d gets (%d reads), %d writes\n", vcp->cacheSize, vcp->allocs, vcp->gets, vcp->reads, vcp->writes); - Log("Volume header cache, %d entries, %d gets, %d replacements\n", - VolumeCacheSize, VolumeGets, VolumeReplacements); + /* print extended VLRU statistics */ + if (VVLRUExtStats_r(&vlru_stats, vol_sum) == 0) { + afs_uint32 idx, cur, lpos; + VOL_UNLOCK; + VolumeId line[5]; + + Log("VLRU State Dump:\n\n"); + + for (idx = VLRU_QUEUE_NEW; idx < VLRU_QUEUE_INVALID; idx++) { + Log("\t%s:\n", vlru_idx_to_string(idx)); + + lpos = 0; + for (cur = vlru_stats.queue_info[idx].start; + cur < vlru_stats.queue_info[idx].len; + cur++) { + line[lpos++] = vlru_stats.vec[cur].volid; + if (lpos==5) { + Log("\t\t%u, %u, %u, %u, %u,\n", + line[0], line[1], line[2], line[3], line[4]); + lpos = 0; + } + } + + if (lpos) { + while (lpos < 5) { + line[lpos++] = 0; + } + Log("\t\t%u, %u, %u, %u, %u\n", + line[0], line[1], line[2], line[3], line[4]); + } + Log("\n"); + } + + free(vlru_stats.vec); + + VOL_LOCK; + } } void -VPrintCacheStats(void) +VPrintExtendedCacheStats(int flags) { VOL_LOCK; - VPrintCacheStats_r(); + VPrintExtendedCacheStats_r(flags); VOL_UNLOCK; } - +#endif /* AFS_DEMAND_ATTACH_FS */ diff --git a/src/vol/volume.h b/src/vol/volume.h index b5205a0f9..079d9a259 100644 --- a/src/vol/volume.h +++ b/src/vol/volume.h @@ -5,6 +5,8 @@ * This software has been released under the terms of the IBM Public * License. For details, see the LICENSE file in the top-level source * directory or online at http://www.openafs.org/dl/license10.html + * + * Portions Copyright (c) 2006-2008 Sine Nomine Associates */ /* @@ -24,44 +26,104 @@ #define VolumeWriteable2(vol) (vol.type == readwriteVolume) typedef bit32 FileOffset; /* Offset in this file */ #define Date afs_uint32 +#include "daemon_com.h" +#include "fssync.h" + +#if 0 +/** turn this on if you suspect a volume package locking bug */ +#define VOL_LOCK_DEBUG 1 +#endif + +#ifdef VOL_LOCK_DEBUG +#define VOL_LOCK_ASSERT_HELD \ + assert(vol_glock_holder == pthread_self()) +#define VOL_LOCK_ASSERT_UNHELD \ + assert(vol_glock_holder == 0) +#define _VOL_LOCK_SET_HELD \ + vol_glock_holder = pthread_self() +#define _VOL_LOCK_SET_UNHELD \ + vol_glock_holder = 0 +#define VOL_LOCK_DBG_CV_WAIT_END \ + do { \ + VOL_LOCK_ASSERT_UNHELD; \ + _VOL_LOCK_SET_HELD; \ + } while(0) +#define VOL_LOCK_DBG_CV_WAIT_BEGIN \ + do { \ + VOL_LOCK_ASSERT_HELD; \ + _VOL_LOCK_SET_UNHELD; \ + } while(0) +#else +#define VOL_LOCK_ASSERT_HELD +#define VOL_LOCK_ASSERT_UNHELD +#define VOL_LOCK_DBG_CV_WAIT_BEGIN +#define VOL_LOCK_DBG_CV_WAIT_END +#endif + #ifdef AFS_PTHREAD_ENV #include #include extern pthread_mutex_t vol_glock_mutex; -extern pthread_mutex_t vol_attach_mutex; -extern pthread_mutex_t vol_fsync_mutex; extern pthread_mutex_t vol_trans_mutex; extern pthread_cond_t vol_put_volume_cond; extern pthread_cond_t vol_sleep_cond; extern int vol_attach_threads; -/* this lock has been deprecated */ -#define VATTACH_LOCK -#define VATTACH_UNLOCK +#ifdef VOL_LOCK_DEBUG +extern pthread_t vol_glock_holder; +#define VOL_LOCK \ + do { \ + assert(pthread_mutex_lock(&vol_glock_mutex) == 0); \ + assert(vol_glock_holder == 0); \ + vol_glock_holder = pthread_self(); \ + } while (0) +#define VOL_UNLOCK \ + do { \ + VOL_LOCK_ASSERT_HELD; \ + vol_glock_holder = 0; \ + assert(pthread_mutex_unlock(&vol_glock_mutex) == 0); \ + } while (0) +#define VOL_CV_WAIT(cv) \ + do { \ + VOL_LOCK_DBG_CV_WAIT_BEGIN; \ + assert(pthread_cond_wait((cv), &vol_glock_mutex) == 0); \ + VOL_LOCK_DBG_CV_WAIT_END; \ + } while (0) +#else /* !VOL_LOCK_DEBUG */ #define VOL_LOCK \ assert(pthread_mutex_lock(&vol_glock_mutex) == 0) #define VOL_UNLOCK \ assert(pthread_mutex_unlock(&vol_glock_mutex) == 0) -#define VFSYNC_LOCK \ - assert(pthread_mutex_lock(&vol_fsync_mutex) == 0) -#define VFSYNC_UNLOCK \ - assert(pthread_mutex_unlock(&vol_fsync_mutex) == 0) +#define VOL_CV_WAIT(cv) assert(pthread_cond_wait((cv), &vol_glock_mutex) == 0) +#endif /* !VOL_LOCK_DEBUG */ +#define VSALVSYNC_LOCK \ + assert(pthread_mutex_lock(&vol_salvsync_mutex) == 0) +#define VSALVSYNC_UNLOCK \ + assert(pthread_mutex_unlock(&vol_salvsync_mutex) == 0) #define VTRANS_LOCK \ assert(pthread_mutex_lock(&vol_trans_mutex) == 0) #define VTRANS_UNLOCK \ assert(pthread_mutex_unlock(&vol_trans_mutex) == 0) #else /* AFS_PTHREAD_ENV */ -#define VATTACH_LOCK -#define VATTACH_UNLOCK #define VOL_LOCK #define VOL_UNLOCK -#define VFSYNC_LOCK -#define VFSYNC_UNLOCK +#define VSALVSYNC_LOCK +#define VSALVSYNC_UNLOCK #define VTRANS_LOCK #define VTRANS_UNLOCK #endif /* AFS_PTHREAD_ENV */ -typedef enum { fileServer, volumeUtility, salvager } ProgramType; +/** + * volume package program type enumeration. + */ +typedef enum { + fileServer = 1, /**< the fileserver process */ + volumeUtility = 2, /**< volserver, or a + * single volume salvager (non-dafs) */ + salvager = 3, /**< standalone whole-partition salvager */ + salvageServer = 4, /**< dafs online salvager */ + debugUtility = 5 /**< fssync-debug or similar utility */ +} ProgramType; extern ProgramType programType; /* The type of program using the package */ /* Some initialization parameters for the volume package */ @@ -70,12 +132,110 @@ extern int (*V_BreakVolumeCallbacks) (); extern int (*vol_PollProc) (); #define DOPOLL ((vol_PollProc)? (*vol_PollProc)() : 0) +#ifdef AFS_DEMAND_ATTACH_FS +/** + * variable error return code based upon programType and DAFS presence + */ +#define DAFS_VSALVAGE ((programType == fileServer) ? VSALVAGING : VSALVAGE) +#else +#define DAFS_VSALVAGE (VSALVAGE) +#endif + struct versionStamp { /* Version stamp for critical volume files */ bit32 magic; /* Magic number */ bit32 version; /* Version number of this file, or software * that created this file */ }; +#ifdef AFS_DEMAND_ATTACH_FS +/** + * demand attach volume state enumeration. + * + * @note values must be contiguous in order for VIsValidState() to work correctly + */ +typedef enum { + VOL_STATE_UNATTACHED = 0, /**< volume is unattached */ + VOL_STATE_PREATTACHED = 1, /**< volume has been pre-attached */ + VOL_STATE_ATTACHING = 2, /**< volume is transitioning to fully attached */ + VOL_STATE_ATTACHED = 3, /**< volume has been fully attached */ + VOL_STATE_UPDATING = 4, /**< volume is updating on-disk structures */ + VOL_STATE_GET_BITMAP = 5, /**< volume is getting bitmap entries */ + VOL_STATE_HDR_LOADING = 6, /**< volume is loading disk header */ + VOL_STATE_HDR_ATTACHING = 7, /**< volume is getting a header from the LRU */ + VOL_STATE_SHUTTING_DOWN = 8, /**< volume is shutting down */ + VOL_STATE_GOING_OFFLINE = 9, /**< volume is going offline */ + VOL_STATE_OFFLINING = 10, /**< volume is transitioning to offline */ + VOL_STATE_DETACHING = 11, /**< volume is transitioning to detached */ + VOL_STATE_SALVSYNC_REQ = 12, /**< volume is blocked on a salvsync request */ + VOL_STATE_SALVAGING = 13, /**< volume is being salvaged */ + VOL_STATE_ERROR = 14, /**< volume is in an error state */ + VOL_STATE_VNODE_ALLOC = 15, /**< volume is busy allocating a new vnode */ + VOL_STATE_VNODE_GET = 16, /**< volume is busy getting vnode disk data */ + VOL_STATE_VNODE_CLOSE = 17, /**< volume is busy closing vnodes */ + VOL_STATE_VNODE_RELEASE = 18, /**< volume is busy releasing vnodes */ + VOL_STATE_VLRU_ADD = 19, /**< volume is busy being added to a VLRU queue */ + /* please add new states directly above this line */ + VOL_STATE_FREED = 20, /**< debugging aid */ + VOL_STATE_COUNT = 21, /**< total number of valid states */ +} VolState; + +/** + * V_attachFlags bits. + */ +enum VolFlags { + VOL_HDR_ATTACHED = 0x1, /**< volume header is attached to Volume struct */ + VOL_HDR_LOADED = 0x2, /**< volume header contents are valid */ + VOL_HDR_IN_LRU = 0x4, /**< volume header is in LRU */ + VOL_IN_HASH = 0x8, /**< volume is in hash table */ + VOL_ON_VBYP_LIST = 0x10, /**< volume is on VByP list */ + VOL_IS_BUSY = 0x20, /**< volume is not to be free()d */ + VOL_ON_VLRU = 0x40, /**< volume is on the VLRU */ + VOL_HDR_DONTSALV = 0x80, /**< volume header DONTSALVAGE flag is set */ +}; + +/* VPrintExtendedCacheStats flags */ +#define VOL_STATS_PER_CHAIN 0x1 /**< compute simple per-chain stats */ +#define VOL_STATS_PER_CHAIN2 0x2 /**< compute per-chain stats that require scanning + * every element of the chain */ + +/* VLRU_SetOptions options */ +#define VLRU_SET_THRESH 1 +#define VLRU_SET_INTERVAL 2 +#define VLRU_SET_MAX 3 +#define VLRU_SET_ENABLED 4 + +/** + * VLRU queue names. + */ +typedef enum { + VLRU_QUEUE_NEW = 0, /**< LRU queue for new volumes */ + VLRU_QUEUE_MID = 1, /**< survivor generation */ + VLRU_QUEUE_OLD = 2, /**< old generation */ + VLRU_QUEUE_CANDIDATE = 3, /**< soft detach candidate pool */ + VLRU_QUEUE_HELD = 4, /* volumes which are not allowed + * to be soft detached */ + VLRU_QUEUE_INVALID = 5, /**< invalid queue id */ +} VLRUQueueName; + +/* default scanner timing parameters */ +#define VLRU_DEFAULT_OFFLINE_THRESH (60*60*2) /* 2 hours */ +#define VLRU_DEFAULT_OFFLINE_INTERVAL (60*2) /* 2 minutes */ +#define VLRU_DEFAULT_OFFLINE_MAX 8 /* 8 volumes */ + + +/** + * DAFS thread-specific options structure + */ +typedef struct VThreadOptions { + int disallow_salvsync; /**< whether or not salvsync calls are allowed + * on this thread (deadlock prevention). */ +} VThreadOptions_t; +extern pthread_key_t VThread_key; +extern VThreadOptions_t VThread_defaults; + +#endif /* AFS_DEMAND_ATTACH_FS */ + + /* Magic numbers and version stamps for each type of file */ #define VOLUMEHEADERMAGIC ((bit32)0x88a1bb3c) #define VOLUMEINFOMAGIC ((bit32)0x78a1b2c5) @@ -248,7 +408,8 @@ typedef struct VolumeDiskData { * of measurement; week[6] is 7 days ago */ Date dayUseDate; /* Date the dayUse statistics refer to; the week use stats * are the preceding 7 days */ - int reserved3[11]; /* Other stats here */ + unsigned int volUpdateCounter; /*incremented at every update of volume*/ + int reserved3[10]; /* Other stats here */ /* Server supplied dates */ Date creationDate; /* Creation date for a read/write @@ -296,12 +457,147 @@ typedef struct VolumeDiskData { /**************************************/ /* Memory resident volume information */ /**************************************/ + +/** + * global volume package stats. + */ +typedef struct VolPkgStats { +#ifdef AFS_DEMAND_ATTACH_FS + /* + * demand attach fs + * extended volume package statistics + */ + + /* levels */ + afs_uint32 state_levels[VOL_STATE_COUNT]; /**< volume state transition counters */ + + /* counters */ + afs_uint64 hash_looks; /**< number of hash chain element traversals */ + afs_uint64 hash_reorders; /**< number of hash chain reorders */ + afs_uint64 salvages; /**< online salvages since fileserver start */ + afs_uint64 vol_ops; /**< volume operations since fileserver start */ +#endif /* AFS_DEMAND_ATTACH_FS */ + + afs_uint64 hdr_loads; /**< header loads from disk */ + afs_uint64 hdr_gets; /**< header pulls out of LRU */ + afs_uint64 attaches; /**< volume attaches since fileserver start */ + afs_uint64 soft_detaches; /**< soft detach ops since fileserver start */ + + /* configuration parameters */ + afs_uint32 hdr_cache_size; /**< size of volume header cache */ +} VolPkgStats; +extern VolPkgStats VStats; + +/* + * volume header cache supporting structures + */ +struct volume_hdr_LRU_stats { + afs_uint32 free; + afs_uint32 used; + afs_uint32 attached; +}; + +struct volume_hdr_LRU_t { + struct rx_queue lru; + struct volume_hdr_LRU_stats stats; +}; +extern struct volume_hdr_LRU_t volume_hdr_LRU; + +/* + * volume hash chain supporting structures + */ +typedef struct VolumeHashChainHead { + struct rx_queue queue; + int len; + /* someday we could put a per-chain lock here... */ +#ifdef AFS_DEMAND_ATTACH_FS + int busy; + int cacheCheck; + + /* per-chain statistics */ + afs_uint64 looks; + afs_uint64 gets; + afs_uint64 reorders; + + pthread_cond_t chain_busy_cv; +#endif /* AFS_DEMAND_ATTACH_FS */ +} VolumeHashChainHead; + +typedef struct VolumeHashTable { + int Size; + int Mask; + VolumeHashChainHead * Table; +} VolumeHashTable_t; +extern VolumeHashTable_t VolumeHashTable; + +struct VolumeHashChainStats { + afs_int32 table_size; + afs_int32 chain_len; +#ifdef AFS_DEMAND_ATTACH_FS + afs_int32 chain_cacheCheck; + afs_int32 chain_busy; + afs_uint64 chain_looks; + afs_uint64 chain_gets; + afs_uint64 chain_reorders; +#endif +}; + + +#ifdef AFS_DEMAND_ATTACH_FS +/** + * DAFS extended per-volume statistics. + * + * @note this data lives across the entire + * lifetime of the fileserver process + */ +typedef struct VolumeStats { + /* counters */ + afs_uint64 hash_lookups; /**< hash table lookups */ + afs_uint64 hash_short_circuits; /**< short circuited hash lookups (due to cacheCheck) */ + afs_uint64 hdr_loads; /**< header loads from disk */ + afs_uint64 hdr_gets; /**< header pulls out of LRU */ + afs_uint16 attaches; /**< attaches of this volume since fileserver start */ + afs_uint16 soft_detaches; /**< soft detaches of this volume */ + afs_uint16 salvages; /**< online salvages since fileserver start */ + afs_uint16 vol_ops; /**< volume operations since fileserver start */ + + /* timestamps */ + afs_uint32 last_attach; /**< unix timestamp of last VAttach */ + afs_uint32 last_get; /**< unix timestamp of last VGet/VHold */ + afs_uint32 last_promote; /**< unix timestamp of last VLRU promote/demote */ + afs_uint32 last_hdr_get; /**< unix timestamp of last GetVolumeHeader() */ + afs_uint32 last_hdr_load; /**< unix timestamp of last LoadVolumeHeader() */ + afs_uint32 last_salvage; /**< unix timestamp of last initiation of an online salvage */ + afs_uint32 last_salvage_req; /**< unix timestamp of last SALVSYNC request */ + afs_uint32 last_vol_op; /**< unix timestamp of last volume operation */ +} VolumeStats; + +/** + * DAFS online salvager state. + */ +typedef struct VolumeOnlineSalvage { + afs_uint32 prio; /**< number of VGetVolume's since salvage requested */ + int reason; /**< reason for requesting online salvage */ + byte requested; /**< flag specifying that salvage should be scheduled */ + byte scheduled; /**< flag specifying whether online salvage scheduled */ + byte reserved[2]; /**< padding */ +} VolumeOnlineSalvage; + +/** + * DAFS Volume LRU state. + */ +typedef struct VolumeVLRUState { + struct rx_queue lru; /**< VLRU queue for this generation */ + VLRUQueueName idx; /**< VLRU generation index */ +} VolumeVLRUState; +#endif /* AFS_DEMAND_ATTACH_FS */ + typedef struct Volume { - struct Volume *hashNext; /* Next in hash resolution table */ + struct rx_queue q; /* Volume hash chain pointers */ VolumeId hashid; /* Volume number -- for hash table lookup */ struct volHeader *header; /* Cached disk data */ Device device; /* Unix device for the volume */ - struct DiskPartition + struct DiskPartition64 *partition; /* Information about the Unix partition */ struct vnodeIndex { IHandle_t *handle; /* Unix inode holding this index */ @@ -335,13 +631,28 @@ typedef struct Volume { byte specialStatus; /* An error code to return on VGetVolume: the * volume is unavailable for the reason quoted, * currently VBUSY or VMOVED */ + afs_uint32 checkoutMode; /* for volume utilities, mode number for current checkout */ afs_uint32 updateTime; /* Time that this volume was put on the updated * volume list--the list of volumes that will be * salvaged should the file server crash */ + struct rx_queue vnode_list; /**< linked list of cached vnodes for this volume */ +#ifdef AFS_DEMAND_ATTACH_FS + VolState attach_state; /* what stage of attachment has been completed */ + afs_uint32 attach_flags; /* flags related to attachment state */ + pthread_cond_t attach_cv; /* state change condition variable */ + short nWaiters; /* volume package internal ref count */ + int chainCacheCheck; /* Volume hash chain cache check */ + struct rx_queue vol_list; /* per-partition volume list (VByPList) */ + + VolumeOnlineSalvage salvage; /* online salvager state */ + VolumeStats stats; /* per-volume statistics */ + VolumeVLRUState vlru; /* state specific to the VLRU */ + FSSYNC_VolOp_info * pending_vol_op; /* fssync command info for any pending vol ops */ +#endif /* AFS_DEMAND_ATTACH_FS */ } Volume; struct volHeader { - struct volHeader *prev, *next; /* LRU pointers */ + struct rx_queue lru; VolumeDiskData diskstuff; /* General volume info read from disk */ Volume *back; /* back pointer to current volume structure */ }; @@ -355,6 +666,12 @@ struct volHeader { #define V_vnodeIndex(vp) ((vp)->vnodeIndex) #define V_nextVnodeUnique(vp) ((vp)->nextVnodeUnique) #define V_linkHandle(vp) ((vp)->linkHandle) +#define V_checkoutMode(vp) ((vp)->checkoutMode) +#ifdef AFS_DEMAND_ATTACH_FS +#define V_attachState(vp) ((vp)->attach_state) +#define V_attachFlags(vp) ((vp)->attach_flags) +#define V_attachCV(vp) ((vp)->attach_cv) +#endif /* AFS_DEMAND_ATTACH_FS */ /* N.B. V_id must be this, rather than vp->id, or some programs will break, probably */ #define V_stamp(vp) ((vp)->header->diskstuff.stamp) @@ -402,6 +719,7 @@ struct volHeader { #define V_stat_dirSameAuthor(vp, idx) (((vp)->header->diskstuff.stat_dirSameAuthor)[idx]) #define V_stat_dirDiffAuthor(vp, idx) (((vp)->header->diskstuff.stat_dirDiffAuthor)[idx]) #endif /* OPENAFS_VOL_STATS */ +#define V_volUpCounter(vp) ((vp)->header->diskstuff.volUpdateCounter) /* File offset computations. The offset values in the volume header are computed with these macros -- when the file is written only!! */ @@ -412,14 +730,17 @@ struct volHeader { extern char *VSalvageMessage; /* Canonical message when a volume is forced * offline */ -extern Volume *VGetVolume(Error * ec, VolId volumeId); +extern Volume *VGetVolume(Error * ec, Error * client_ec, VolId volumeId); extern Volume *VGetVolume_r(Error * ec, VolId volumeId); extern void VPutVolume(Volume *); extern void VPutVolume_r(Volume *); extern void VOffline(Volume * vp, char *message); extern void VOffline_r(Volume * vp, char *message); extern int VConnectFS(void); -extern int VConnectFS_r(int); +extern int VConnectFS_r(void); +extern void VDisconnectFS(void); +extern void VDisconnectFS_r(void); +extern int VChildProcReconnectFS(void); extern Volume *VAttachVolume(Error * ec, VolumeId volumeId, int mode); extern Volume *VAttachVolume_r(Error * ec, VolumeId volumeId, int mode); extern Volume *VCreateVolume(Error * ec, char *partname, VolId volumeId, @@ -429,7 +750,7 @@ extern Volume *VCreateVolume_r(Error * ec, char *partname, VolId volumeId, extern VnodeId VAllocBitmapEntry(Error * ec, Volume * vp, struct vnodeIndex *index); extern VnodeId VAllocBitmapEntry_r(Error * ec, Volume * vp, - struct vnodeIndex *index); + struct vnodeIndex *index, int flags); extern void VFreeBitMapEntry(Error * ec, register struct vnodeIndex *index, unsigned bitNumber); extern void VFreeBitMapEntry_r(Error * ec, register struct vnodeIndex *index, @@ -442,27 +763,57 @@ extern Volume *VAttachVolumeByName_r(Error * ec, char *partition, char *name, int mode); extern void VShutdown(void); extern void VUpdateVolume(Error * ec, Volume * vp); -extern void VUpdateVolume_r(Error * ec, Volume * vp); +extern void VUpdateVolume_r(Error * ec, Volume * vp, int flags); extern void VAddToVolumeUpdateList(Error * ec, Volume * vp); extern void VAddToVolumeUpdateList_r(Error * ec, Volume * vp); extern void VDetachVolume(Error * ec, Volume * vp); extern void VDetachVolume_r(Error * ec, Volume * vp); extern void VForceOffline(Volume * vp); -extern void VForceOffline_r(Volume * vp); +extern void VForceOffline_r(Volume * vp, int flags); extern void VBumpVolumeUsage(register Volume * vp); extern void VBumpVolumeUsage_r(register Volume * vp); extern void VSetDiskUsage(void); extern void VPrintCacheStats(void); extern void VReleaseVnodeFiles_r(Volume * vp); extern void VCloseVnodeFiles_r(Volume * vp); -extern struct DiskPartition *VGetPartition(char *name, int abortp); -extern struct DiskPartition *VGetPartition_r(char *name, int abortp); -extern int VInitVolumePackage(ProgramType pt, int nLargeVnodes, - int nSmallVnodes, int connect, int volcache); +extern struct DiskPartition64 *VGetPartition(char *name, int abortp); +extern struct DiskPartition64 *VGetPartition_r(char *name, int abortp); +extern int VInitVolumePackage(ProgramType pt, afs_uint32 nLargeVnodes, + afs_uint32 nSmallVnodes, int connect, afs_uint32 volcache); extern void DiskToVolumeHeader(VolumeHeader_t * h, VolumeDiskHeader_t * dh); extern void VolumeHeaderToDisk(VolumeDiskHeader_t * dh, VolumeHeader_t * h); extern void VTakeOffline_r(register Volume * vp); extern void VTakeOffline(register Volume * vp); +extern Volume * VLookupVolume_r(Error * ec, VolId volumeId, Volume * hint); +extern void VGetVolumePath(Error * ec, VolId volumeId, char **partitionp, + char **namep); +#ifdef AFS_DEMAND_ATTACH_FS +extern Volume *VPreAttachVolumeByName(Error * ec, char *partition, char *name); +extern Volume *VPreAttachVolumeByName_r(Error * ec, char *partition, char *name); +extern Volume *VPreAttachVolumeById_r(Error * ec, char * partition, + VolId volumeId); +extern Volume *VPreAttachVolumeByVp_r(Error * ec, struct DiskPartition64 * partp, + Volume * vp, VolId volume_id); +extern Volume *VGetVolumeByVp_r(Error * ec, Volume * vp); +extern int VShutdownByPartition_r(struct DiskPartition64 * dp); +extern int VShutdownVolume_r(Volume * vp); +extern int VConnectSALV(void); +extern int VConnectSALV_r(void); +extern int VReconnectSALV(void); +extern int VReconnectSALV_r(void); +extern int VDisconnectSALV(void); +extern int VDisconnectSALV_r(void); +extern void VPrintExtendedCacheStats(int flags); +extern void VPrintExtendedCacheStats_r(int flags); +extern void VLRU_SetOptions(int option, afs_uint32 val); +extern int VSetVolHashSize(int logsize); +extern int VRequestSalvage_r(Error * ec, Volume * vp, int reason, int flags); +extern int VRegisterVolOp_r(Volume * vp, FSSYNC_VolOp_info * vopinfo); +extern int VDeregisterVolOp_r(Volume * vp); +extern void VCancelReservation_r(Volume * vp); +#endif /* AFS_DEMAND_ATTACH_FS */ +extern int VVolOpLeaveOnline_r(Volume * vp, FSSYNC_VolOp_info * vopinfo); +extern int VVolOpSetVBusy_r(Volume * vp, FSSYNC_VolOp_info * vopinfo); /* Naive formula relating number of file size to number of 1K blocks in file */ @@ -498,6 +849,26 @@ extern void VTakeOffline(register Volume * vp); * getting the most recent data. */ + +/* VUpdateVolume_r flags */ +#define VOL_UPDATE_WAIT 0x1 /* for demand attach, wait for other exclusive ops to end */ +#define VOL_UPDATE_NOFORCEOFF 0x2 /* don't force offline on failure. this is to prevent + * infinite recursion between vupdate and vforceoff */ + +/* VForceOffline_r flags */ +#define VOL_FORCEOFF_NOUPDATE 0x1 /* don't force update on forceoff. this is to prevent + * infinite recursion between vupdate and vforceoff */ + +/* VSyncVolume_r flags */ +#define VOL_SYNC_WAIT 0x1 /* for demand attach, wait for other exclusive ops to end */ + +/* VAllocBitmapEntry_r flags */ +#define VOL_ALLOC_BITMAP_WAIT 0x1 /* for demand attach, wait for other exclusive ops to end */ + +/* VRequestSalvage_r flags */ +#define VOL_SALVAGE_INVALIDATE_HEADER 0x1 /* for demand attach fs, invalidate volume header cache */ + + #if defined(NEARINODE_HINT) #define V_pref(vp,nearInode) nearInodeHash(V_id(vp),(nearInode)); (nearInode) %= V_partition(vp)->f_files #else diff --git a/src/vol/volume_inline.h b/src/vol/volume_inline.h new file mode 100644 index 000000000..89f40a6b9 --- /dev/null +++ b/src/vol/volume_inline.h @@ -0,0 +1,203 @@ +/* + * Copyright 2005-2008, Sine Nomine Associates and others. + * All Rights Reserved. + * + * This software has been released under the terms of the IBM Public + * License. For details, see the LICENSE file in the top-level source + * directory or online at http://www.openafs.org/dl/license10.html + */ + +#ifndef _AFS_VOL_VOLUME_INLINE_H +#define _AFS_VOL_VOLUME_INLINE_H 1 + +#include "volume.h" + +#ifdef AFS_HPUX_ENV +#define static_inline static __inline +#elif defined(AFS_AIX_ENV) || defined(AFS_SGI_ENV) +#define static_inline static +#else +#define static_inline static inline +#endif + + +/***************************************************/ +/* demand attach fs state machine routines */ +/***************************************************/ + +#ifdef AFS_DEMAND_ATTACH_FS +/** + * tells caller whether or not the current state requires + * exclusive access without holding glock. + * + * @param state volume state enumeration + * + * @return whether volume state is a mutually exclusive state + * @retval 0 no, state is re-entrant + * @retval 1 yes, state is mutually exclusive + * + * @note DEMAND_ATTACH_FS only + */ +static_inline int +VIsExclusiveState(VolState state) +{ + switch (state) { + case VOL_STATE_UPDATING: + case VOL_STATE_ATTACHING: + case VOL_STATE_GET_BITMAP: + case VOL_STATE_HDR_LOADING: + case VOL_STATE_HDR_ATTACHING: + case VOL_STATE_OFFLINING: + case VOL_STATE_DETACHING: + case VOL_STATE_SALVSYNC_REQ: + case VOL_STATE_VNODE_ALLOC: + case VOL_STATE_VNODE_GET: + case VOL_STATE_VNODE_CLOSE: + case VOL_STATE_VNODE_RELEASE: + return 1; + } + return 0; +} + +/** + * tell caller whether V_attachState is an error condition. + * + * @param state volume state enumeration + * + * @return whether volume state is in error state + * @retval 0 state is not an error state + * @retval 1 state is an error state + * + * @note DEMAND_ATTACH_FS only + */ +static_inline int +VIsErrorState(VolState state) +{ + switch (state) { + case VOL_STATE_ERROR: + case VOL_STATE_SALVAGING: + return 1; + } + return 0; +} + +/** + * tell caller whether V_attachState is valid. + * + * @param state volume state enumeration + * + * @return whether volume state is a mutually exclusive state + * @retval 0 no, state is not valid + * @retval 1 yes, state is a valid enumeration member + * + * @note DEMAND_ATTACH_FS only + * + * @note do we really want to treat VOL_STATE_FREED as valid? + */ +static_inline int +VIsValidState(VolState state) +{ + if ((state >= 0) && + (state < VOL_STATE_COUNT)) { + return 1; + } + return 0; +} + +/** + * increment volume-package internal refcount. + * + * @param vp volume object pointer + * + * @internal volume package internal use only + * + * @pre VOL_LOCK must be held + * + * @post volume waiters refcount is incremented + * + * @see VCancelReservation_r + * + * @note DEMAND_ATTACH_FS only + */ +static_inline void +VCreateReservation_r(Volume * vp) +{ + vp->nWaiters++; +} + +/** + * wait for the volume to change states. + * + * @param vp volume object pointer + * + * @pre VOL_LOCK held; ref held on volume + * + * @post VOL_LOCK held; volume state has changed from previous value + * + * @note DEMAND_ATTACH_FS only + */ +static_inline void +VWaitStateChange_r(Volume * vp) +{ + VolState state_save = V_attachState(vp); + + assert(vp->nWaiters || vp->nUsers); + do { + VOL_CV_WAIT(&V_attachCV(vp)); + } while (V_attachState(vp) == state_save); + assert(V_attachState(vp) != VOL_STATE_FREED); +} + +/** + * wait for blocking ops to end. + * + * @pre VOL_LOCK held; ref held on volume + * + * @post VOL_LOCK held; volume not in exclusive state + * + * @param vp volume object pointer + * + * @note DEMAND_ATTACH_FS only + */ +static_inline void +VWaitExclusiveState_r(Volume * vp) +{ + assert(vp->nWaiters || vp->nUsers); + while (VIsExclusiveState(V_attachState(vp))) { + VOL_CV_WAIT(&V_attachCV(vp)); + } + assert(V_attachState(vp) != VOL_STATE_FREED); +} + +/** + * change state, and notify other threads, + * return previous state to caller. + * + * @param vp pointer to volume object + * @param new_state new volume state value + * @pre VOL_LOCK held + * + * @post volume state changed; stats updated + * + * @return previous volume state + * + * @note DEMAND_ATTACH_FS only + */ +static_inline VolState +VChangeState_r(Volume * vp, VolState new_state) +{ + VolState old_state = V_attachState(vp); + + /* XXX profiling need to make sure these counters + * don't kill performance... */ + VStats.state_levels[old_state]--; + VStats.state_levels[new_state]++; + + V_attachState(vp) = new_state; + assert(pthread_cond_broadcast(&V_attachCV(vp)) == 0); + return old_state; +} + +#endif /* AFS_DEMAND_ATTACH_FS */ + +#endif /* _AFS_VOL_VOLUME_INLINE_H */ diff --git a/src/vol/vutil.c b/src/vol/vutil.c index 8a096e6f8..2cdddb353 100644 --- a/src/vol/vutil.c +++ b/src/vol/vutil.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/vol/vutil.c,v 1.15.2.1 2004/08/25 07:14:19 shadow Exp $"); + ("$Header: /cvs/openafs/src/vol/vutil.c,v 1.16.8.2 2008/04/04 18:17:35 shadow Exp $"); #include #include @@ -123,11 +123,12 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId) int fd, i; char headerName[32], volumePath[64]; Device device; - struct DiskPartition *partition; + struct DiskPartition64 *partition; struct VolumeDiskHeader diskHeader; IHandle_t *handle; FdHandle_t *fdP; Inode nearInode = 0; + char *part, *name; *ec = 0; memset(&vol, 0, sizeof(vol)); @@ -150,6 +151,17 @@ VCreateVolume_r(Error * ec, char *partname, VolId volumeId, VolId parentId) nearInodeHash(volumeId, nearInode); nearInode %= partition->f_files; #endif + VGetVolumePath(ec, vol.id, &part, &name); + if (*ec == VNOVOL || !strcmp(partition->name, part)) { + /* this case is ok */ + } else { + /* return EXDEV if it's a clone to an alternate partition + * otherwise assume it's a move */ + if (vol.parentId != vol.id) { + *ec = EXDEV; + return NULL; + } + } VLockPartition_r(partname); memset(&tempHeader, 0, sizeof(tempHeader)); tempHeader.stamp.magic = VOLUMEHEADERMAGIC; diff --git a/src/volser/NTMakefile b/src/volser/NTMakefile index dedc3f79f..2b1e6fa93 100644 --- a/src/volser/NTMakefile +++ b/src/volser/NTMakefile @@ -5,6 +5,8 @@ # License. For details, see the LICENSE file in the top-level source # directory or online at http://www.openafs.org/dl/license10.html +AFSDEV_AUXCDEFINES = -DFSSYNC_BUILD_CLIENT + RELDIR=volser !INCLUDE ..\config\NTMakefile.$(SYS_NAME) !INCLUDE ..\config\NTMakefile.version @@ -16,6 +18,8 @@ INCFILEDIR = $(DESTDIR)\include\afs # header file install directory INCFILES = \ $(INCFILEDIR)\volser_prototypes.h \ + $(INCFILEDIR)\vsutils_prototypes.h \ + $(INCFILEDIR)\lockprocs_prototypes.h \ $(INCFILEDIR)\volser.h \ $(INCFILEDIR)\volint.h @@ -66,7 +70,8 @@ EXEC_LIBS = \ $(DESTDIR)\lib\afs\afsacl.lib \ $(DESTDIR)\lib\afs\afsreg.lib \ $(DESTDIR)\lib\afs\afseventlog.lib \ - $(DESTDIR)\lib\cm_dns.obj + $(DESTDIR)\lib\cm_dns.obj \ + $(DESTDIR)\lib\cm_nls.obj ############################################################################ @@ -93,8 +98,10 @@ VOLSERVER_EXELIBS = \ $(DESTDIR)\lib\afs\afsprocmgmt.lib $(VOLSERVER_EXEFILE): $(VOLSERVER_EXEOBJS) $(VOLSERVER_EXELIBS) $(EXEC_LIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) ############################################################################ # Build vos @@ -118,8 +125,10 @@ VOS_EXELIBS = \ $(DESTDIR)\lib\afs\afspioctl.lib $(RS_VOS_EXEFILE): $(VOS_EXEOBJS) $(VOS_EXELIBS) $(EXEC_LIBS) - $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib + $(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib shell32.lib + $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) $(CL_VOS_EXEFILE): $(RS_VOS_EXEFILE) $(COPY) $** $@ diff --git a/src/volser/common.c b/src/volser/common.c index bb7df6838..3ccdba600 100644 --- a/src/volser/common.c +++ b/src/volser/common.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/common.c,v 1.10.2.1 2007/04/10 18:43:47 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/common.c,v 1.10.14.1 2007/04/10 18:39:56 shadow Exp $"); #include #include diff --git a/src/volser/dumpstuff.c b/src/volser/dumpstuff.c index 7af3c2765..07fdeed00 100644 --- a/src/volser/dumpstuff.c +++ b/src/volser/dumpstuff.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/dumpstuff.c,v 1.25.2.10 2008/01/21 14:11:20 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/dumpstuff.c,v 1.29.2.10 2008/03/05 21:53:31 shadow Exp $"); #include #include @@ -45,6 +45,7 @@ RCSID #include #include #include "dump.h" +#include #include #include #include "volser.h" @@ -76,7 +77,7 @@ struct iod { struct rx_call *call; /* call to which to write, might be an array */ int device; /* dump device ID for volume */ int parentId; /* dump parent ID for volume */ - struct DiskPartition *dumpPartition; /* Dump partition. */ + struct DiskPartition64 *dumpPartition; /* Dump partition. */ struct rx_call **calls; /* array of pointers to calls */ int ncalls; /* how many calls/codes in array */ int *codes; /* one return code for each call */ @@ -383,6 +384,10 @@ ReadVolumeHeader(register struct iod *iodp, VolumeDiskData * vol) if (!ReadInt32(iodp, (afs_uint32 *) & vol->dayUse)) return VOLSERREAD_DUMPERROR; break; + case 'V': + if (!ReadInt32(iodp, (afs_uint32 *) & vol->volUpdateCounter)) + return VOLSERREAD_DUMPERROR; + break; } } iod_ungetc(iodp, tag); @@ -516,7 +521,7 @@ DumpFile(struct iod *iodp, int vnode, FdHandle_t * handleP) int code = 0, error = 0; afs_int32 pad = 0, offset; afs_sfsize_t n, nbytes, howMany, howBig; - afs_foff_t lcode = 0; + afs_foff_t lcode; byte *p; #ifndef AFS_NT40_ENV struct afs_stat status; @@ -554,6 +559,7 @@ DumpFile(struct iod *iodp, int vnode, FdHandle_t * handleP) return VOLSERDUMPERROR; } howMany = (afs_sfsize_t) tstatfs.f_bsize; + Log("DumpFile: fstatfs returned block size of %lld; howMany=%lld", tstatfs.f_bsize, howMany); #else howMany = status.st_blksize; #endif /* AFS_AIX_ENV */ @@ -721,6 +727,8 @@ DumpVolumeHeader(register struct iod *iodp, register Volume * vp) code = DumpInt32(iodp, 'D', V_dayUseDate(vp)); if (!code) code = DumpInt32(iodp, 'Z', V_dayUse(vp)); + if (!code) + code = DumpInt32(iodp, 'V', V_volUpCounter(vp)); return code; } @@ -980,6 +988,10 @@ ProcessIndex(Volume * vp, VnodeClass class, afs_int32 ** Bufp, int *sizep, (size <= vcp->diskSize ? 0 : size - vcp->diskSize) >> vcp->logSize; if (nVnodes > 0) { + if (DoLogging) { + Log("RestoreVolume ProcessIndex: Set up %d inodes for volume %d\n", + nVnodes, V_id(vp)); + } Buf = (afs_int32 *) malloc(nVnodes * sizeof(afs_int32)); if (Buf == NULL) { STREAM_CLOSE(afile); @@ -999,6 +1011,9 @@ ProcessIndex(Volume * vp, VnodeClass class, afs_int32 ** Bufp, int *sizep, } offset += vcp->diskSize; } + if (DoLogging) { + Log("RestoreVolume ProcessIndex: found %d inodes\n", cnt); + } *Bufp = Buf; *sizep = nVnodes; } @@ -1139,6 +1154,10 @@ ReadVnodes(register struct iod *iodp, Volume * vp, int incremental, if (!ReadInt32(iodp, &vnode->uniquifier)) return VOLSERREAD_DUMPERROR; + + if (DoLogging) { + Log("ReadVnodes: setup %d/%d\n", vnodeNumber, vnode->uniquifier); + } while ((tag = iod_getc(iodp)) > D_MAX && tag != EOF) { haveStuff = 1; switch (tag) { @@ -1493,6 +1512,9 @@ SizeDumpVolumeHeader(register struct iod *iodp, register Volume * vp, /* if (!code) code = DumpInt32(iodp, 'Z', V_dayUse(vp)); */ FillInt64(addvar,0, 5); AddUInt64(v_size->dump_size, addvar, &v_size->dump_size); +/* if (!code) code = DumpInt32(iodp, 'V', V_volUpCounter(vp)); */ + FillInt64(addvar,0, 5); + AddUInt64(v_size->dump_size, addvar, &v_size->dump_size); return code; } diff --git a/src/volser/lockprocs.c b/src/volser/lockprocs.c index bc0eb6889..2da809a0d 100644 --- a/src/volser/lockprocs.c +++ b/src/volser/lockprocs.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/lockprocs.c,v 1.8.2.2 2007/11/26 21:21:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/lockprocs.c,v 1.8.14.4 2008/04/14 20:25:52 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -37,15 +37,16 @@ RCSID #include "volser.h" #include "lockdata.h" +#include "vsutils_prototypes.h" +#include "lockprocs_prototypes.h" + /* Finds an index in VLDB entry that matches the volume type, server, and partition. * If type is zero, will match first index of ANY type (RW, BK, or RO). * If server is zero, will match first index of ANY server and partition * Zero is a valid partition field. */ int -FindIndex(entry, server, part, type) - struct nvldbentry *entry; - afs_int32 server, part, type; +FindIndex(struct nvldbentry *entry, afs_int32 server, afs_int32 part, afs_int32 type) { int e; afs_int32 error = 0; @@ -77,9 +78,8 @@ FindIndex(entry, server, part, type) /* Changes the rw site only */ void -SetAValue(entry, oserver, opart, nserver, npart, type) - struct nvldbentry *entry; - afs_int32 oserver, opart, nserver, npart, type; +SetAValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart, + afs_int32 nserver, afs_int32 npart, afs_int32 type) { int e; afs_int32 error = 0; @@ -103,26 +103,24 @@ SetAValue(entry, oserver, opart, nserver, npart, type) /* Changes the RW site only */ void -Lp_SetRWValue(entry, oserver, opart, nserver, npart) - struct nvldbentry *entry; - afs_int32 oserver, opart, nserver, npart; +Lp_SetRWValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart, + afs_int32 nserver, afs_int32 npart) { SetAValue(entry, oserver, opart, nserver, npart, ITSRWVOL); } /* Changes the RO site only */ void -Lp_SetROValue(entry, oserver, opart, nserver, npart) - struct nvldbentry *entry; - afs_int32 oserver, opart, nserver, npart; +Lp_SetROValue(struct nvldbentry *entry, afs_int32 oserver, + afs_int32 opart, afs_int32 nserver, afs_int32 npart) { SetAValue(entry, oserver, opart, nserver, npart, ITSROVOL); } /* Returns success if this server and partition matches the RW entry */ -Lp_Match(server, part, entry) - afs_int32 server, part; - struct nvldbentry *entry; +int +Lp_Match(afs_int32 server, afs_int32 part, + struct nvldbentry *entry) { if (FindIndex(entry, server, part, ITSRWVOL) == -1) return 0; @@ -130,24 +128,22 @@ Lp_Match(server, part, entry) } /* Return the index of the RO entry (plus 1) if it exists, else return 0 */ -Lp_ROMatch(server, part, entry) - afs_int32 server, part; - struct nvldbentry *entry; +int +Lp_ROMatch(afs_int32 server, afs_int32 part, struct nvldbentry *entry) { return (FindIndex(entry, server, part, ITSROVOL) + 1); } /* Return the index of the RW entry if it exists, else return -1 */ -Lp_GetRwIndex(entry) - struct nvldbentry *entry; +int +Lp_GetRwIndex(struct nvldbentry *entry) { return (FindIndex(entry, 0, 0, ITSRWVOL)); } /*initialize queue pointed by */ void -Lp_QInit(ahead) - struct qHead *ahead; +Lp_QInit(struct qHead *ahead) { ahead->count = 0; ahead->next = NULL; @@ -155,9 +151,7 @@ Lp_QInit(ahead) /*add in front of queue */ void -Lp_QAdd(ahead, elem) - struct qHead *ahead; - struct aqueue *elem; +Lp_QAdd(struct qHead *ahead, struct aqueue *elem) { struct aqueue *temp; @@ -173,11 +167,8 @@ Lp_QAdd(ahead, elem) } } -Lp_QScan(ahead, id, success, elem) - struct qHead *ahead; - struct aqueue **elem; - afs_int32 id; - int *success; +int +Lp_QScan(struct qHead *ahead, afs_int32 id, int *success, struct aqueue **elem) { struct aqueue *cptr; @@ -197,10 +188,7 @@ Lp_QScan(ahead, id, success, elem) /*return the element in the beginning of the queue , free *the space used by that element . indicates if enumeration was ok*/ void -Lp_QEnumerate(ahead, success, elem) - struct qHead *ahead; - struct aqueue *elem; - int *success; +Lp_QEnumerate(struct qHead *ahead, int *success, struct aqueue *elem) { int i; struct aqueue *temp; @@ -223,8 +211,7 @@ Lp_QEnumerate(ahead, success, elem) } void -Lp_QTraverse(ahead) - struct qHead *ahead; +Lp_QTraverse(struct qHead *ahead) { int count; struct aqueue *old, *new; diff --git a/src/volser/lockprocs_prototypes.h b/src/volser/lockprocs_prototypes.h new file mode 100644 index 000000000..f3de763ce --- /dev/null +++ b/src/volser/lockprocs_prototypes.h @@ -0,0 +1,18 @@ +#ifndef _LOCKPROCS_PROTOTYPES_H +#define _LOCKPROCS_PROTOTYPES_H +extern int FindIndex(struct nvldbentry *entry, afs_int32 server, afs_int32 part, afs_int32 type); +extern void SetAValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart, + afs_int32 nserver, afs_int32 npart, afs_int32 type); +extern void Lp_SetRWValue(struct nvldbentry *entry, afs_int32 oserver, afs_int32 opart, + afs_int32 nserver, afs_int32 npart); +extern void Lp_SetROValue(struct nvldbentry *entry, afs_int32 oserver, + afs_int32 opart, afs_int32 nserver, afs_int32 npart); +extern int Lp_Match(afs_int32 server, afs_int32 part, struct nvldbentry *entry); +extern int Lp_ROMatch(afs_int32 server, afs_int32 part, struct nvldbentry *entry); +extern int Lp_GetRwIndex(struct nvldbentry *entry); +extern void Lp_QInit(struct qHead *ahead); +extern void Lp_QAdd(struct qHead *ahead, struct aqueue *elem); +extern int Lp_QScan(struct qHead *ahead, afs_int32 id, int *success, struct aqueue **elem); +extern void Lp_QEnumerate(struct qHead *ahead, int *success, struct aqueue *elem); +extern void Lp_QTraverse(struct qHead *ahead); +#endif \ No newline at end of file diff --git a/src/volser/physio.c b/src/volser/physio.c index bb9e6800e..c8b8325d1 100644 --- a/src/volser/physio.c +++ b/src/volser/physio.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/physio.c,v 1.11.2.1 2007/10/30 15:24:12 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/physio.c,v 1.11.14.1 2007/10/30 15:16:59 shadow Exp $"); #include #ifdef AFS_NT40_ENV diff --git a/src/volser/restorevol.c b/src/volser/restorevol.c index 0146d6792..e5324dc8a 100644 --- a/src/volser/restorevol.c +++ b/src/volser/restorevol.c @@ -43,7 +43,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/restorevol.c,v 1.13.2.3 2007/11/26 21:21:57 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/restorevol.c,v 1.14.4.3 2007/11/26 21:08:46 shadow Exp $"); #include #include @@ -218,6 +218,7 @@ struct volumeHeader { int inService; int blessed; char message[1024]; + afs_int32 volUpdateCounter; }; afs_int32 @@ -344,6 +345,9 @@ ReadVolumeHeader(count) case 'Z': vh.dayUse = ntohl(readvalue(4)); break; + case 'V': + vh.volUpdateCounter = ntohl(readvalue(4)); + break; default: done = 1; diff --git a/src/volser/vol-dump.c b/src/volser/vol-dump.c index 1c15bc5c0..ad0ace8a1 100644 --- a/src/volser/vol-dump.c +++ b/src/volser/vol-dump.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/vol-dump.c,v 1.1.2.1 2007/10/31 04:13:54 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/vol-dump.c,v 1.2.4.2 2008/03/05 21:53:31 shadow Exp $"); #include #include @@ -90,10 +90,10 @@ int VolumeChanged; /* needed by physio - leave alone */ int verbose = 0; /* Forward Declarations */ -void HandleVolume(struct DiskPartition *partP, char *name, char *filename); -Volume *AttachVolume(struct DiskPartition *dp, char *volname, +void HandleVolume(struct DiskPartition64 *partP, char *name, char *filename); +Volume *AttachVolume(struct DiskPartition64 *dp, char *volname, register struct VolumeHeader *header); -static void DoMyVolDump(Volume * vp, struct DiskPartition *dp, +static void DoMyVolDump(Volume * vp, struct DiskPartition64 *dp, char *dumpfile); #ifndef AFS_NT40_ENV @@ -118,7 +118,7 @@ ReadHdr1(IHandle_t * ih, char *to, int size, u_int magic, u_int version) Volume * -AttachVolume(struct DiskPartition * dp, char *volname, +AttachVolume(struct DiskPartition64 * dp, char *volname, register struct VolumeHeader * header) { register Volume *vp; @@ -173,7 +173,7 @@ handleit(struct cmd_syndesc *as, void *arock) int volumeId = 0; char *partName = 0; char *fileName = NULL; - struct DiskPartition *partP = NULL; + struct DiskPartition64 *partP = NULL; char name1[128]; char tmpPartName[20]; @@ -237,7 +237,7 @@ handleit(struct cmd_syndesc *as, void *arock) } void -HandleVolume(struct DiskPartition *dp, char *name, char *filename) +HandleVolume(struct DiskPartition64 *dp, char *name, char *filename) { struct VolumeHeader header; struct VolumeDiskHeader diskHeader; @@ -508,6 +508,8 @@ DumpVolumeHeader(int dumpfd, register Volume * vp) code = DumpInt32(dumpfd, 'D', V_dayUseDate(vp)); if (!code) code = DumpInt32(dumpfd, 'Z', V_dayUse(vp)); + if (!code) + code = DumpInt32(dumpfd, 'V', V_volUpCounter(vp)); return code; } @@ -831,7 +833,7 @@ DumpPartial(int dumpfd, register Volume * vp, afs_int32 fromtime, static void -DoMyVolDump(Volume * vp, struct DiskPartition *dp, char *dumpfile) +DoMyVolDump(Volume * vp, struct DiskPartition64 *dp, char *dumpfile) { int code = 0; int fromtime = 0; diff --git a/src/volser/volint.xg b/src/volser/volint.xg index 62347d5ff..292536fc8 100644 --- a/src/volser/volint.xg +++ b/src/volser/volint.xg @@ -50,6 +50,7 @@ statindex 16 #define VOLCONVERTRO 65536 #define VOLGETSIZE 65537 #define VOLDUMPV2 65538 +#define VOLDISKPART64 65539 /* Bits for flags for DumpV2 */ %#define VOLDUMPV2_OMITDIRS 1 @@ -112,7 +113,7 @@ struct volintInfo { afs_int32 flags; /* used by the backup system */ afs_int32 spare0; /* Used to hold the minquota value */ afs_int32 spare1; /* Used to hold the weekuse value */ - afs_int32 spare2; + afs_int32 spare2; /* Used to hold volUpdateCounter */ afs_int32 spare3; }; @@ -209,6 +210,16 @@ struct diskPartition { }; +struct diskPartition64 { + char name[256]; /* Mounted partition name */ + char devName[256]; + int lock_fd; + afs_int64 totalUsable; + afs_int64 free; + afs_int64 minFree; + +}; + struct restoreCookie { char name[32]; afs_int32 type; @@ -419,3 +430,7 @@ proc DumpV2( IN afs_int32 flags ) split = VOLDUMPV2; +proc PartitionInfo64( + IN string name<>, + OUT struct diskPartition64 *partition +) = VOLDISKPART64; diff --git a/src/volser/volmain.c b/src/volser/volmain.c index 873d2c600..d1a785942 100644 --- a/src/volser/volmain.c +++ b/src/volser/volmain.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/volmain.c,v 1.18.2.14 2008/03/10 22:35:37 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/volmain.c,v 1.22.2.11 2008/03/27 16:20:39 shadow Exp $"); #include #include @@ -49,7 +49,6 @@ RCSID #include #include #include -#include #include #include #include @@ -85,7 +84,7 @@ extern void RXSTATS_ExecuteRequest(); struct afsconf_dir *tdir; static afs_int32 runningCalls = 0; int DoLogging = 0; -#define MAXLWP 16 +#define MAXLWP 128 int lwps = 9; int udpBufSize = 0; /* UDP buffer size for receive */ @@ -518,12 +517,10 @@ main(int argc, char **argv) if (lwps < 4) lwps = 4; rx_SetMaxProcs(service, lwps); -#if defined(AFS_XBSD_ENV) - rx_SetStackSize(service, (128 * 1024)); -#elif defined(AFS_SGI_ENV) - rx_SetStackSize(service, (48 * 1024)); +#ifdef AFS_SGI_ENV + rx_SetStackSize(service, 49152); #else - rx_SetStackSize(service, (32 * 1024)); + rx_SetStackSize(service, 32768); #endif if (rxkadDisableDotCheck) { diff --git a/src/volser/volprocs.c b/src/volser/volprocs.c index 5c8ae8d63..0e329480b 100644 --- a/src/volser/volprocs.c +++ b/src/volser/volprocs.c @@ -5,13 +5,15 @@ * This software has been released under the terms of the IBM Public * License. For details, see the LICENSE file in the top-level source * directory or online at http://www.openafs.org/dl/license10.html + * + * Portions Copyright (c) 2007-2008 Sine Nomine Associates */ #include #include RCSID - ("$Header: /cvs/openafs/src/volser/volprocs.c,v 1.34.2.13 2008/03/17 17:14:21 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/volprocs.c,v 1.42.2.16 2008/07/16 04:15:57 shadow Exp $"); #include #include @@ -42,7 +44,6 @@ RCSID #include #include #include -#include #include #include #include @@ -52,8 +53,10 @@ RCSID #endif #include #include +#include #include #include "vol.h" +#include #include #include #include "afs/audit.h" @@ -98,7 +101,7 @@ VolSetIdsTypes(), VolSetDate(), VolSetFlags(); int VPFullUnlock() { - register struct DiskPartition *tp; + register struct DiskPartition64 *tp; for (tp = DiskPartitionList; tp; tp = tp->next) { if (tp->lock_fd != -1) { close(tp->lock_fd); /* releases flock held on this partition */ @@ -286,6 +289,27 @@ SAFSVolPartitionInfo(struct rx_call *acid, char *pname, struct diskPartition *partition) { afs_int32 code; + struct diskPartition64 *dp = (struct diskPartition64 *) + malloc(sizeof(struct diskPartition64)); + + code = VolPartitionInfo(acid, pname, dp); + if (!code) { + strncpy(partition->name, dp->name, 32); + strncpy(partition->devName, dp->devName, 32); + partition->lock_fd = dp->lock_fd; + partition->free=RoundInt64ToInt32(dp->free); + partition->minFree=RoundInt64ToInt32(dp->minFree); + } + free(dp); + osi_auditU(acid, VS_ParInfEvent, code, AUD_STR, pname, AUD_END); + return code; +} + +afs_int32 +SAFSVolPartitionInfo64(struct rx_call *acid, char *pname, struct diskPartition64 + *partition) +{ + afs_int32 code; code = VolPartitionInfo(acid, pname, partition); osi_auditU(acid, VS_ParInfEvent, code, AUD_STR, pname, AUD_END); @@ -293,10 +317,10 @@ SAFSVolPartitionInfo(struct rx_call *acid, char *pname, struct diskPartition } afs_int32 -VolPartitionInfo(struct rx_call *acid, char *pname, struct diskPartition +VolPartitionInfo(struct rx_call *acid, char *pname, struct diskPartition64 *partition) { - register struct DiskPartition *dp; + register struct DiskPartition64 *dp; /* if (!afsconf_SuperUser(tdir, acid, caller)) return VOLSERBAD_ACCESS; @@ -328,7 +352,6 @@ SAFSVolNukeVolume(struct rx_call *acid, afs_int32 apartID, afs_int32 avolID) afs_int32 VolNukeVolume(struct rx_call *acid, afs_int32 apartID, afs_int32 avolID) { - register char *tp; char partName[50]; afs_int32 error; register afs_int32 code; @@ -341,10 +364,8 @@ VolNukeVolume(struct rx_call *acid, afs_int32 apartID, afs_int32 avolID) if (DoLogging) Log("%s is executing VolNukeVolume %u\n", caller, avolID); - tp = volutil_PartitionName(apartID); - if (!tp) + if (volutil_PartitionName2_r(apartID, partName, sizeof(partName)) != 0) return VOLSERNOVOL; - strcpy(partName, tp); /* remember it for later */ /* we first try to attach the volume in update mode, so that the file * server doesn't try to use it (and abort) while (or after) we delete it. * If we don't get the volume, that's fine, too. We just won't put it back. @@ -486,6 +507,7 @@ VolDeleteVolume(struct rx_call *acid, afs_int32 atrans) strcpy(tt->lastProcName, "DeleteVolume"); tt->rxCallPtr = acid; VPurgeVolume(&error, tt->volume); /* don't check error code, it is not set! */ + V_destroyMe(tt->volume) = DESTROY_ME; /* so endtrans does the right fssync opcode */ tt->vflags |= VTDeleted; /* so we know not to do anything else to it */ tt->rxCallPtr = (struct rx_call *)0; if (TRELE(tt)) @@ -821,6 +843,11 @@ VolReClone(struct rx_call *acid, afs_int32 atrans, afs_int32 cloneId) LogError(error); goto fail; } + /* VUpdateVolume succeeded. Mark it in service so there's no window + * between FSYNC_VOL_ON and VolSetFlags where it's offline with no + * specialStatus; this is a reclone and this volume started online + */ + V_inService(clonevp) = 1; VDetachVolume(&error, clonevp); /* allow file server to get it's hands on it */ clonevp = NULL; VUpdateVolume(&error, originalvp); @@ -839,8 +866,8 @@ VolReClone(struct rx_call *acid, afs_int32 atrans, afs_int32 cloneId) DeleteTrans(ttc, 1); { - struct DiskPartition *tpartp = originalvp->partition; - FSYNC_askfs(cloneId, tpartp->name, FSYNC_RESTOREVOLUME, 0); + struct DiskPartition64 *tpartp = originalvp->partition; + FSYNC_VolOp(cloneId, tpartp->name, FSYNC_VOL_BREAKCBKS, 0, NULL); } return 0; @@ -1041,7 +1068,6 @@ VolSetFlags(struct rx_call *acid, afs_int32 atid, afs_int32 aflags) } VUpdateVolume(&error, vp); tt->vflags = aflags; - tt->rxCallPtr = (struct rx_call *)0; if (TRELE(tt) && !error) return VOLSERTRELE_ERROR; @@ -1372,8 +1398,7 @@ VolRestore(struct rx_call *acid, afs_int32 atrans, afs_int32 aflags, DFlushVolume(V_parentId(tt->volume)); /* Ensure dir buffers get dropped */ code = RestoreVolume(acid, tt->volume, (aflags & 1), cookie); /* last is incrementalp */ - FSYNC_askfs(tt->volid, NULL, FSYNC_RESTOREVOLUME, 0l); /*break call backs on the - * restored volume */ + FSYNC_VolOp(tt->volid, NULL, FSYNC_VOL_BREAKCBKS, 0l, NULL); tt->rxCallPtr = (struct rx_call *)0; tcode = TRELE(tt); @@ -1425,6 +1450,7 @@ VolSetForwarding(struct rx_call *acid, afs_int32 atid, afs_int32 anewsite) { register struct volser_trans *tt; char caller[MAXKTCNAMELEN]; + char partName[16]; if (!afsconf_SuperUser(tdir, acid, caller)) return VOLSERBAD_ACCESS; /*not a super user */ @@ -1439,7 +1465,10 @@ VolSetForwarding(struct rx_call *acid, afs_int32 atid, afs_int32 anewsite) } strcpy(tt->lastProcName, "SetForwarding"); tt->rxCallPtr = acid; - FSYNC_askfs(tt->volid, NULL, FSYNC_MOVEVOLUME, anewsite); + if (volutil_PartitionName2_r(tt->partition, partName, sizeof(partName)) != 0) { + partName[0] = '\0'; + } + FSYNC_VolOp(tt->volid, partName, FSYNC_VOL_MOVE, anewsite, NULL); tt->rxCallPtr = (struct rx_call *)0; if (TRELE(tt)) return VOLSERTRELE_ERROR; @@ -1561,6 +1590,8 @@ VolSetInfo(struct rx_call *acid, afs_int32 atrans, td->creationDate = astatus->creationDate; if (astatus->updateDate != -1) td->updateDate = astatus->updateDate; + if (astatus->spare2 != -1) + td->volUpdateCounter = (unsigned int)astatus->spare2; VUpdateVolume(&error, tv); tt->rxCallPtr = (struct rx_call *)0; if (TRELE(tt)) @@ -1658,8 +1689,7 @@ VolListPartitions(struct rx_call *acid, struct pIDs *partIds) namehead[7] = '\0'; for (i = 0; i < 26; i++) { namehead[6] = i + 'a'; - if (VGetPartition(namehead, 0)) - partIds->partIds[i] = VGetPartition(namehead, 0) ? i : -1; + partIds->partIds[i] = VGetPartition(namehead, 0) ? i : -1; } return 0; @@ -1683,13 +1713,16 @@ XVolListPartitions(struct rx_call *acid, struct partEntries *pEntries) struct stat rbuf, pbuf; char namehead[9]; struct partList partList; - struct DiskPartition *dp; + struct DiskPartition64 *dp; int i, j = 0, k; strcpy(namehead, "/vicep"); /*7 including null terminator */ /* Only report attached partitions */ for (i = 0; i < VOLMAXPARTS; i++) { +#ifdef AFS_DEMAND_ATTACH_FS + dp = VGetPartitionById(i, 0); +#else if (i < 26) { namehead[6] = i + 'a'; namehead[7] = '\0'; @@ -1700,6 +1733,7 @@ XVolListPartitions(struct rx_call *acid, struct partEntries *pEntries) namehead[8] = '\0'; } dp = VGetPartition(namehead, 0); +#endif if (dp) partList.partId[j++] = i; } @@ -1753,6 +1787,330 @@ GetNextVol(DIR * dirp, char *volname, afs_int32 * volid) } +/** + * volint vol info structure type. + */ +typedef enum { + VOLINT_INFO_TYPE_BASE, /**< volintInfo type */ + VOLINT_INFO_TYPE_EXT /**< volintXInfo type */ +} volint_info_type_t; + +/** + * handle to various on-wire vol info types. + */ +typedef struct { + volint_info_type_t volinfo_type; + union { + void * opaque; + volintInfo * base; + volintXInfo * ext; + } volinfo_ptr; +} volint_info_handle_t; + +/** + * store value to a field at the appropriate location in on-wire structure. + */ +#define VOLINT_INFO_STORE(handle, name, val) \ + do { \ + if ((handle)->volinfo_type == VOLINT_INFO_TYPE_BASE) { \ + (handle)->volinfo_ptr.base->name = (val); \ + } else { \ + (handle)->volinfo_ptr.ext->name = (val); \ + } \ + } while(0) + +/** + * get pointer to appropriate offset of field in on-wire structure. + */ +#define VOLINT_INFO_PTR(handle, name) \ + (((handle)->volinfo_type == VOLINT_INFO_TYPE_BASE) ? \ + &((handle)->volinfo_ptr.base->name) : \ + &((handle)->volinfo_ptr.ext->name)) + +/** + * fill in appropriate type of on-wire volume metadata structure. + * + * @param vp pointer to volume object + * @param hdr pointer to volume disk data object + * @param handle pointer to wire format handle object + * + * @pre handle object must have a valid pointer and enumeration value + * + * @note passing a NULL value for vp means that the fileserver doesn't + * know about this particular volume, thus implying it is offline. + * + * @return operation status + * @retval 0 success + * @retval 1 failure + */ +static int +FillVolInfo(Volume * vp, VolumeDiskData * hdr, volint_info_handle_t * handle) +{ + unsigned int numStatBytes, now; + + /*read in the relevant info */ + strcpy(VOLINT_INFO_PTR(handle, name), hdr->name); + VOLINT_INFO_STORE(handle, status, VOK); /*its ok */ + VOLINT_INFO_STORE(handle, volid, hdr->id); + VOLINT_INFO_STORE(handle, type, hdr->type); /*if ro volume */ + VOLINT_INFO_STORE(handle, cloneID, hdr->cloneId); /*if rw volume */ + VOLINT_INFO_STORE(handle, backupID, hdr->backupId); + VOLINT_INFO_STORE(handle, parentID, hdr->parentId); + VOLINT_INFO_STORE(handle, copyDate, hdr->copyDate); + VOLINT_INFO_STORE(handle, size, hdr->diskused); + VOLINT_INFO_STORE(handle, maxquota, hdr->maxquota); + VOLINT_INFO_STORE(handle, filecount, hdr->filecount); + now = FT_ApproxTime(); + if ((now - hdr->dayUseDate) > OneDay) { + VOLINT_INFO_STORE(handle, dayUse, 0); + } else { + VOLINT_INFO_STORE(handle, dayUse, hdr->dayUse); + } + VOLINT_INFO_STORE(handle, creationDate, hdr->creationDate); + VOLINT_INFO_STORE(handle, accessDate, hdr->accessDate); + VOLINT_INFO_STORE(handle, updateDate, hdr->updateDate); + VOLINT_INFO_STORE(handle, backupDate, hdr->backupDate); + +#ifdef AFS_DEMAND_ATTACH_FS + /* + * for DAFS, we "lie" about volume state -- + * instead of returning the raw state from the disk header, + * we compute state based upon the fileserver's internal + * in-core state enumeration value reported to us via fssync, + * along with the blessed and inService flags from the header. + * -- tkeiser 11/27/2007 + */ + if (!vp || + (V_attachState(vp) == VOL_STATE_UNATTACHED) || + VIsErrorState(V_attachState(vp)) || + !hdr->inService || + !hdr->blessed) { + VOLINT_INFO_STORE(handle, inUse, 0); + } else { + VOLINT_INFO_STORE(handle, inUse, 1); + } +#else + if (hdr->inUse == fileServer) { + VOLINT_INFO_STORE(handle, inUse, 1); + } else { + VOLINT_INFO_STORE(handle, inUse, 0); + } +#endif + + + switch(handle->volinfo_type) { + case VOLINT_INFO_TYPE_BASE: + +#ifdef AFS_DEMAND_ATTACH_FS + /* see comment above where we set inUse bit */ + if (hdr->needsSalvaged || + (vp && VIsErrorState(V_attachState(vp)))) { + handle->volinfo_ptr.base->needsSalvaged = 1; + } else { + handle->volinfo_ptr.base->needsSalvaged = 0; + } +#else + handle->volinfo_ptr.base->needsSalvaged = hdr->needsSalvaged; +#endif + handle->volinfo_ptr.base->destroyMe = hdr->destroyMe; + handle->volinfo_ptr.base->spare0 = hdr->minquota; + handle->volinfo_ptr.base->spare1 = + (long)hdr->weekUse[0] + + (long)hdr->weekUse[1] + + (long)hdr->weekUse[2] + + (long)hdr->weekUse[3] + + (long)hdr->weekUse[4] + + (long)hdr->weekUse[5] + + (long)hdr->weekUse[6]; + handle->volinfo_ptr.base->flags = 0; + handle->volinfo_ptr.base->spare2 = hdr->volUpdateCounter; + handle->volinfo_ptr.base->spare3 = 0; + break; + + + case VOLINT_INFO_TYPE_EXT: + numStatBytes = + 4 * ((2 * VOLINT_STATS_NUM_RWINFO_FIELDS) + + (4 * VOLINT_STATS_NUM_TIME_FIELDS)); + + /* + * Copy out the stat fields in a single operation. + */ + if ((now - hdr->dayUseDate) > OneDay) { + memset((char *)&(handle->volinfo_ptr.ext->stat_reads[0]), + 0, numStatBytes); + } else { + memcpy((char *)&(handle->volinfo_ptr.ext->stat_reads[0]), + (char *)&(hdr->stat_reads[0]), + numStatBytes); + } + break; + } + + return 0; +} + +/** + * get struct Volume out of the fileserver. + * + * @param[in] volumeId volumeId for which we want state information + * @param[in] pname partition name string + * @param[inout] vp pointer to pointer to Volume object which + * will be populated (see note) + * + * @return operation status + * @retval 0 success + * @retval non-zero failure + * + * @note if FSYNC_VolOp fails in certain ways, *vp will be set to NULL + * + * @internal + */ +static int +GetVolObject(afs_uint32 volumeId, char * pname, Volume ** vp) +{ + int code; + SYNC_response res; + + res.hdr.response_len = sizeof(res.hdr); + res.payload.buf = *vp; + res.payload.len = sizeof(Volume); + + code = FSYNC_VolOp(volumeId, + pname, + FSYNC_VOL_QUERY, + 0, + &res); + + if (code != SYNC_OK) { + switch (res.hdr.reason) { + case FSYNC_WRONG_PART: + case FSYNC_UNKNOWN_VOLID: + *vp = NULL; + code = SYNC_OK; + break; + } + } + + return code; +} + +/** + * mode of volume list operation. + */ +typedef enum { + VOL_INFO_LIST_SINGLE, /**< performing a single volume list op */ + VOL_INFO_LIST_MULTIPLE /**< performing a multi-volume list op */ +} vol_info_list_mode_t; + +/** + * abstract interface to populate wire-format volume metadata structures. + * + * @param[in] partId partition id + * @param[in] volumeId volume id + * @param[in] pname partition name + * @param[in] volname volume file name + * @param[in] handle handle to on-wire volume metadata object + * @param[in] mode listing mode + * + * @return operation status + * @retval 0 success + * @retval -2 DESTROY_ME flag is set + * @retval -1 general failure; some data filled in + * @retval -3 couldn't create vtrans; some data filled in + */ +static int +GetVolInfo(afs_uint32 partId, + afs_uint32 volumeId, + char * pname, + char * volname, + volint_info_handle_t * handle, + vol_info_list_mode_t mode) +{ + int code = -1; + int reason; + afs_int32 error; + struct volser_trans *ttc = NULL; + struct Volume fs_tv_buf, *fs_tv = &fs_tv_buf, *tv = NULL; + + ttc = NewTrans(volumeId, partId); + if (!ttc) { + code = -3; + VOLINT_INFO_STORE(handle, status, VBUSY); + VOLINT_INFO_STORE(handle, volid, volumeId); + goto drop; + } + + tv = VAttachVolumeByName(&error, pname, volname, V_PEEK); + if (error) { + Log("1 Volser: GetVolInfo: Could not attach volume %u (%s:%s) error=%d\n", + volumeId, pname, volname, error); + goto drop; + } + + /* + * please note that destroyMe and needsSalvaged checks used to be ordered + * in the opposite manner for ListVolumes and XListVolumes. I think it's + * more correct to check destroyMe before needsSalvaged. + * -- tkeiser 11/28/2007 + */ + + if (tv->header->diskstuff.destroyMe == DESTROY_ME) { + switch (mode) { + case VOL_INFO_LIST_MULTIPLE: + code = -2; + goto drop; + + case VOL_INFO_LIST_SINGLE: + Log("1 Volser: GetVolInfo: Volume %u (%s:%s) will be destroyed on next salvage\n", + volumeId, pname, volname); + + default: + goto drop; + } + } + + if (tv->header->diskstuff.needsSalvaged) { + /*this volume will be salvaged */ + Log("1 Volser: GetVolInfo: Volume %u (%s:%s) needs to be salvaged\n", + volumeId, pname, volname); + goto drop; + } + +#ifdef AFS_DEMAND_ATTACH_FS + if (GetVolObject(volumeId, pname, &fs_tv) != SYNC_OK) { + goto drop; + } +#endif + + /* ok, we have all the data we need; fill in the on-wire struct */ + code = FillVolInfo(fs_tv, &tv->header->diskstuff, handle); + + + drop: + if (code == -1) { + VOLINT_INFO_STORE(handle, status, 0); + strcpy(VOLINT_INFO_PTR(handle, name), volname); + VOLINT_INFO_STORE(handle, volid, volumeId); + } + if (tv) { + VDetachVolume(&error, tv); + tv = NULL; + if (error) { + VOLINT_INFO_STORE(handle, status, 0); + strcpy(VOLINT_INFO_PTR(handle, name), volname); + Log("1 Volser: GetVolInfo: Could not detach volume %u (%s:%s)\n", + volumeId, pname, volname); + } + } + if (ttc) { + DeleteTrans(ttc, 1); + ttc = NULL; + } + return code; +} + + /*return the header information about the */ afs_int32 SAFSVolListOneVolume(struct rx_call *acid, afs_int32 partid, afs_int32 @@ -1770,15 +2128,15 @@ VolListOneVolume(struct rx_call *acid, afs_int32 partid, afs_int32 volumeId, volEntries *volumeInfo) { volintInfo *pntr; - register struct Volume *tv; - struct DiskPartition *partP; - struct volser_trans *ttc; + struct DiskPartition64 *partP; char pname[9], volname[20]; afs_int32 error = 0; DIR *dirp; afs_int32 volid; int found = 0; unsigned int now; + int code; + volint_info_handle_t handle; volumeInfo->volEntries_val = (volintInfo *) malloc(sizeof(volintInfo)); if (!volumeInfo->volEntries_val) @@ -1792,9 +2150,8 @@ VolListOneVolume(struct rx_call *acid, afs_int32 partid, afs_int32 dirp = opendir(VPartitionPath(partP)); if (dirp == NULL) return VOLSERILLEGAL_PARTITION; + strcpy(volname, ""); - ttc = (struct volser_trans *)0; - tv = (Volume *) 0; /* volume not attached */ while (strcmp(volname, "EOD") && !found) { /*while there are more volumes in the partition */ @@ -1805,102 +2162,30 @@ VolListOneVolume(struct rx_call *acid, afs_int32 partid, afs_int32 if (volid == volumeId) { /*copy other things too */ found = 1; -#ifndef AFS_PTHREAD_ENV - IOMGR_Poll(); /*make sure that the client doesnot time out */ -#endif - ttc = NewTrans(volid, partid); - if (!ttc) { - pntr->status = VBUSY; - pntr->volid = volid; - goto drop; - } - tv = VAttachVolumeByName(&error, pname, volname, V_READONLY); - if (error) { - pntr->status = 0; /*things are messed up */ - strcpy(pntr->name, volname); - pntr->volid = volid; - Log("1 Volser: ListVolumes: Could not attach volume %u (%s:%s), error=%d\n", volid, pname, volname, error); - goto drop; - } - if (tv->header->diskstuff.destroyMe == DESTROY_ME) { - /*this volume will be salvaged */ - pntr->status = 0; - strcpy(pntr->name, volname); - pntr->volid = volid; - Log("1 Volser: ListVolumes: Volume %u (%s) will be destroyed on next salvage\n", volid, volname); - goto drop; - } - - if (tv->header->diskstuff.needsSalvaged) { - /*this volume will be salvaged */ - pntr->status = 0; - strcpy(pntr->name, volname); - pntr->volid = volid; - Log("1 Volser: ListVolumes: Volume %u (%s) needs to be salvaged\n", volid, volname); - goto drop; - } - - /*read in the relevant info */ - pntr->status = VOK; /*its ok */ - pntr->volid = tv->header->diskstuff.id; - strcpy(pntr->name, tv->header->diskstuff.name); - pntr->type = tv->header->diskstuff.type; /*if ro volume */ - pntr->cloneID = tv->header->diskstuff.cloneId; /*if rw volume */ - pntr->backupID = tv->header->diskstuff.backupId; - pntr->parentID = tv->header->diskstuff.parentId; - pntr->copyDate = tv->header->diskstuff.copyDate; - pntr->inUse = tv->header->diskstuff.inUse; - pntr->size = tv->header->diskstuff.diskused; - pntr->needsSalvaged = tv->header->diskstuff.needsSalvaged; - pntr->destroyMe = tv->header->diskstuff.destroyMe; - pntr->maxquota = tv->header->diskstuff.maxquota; - pntr->filecount = tv->header->diskstuff.filecount; - now = FT_ApproxTime(); - if (now - tv->header->diskstuff.dayUseDate > OneDay) - pntr->dayUse = 0; - else - pntr->dayUse = tv->header->diskstuff.dayUse; - pntr->creationDate = tv->header->diskstuff.creationDate; - pntr->accessDate = tv->header->diskstuff.accessDate; - pntr->updateDate = tv->header->diskstuff.updateDate; - pntr->backupDate = tv->header->diskstuff.backupDate; - pntr->spare0 = tv->header->diskstuff.minquota; - pntr->spare1 = - (long)tv->header->diskstuff.weekUse[0] + - (long)tv->header->diskstuff.weekUse[1] + - (long)tv->header->diskstuff.weekUse[2] + - (long)tv->header->diskstuff.weekUse[3] + - (long)tv->header->diskstuff.weekUse[4] + - (long)tv->header->diskstuff.weekUse[5] + - (long)tv->header->diskstuff.weekUse[6]; - pntr->flags = pntr->spare2 = pntr->spare3 = (long)0; - VDetachVolume(&error, tv); /*free the volume */ - tv = (Volume *) 0; - if (error) { - pntr->status = 0; /*things are messed up */ - strcpy(pntr->name, volname); - Log("1 Volser: ListVolumes: Could not detach volume %s\n", - volname); - goto drop; - } + break; } + GetNextVol(dirp, volname, &volid); } - drop: - if (tv) { - VDetachVolume(&error, tv); - tv = (Volume *) 0; - } - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; + + if (found) { +#ifndef AFS_PTHREAD_ENV + IOMGR_Poll(); /*make sure that the client does not time out */ +#endif + + handle.volinfo_type = VOLINT_INFO_TYPE_BASE; + handle.volinfo_ptr.base = volumeInfo->volEntries_val; + + code = GetVolInfo(partid, + volid, + pname, + volname, + &handle, + VOL_INFO_LIST_SINGLE); } closedir(dirp); - if (found) - return 0; - else - return ENODEV; + return (found) ? 0 : ENODEV; } /*------------------------------------------------------------------------ @@ -1943,18 +2228,15 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, { /*SAFSVolXListOneVolume */ volintXInfo *xInfoP; /*Ptr to the extended vol info */ - register struct Volume *tv; /*Volume ptr */ - struct volser_trans *ttc; /*Volume transaction ptr */ - struct DiskPartition *partP; /*Ptr to partition */ + struct DiskPartition64 *partP; /*Ptr to partition */ char pname[9], volname[20]; /*Partition, volume names */ afs_int32 error; /*Error code */ - afs_int32 code; /*Return code */ DIR *dirp; /*Partition directory ptr */ afs_int32 currVolID; /*Current volume ID */ int found = 0; /*Did we find the volume we need? */ - struct VolumeDiskData *volDiskDataP; /*Ptr to on-disk volume data */ - int numStatBytes; /*Num stat bytes to copy per volume */ unsigned int now; + int code; + volint_info_handle_t handle; /* * Set up our pointers for action, marking our structure to hold exactly @@ -1984,18 +2266,13 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, if (dirp == NULL) return (VOLSERILLEGAL_PARTITION); + strcpy(volname, ""); + /* * Sweep through the partition directory, looking for the desired entry. * First, of course, figure out how many stat bytes to copy out of each * volume. */ - numStatBytes = - 4 * ((2 * VOLINT_STATS_NUM_RWINFO_FIELDS) + - (4 * VOLINT_STATS_NUM_TIME_FIELDS)); - strcpy(volname, ""); - ttc = (struct volser_trans *)0; /*No transaction yet */ - tv = (Volume *) 0; /*Volume not yet attached */ - while (strcmp(volname, "EOD") && !found) { /* * If this is not a volume, move on to the next entry in the @@ -2013,122 +2290,27 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, * doesn't time out) and to set up a transaction on the volume. */ found = 1; -#ifndef AFS_PTHREAD_ENV - IOMGR_Poll(); -#endif - ttc = NewTrans(currVolID, a_partID); - if (!ttc) { - /* - * Couldn't get a transaction on this volume; let our caller - * know it's busy. - */ - xInfoP->status = VBUSY; - xInfoP->volid = currVolID; - goto drop; - } - - /* - * Attach the volume, give up on the volume if we can't. - */ - tv = VAttachVolumeByName(&error, pname, volname, V_READONLY); - if (error) { - xInfoP->status = 0; /*things are messed up */ - strcpy(xInfoP->name, volname); - xInfoP->volid = currVolID; - Log("1 Volser: XListOneVolume: Could not attach volume %u\n", - currVolID); - goto drop; - } - - /* - * Also bag out on this volume if it's been marked as needing a - * salvage or to-be-destroyed. - */ - volDiskDataP = &(tv->header->diskstuff); - if (volDiskDataP->destroyMe == DESTROY_ME) { - xInfoP->status = 0; - strcpy(xInfoP->name, volname); - xInfoP->volid = currVolID; - Log("1 Volser: XListOneVolume: Volume %u will be destroyed on next salvage\n", currVolID); - goto drop; - } + break; + } /*Found desired volume */ - if (volDiskDataP->needsSalvaged) { - xInfoP->status = 0; - strcpy(xInfoP->name, volname); - xInfoP->volid = currVolID; - Log("1 Volser: XListOneVolume: Volume %u needs to be salvaged\n", currVolID); - goto drop; - } + GetNextVol(dirp, volname, &currVolID); + } - /* - * Pull out the desired info and stuff it into the area we'll be - * returning to our caller. - */ - strcpy(xInfoP->name, volDiskDataP->name); - xInfoP->volid = volDiskDataP->id; - xInfoP->type = volDiskDataP->type; - xInfoP->backupID = volDiskDataP->backupId; - xInfoP->parentID = volDiskDataP->parentId; - xInfoP->cloneID = volDiskDataP->cloneId; - xInfoP->status = VOK; - xInfoP->copyDate = volDiskDataP->copyDate; - xInfoP->inUse = volDiskDataP->inUse; - xInfoP->creationDate = volDiskDataP->creationDate; - xInfoP->accessDate = volDiskDataP->accessDate; - xInfoP->updateDate = volDiskDataP->updateDate; - xInfoP->backupDate = volDiskDataP->backupDate; - xInfoP->filecount = volDiskDataP->filecount; - xInfoP->maxquota = volDiskDataP->maxquota; - xInfoP->size = volDiskDataP->diskused; + if (found) { +#ifndef AFS_PTHREAD_ENV + IOMGR_Poll(); +#endif - /* - * Copy out the stat fields in a single operation. - */ - now = FT_ApproxTime(); - if (now - volDiskDataP->dayUseDate > OneDay) { - xInfoP->dayUse = 0; - memset((char *)&(xInfoP->stat_reads[0]), 0, numStatBytes); - } else { - xInfoP->dayUse = volDiskDataP->dayUse; - memcpy((char *)&(xInfoP->stat_reads[0]), - (char *)&(volDiskDataP->stat_reads[0]), numStatBytes); - } + handle.volinfo_type = VOLINT_INFO_TYPE_EXT; + handle.volinfo_ptr.ext = a_volumeXInfoP->volXEntries_val; - /* - * We're done copying. Detach the volume and iterate (at this - * point, since we found our volume, we'll then drop out of the - * loop). - */ - VDetachVolume(&error, tv); - tv = (Volume *) 0; - if (error) { - xInfoP->status = 0; - strcpy(xInfoP->name, volname); - Log("1 Volser: XListOneVolumes Couldn't detach volume %s\n", - volname); - goto drop; - } - - /* - * At this point, we're golden. - */ - code = 0; - } /*Found desired volume */ - GetNextVol(dirp, volname, &currVolID); - } + code = GetVolInfo(a_partID, + a_volID, + pname, + volname, + &handle, + VOL_INFO_LIST_SINGLE); - /* - * Drop the transaction we have for this volume. - */ - drop: - if (tv) { - VDetachVolume(&error, tv); - tv = (Volume *) 0; - } - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; } /* @@ -2136,8 +2318,7 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, * return the proper value. */ closedir(dirp); - return (code); - + return (found) ? 0 : ENODEV; } /*SAFSVolXListOneVolume */ /*returns all the volumes on partition partid. If flags = 1 then all the @@ -2158,15 +2339,15 @@ VolListVolumes(struct rx_call *acid, afs_int32 partid, afs_int32 flags, volEntries *volumeInfo) { volintInfo *pntr; - register struct Volume *tv; - struct DiskPartition *partP; - struct volser_trans *ttc; + struct DiskPartition64 *partP; afs_int32 allocSize = 1000; /*to be changed to a larger figure */ char pname[9], volname[20]; afs_int32 error = 0; DIR *dirp; afs_int32 volid; unsigned int now; + int code; + volint_info_handle_t handle; volumeInfo->volEntries_val = (volintInfo *) malloc(allocSize * sizeof(volintInfo)); @@ -2182,9 +2363,8 @@ VolListVolumes(struct rx_call *acid, afs_int32 partid, afs_int32 flags, if (dirp == NULL) return VOLSERILLEGAL_PARTITION; strcpy(volname, ""); + while (strcmp(volname, "EOD")) { /*while there are more partitions in the partition */ - ttc = (struct volser_trans *)0; /* new one for each pass */ - tv = (Volume *) 0; /* volume not attached */ if (!strcmp(volname, "")) { /* its not a volume, fetch next file */ GetNextVol(dirp, volname, &volid); @@ -2193,87 +2373,28 @@ VolListVolumes(struct rx_call *acid, afs_int32 partid, afs_int32 flags, if (flags) { /*copy other things too */ #ifndef AFS_PTHREAD_ENV - IOMGR_Poll(); /*make sure that the client doesnot time out */ + IOMGR_Poll(); /*make sure that the client does not time out */ #endif - ttc = NewTrans(volid, partid); - if (!ttc) { - pntr->status = VBUSY; - pntr->volid = volid; - goto drop; - } - tv = VAttachVolumeByName(&error, pname, volname, V_PEEK); - if (error) { - pntr->status = 0; /*things are messed up */ - strcpy(pntr->name, volname); - pntr->volid = volid; - Log("1 Volser: ListVolumes: Could not attach volume %u (%s) error=%d\n", volid, volname, error); - goto drop; - } - if (tv->header->diskstuff.needsSalvaged) { - /*this volume will be salvaged */ - pntr->status = 0; - strcpy(pntr->name, volname); - pntr->volid = volid; - Log("1 Volser: ListVolumes: Volume %u (%s) needs to be salvaged\n", volid, volname); - goto drop; - } - if (tv->header->diskstuff.destroyMe == DESTROY_ME) { - /*this volume will be salvaged */ + handle.volinfo_type = VOLINT_INFO_TYPE_BASE; + handle.volinfo_ptr.base = pntr; + + + code = GetVolInfo(partid, + volid, + pname, + volname, + &handle, + VOL_INFO_LIST_MULTIPLE); + if (code == -2) { /* DESTROY_ME flag set */ goto drop2; } - /*read in the relevant info */ - pntr->status = VOK; /*its ok */ - pntr->volid = tv->header->diskstuff.id; - strcpy(pntr->name, tv->header->diskstuff.name); - pntr->type = tv->header->diskstuff.type; /*if ro volume */ - pntr->cloneID = tv->header->diskstuff.cloneId; /*if rw volume */ - pntr->backupID = tv->header->diskstuff.backupId; - pntr->parentID = tv->header->diskstuff.parentId; - pntr->copyDate = tv->header->diskstuff.copyDate; - pntr->inUse = tv->header->diskstuff.inUse; - pntr->size = tv->header->diskstuff.diskused; - pntr->needsSalvaged = tv->header->diskstuff.needsSalvaged; - pntr->maxquota = tv->header->diskstuff.maxquota; - pntr->filecount = tv->header->diskstuff.filecount; - now = FT_ApproxTime(); - if (now - tv->header->diskstuff.dayUseDate > OneDay) - pntr->dayUse = 0; - else - pntr->dayUse = tv->header->diskstuff.dayUse; - pntr->creationDate = tv->header->diskstuff.creationDate; - pntr->accessDate = tv->header->diskstuff.accessDate; - pntr->updateDate = tv->header->diskstuff.updateDate; - pntr->backupDate = tv->header->diskstuff.backupDate; - pntr->spare0 = tv->header->diskstuff.minquota; - pntr->spare1 = - (long)tv->header->diskstuff.weekUse[0] + - (long)tv->header->diskstuff.weekUse[1] + - (long)tv->header->diskstuff.weekUse[2] + - (long)tv->header->diskstuff.weekUse[3] + - (long)tv->header->diskstuff.weekUse[4] + - (long)tv->header->diskstuff.weekUse[5] + - (long)tv->header->diskstuff.weekUse[6]; - pntr->flags = pntr->spare2 = pntr->spare3 = (long)0; - VDetachVolume(&error, tv); /*free the volume */ - tv = (Volume *) 0; - if (error) { - pntr->status = 0; /*things are messed up */ - strcpy(pntr->name, volname); - Log("1 Volser: ListVolumes: Could not detach volume %s\n", - volname); - goto drop; - } } else { pntr->volid = volid; /*just volids are needed */ } drop: - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; - } pntr++; volumeInfo->volEntries_len += 1; if ((allocSize - volumeInfo->volEntries_len) < 5) { @@ -2283,15 +2404,7 @@ VolListVolumes(struct rx_call *acid, afs_int32 partid, afs_int32 flags, (volintInfo *) realloc((char *)volumeInfo->volEntries_val, allocSize * sizeof(volintInfo)); if (pntr == NULL) { - if (tv) { - VDetachVolume(&error, tv); - tv = (Volume *) 0; - } - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; - } - closedir(dirp); + closedir(dirp); return VOLSERNO_MEMORY; } volumeInfo->volEntries_val = pntr; /* point to new block */ @@ -2301,21 +2414,11 @@ VolListVolumes(struct rx_call *acid, afs_int32 partid, afs_int32 flags, } drop2: - if (tv) { - VDetachVolume(&error, tv); - tv = (Volume *) 0; - } - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; - } GetNextVol(dirp, volname, &volid); } - closedir(dirp); - if (ttc) - DeleteTrans(ttc, 1); + closedir(dirp); return 0; } @@ -2363,17 +2466,15 @@ VolXListVolumes(struct rx_call *a_rxCidP, afs_int32 a_partID, { /*SAFSVolXListVolumes */ volintXInfo *xInfoP; /*Ptr to the extended vol info */ - register struct Volume *tv; /*Volume ptr */ - struct DiskPartition *partP; /*Ptr to partition */ - struct volser_trans *ttc; /*Volume transaction ptr */ + struct DiskPartition64 *partP; /*Ptr to partition */ afs_int32 allocSize = 1000; /*To be changed to a larger figure */ char pname[9], volname[20]; /*Partition, volume names */ afs_int32 error = 0; /*Return code */ DIR *dirp; /*Partition directory ptr */ afs_int32 volid; /*Current volume ID */ - struct VolumeDiskData *volDiskDataP; /*Ptr to on-disk volume data */ - int numStatBytes; /*Num stat bytes to copy per volume */ unsigned int now; + int code; + volint_info_handle_t handle; /* * Allocate a large array of extended volume info structures, then @@ -2401,18 +2502,13 @@ VolXListVolumes(struct rx_call *a_rxCidP, afs_int32 a_partID, dirp = opendir(VPartitionPath(partP)); if (dirp == NULL) return (VOLSERILLEGAL_PARTITION); + strcpy(volname, ""); /* * Sweep through the partition directory, acting on each entry. First, * of course, figure out how many stat bytes to copy out of each volume. */ - numStatBytes = - 4 * ((2 * VOLINT_STATS_NUM_RWINFO_FIELDS) + - (4 * VOLINT_STATS_NUM_TIME_FIELDS)); - strcpy(volname, ""); while (strcmp(volname, "EOD")) { - ttc = (struct volser_trans *)0; /*New one for each pass */ - tv = (Volume *) 0; /*Volume not yet attached */ /* * If this is not a volume, move on to the next entry in the @@ -2431,106 +2527,27 @@ VolXListVolumes(struct rx_call *a_rxCidP, afs_int32 a_partID, #ifndef AFS_PTHREAD_ENV IOMGR_Poll(); #endif - ttc = NewTrans(volid, a_partID); - if (!ttc) { - /* - * Couldn't get a transaction on this volume; let our caller - * know it's busy. - */ - xInfoP->status = VBUSY; - xInfoP->volid = volid; - goto drop; - } - /* - * Attach the volume, give up on this volume if we can't. - */ - tv = VAttachVolumeByName(&error, pname, volname, V_PEEK); - if (error) { - xInfoP->status = 0; /*things are messed up */ - strcpy(xInfoP->name, volname); - xInfoP->volid = volid; - Log("1 Volser: XListVolumes: Could not attach volume %u\n", - volid); - goto drop; - } - - /* - * Also bag out on this volume if it's been marked as needing a - * salvage or to-be-destroyed. - */ - volDiskDataP = &(tv->header->diskstuff); - if (volDiskDataP->needsSalvaged) { - xInfoP->status = 0; - strcpy(xInfoP->name, volname); - xInfoP->volid = volid; - Log("1 Volser: XListVolumes: Volume %u needs to be salvaged\n", volid); - goto drop; - } + handle.volinfo_type = VOLINT_INFO_TYPE_EXT; + handle.volinfo_ptr.ext = xInfoP; - if (volDiskDataP->destroyMe == DESTROY_ME) + code = GetVolInfo(a_partID, + volid, + pname, + volname, + &handle, + VOL_INFO_LIST_MULTIPLE); + if (code == -2) { /* DESTROY_ME flag set */ goto drop2; - - /* - * Pull out the desired info and stuff it into the area we'll be - * returning to our caller. - */ - strcpy(xInfoP->name, volDiskDataP->name); - xInfoP->volid = volDiskDataP->id; - xInfoP->type = volDiskDataP->type; - xInfoP->backupID = volDiskDataP->backupId; - xInfoP->parentID = volDiskDataP->parentId; - xInfoP->cloneID = volDiskDataP->cloneId; - xInfoP->status = VOK; - xInfoP->copyDate = volDiskDataP->copyDate; - xInfoP->inUse = volDiskDataP->inUse; - xInfoP->creationDate = volDiskDataP->creationDate; - xInfoP->accessDate = volDiskDataP->accessDate; - xInfoP->updateDate = volDiskDataP->updateDate; - xInfoP->backupDate = volDiskDataP->backupDate; - now = FT_ApproxTime(); - if (now - volDiskDataP->dayUseDate > OneDay) - xInfoP->dayUse = 0; - else - xInfoP->dayUse = volDiskDataP->dayUse; - xInfoP->filecount = volDiskDataP->filecount; - xInfoP->maxquota = volDiskDataP->maxquota; - xInfoP->size = volDiskDataP->diskused; - - /* - * Copy out the stat fields in a single operation. - */ - memcpy((char *)&(xInfoP->stat_reads[0]), - (char *)&(volDiskDataP->stat_reads[0]), numStatBytes); - - /* - * We're done copying. Detach the volume and iterate. - */ - VDetachVolume(&error, tv); - tv = (Volume *) 0; - if (error) { - xInfoP->status = 0; - strcpy(xInfoP->name, volname); - Log("1 Volser: XListVolumes: Could not detach volume %s\n", - volname); - goto drop; } - } /*Full contents desired */ - else + } else { /* * Just volume IDs are needed. */ xInfoP->volid = volid; - - drop: - /* - * Drop the transaction we have for this volume. - */ - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; } + drop: /* * Bump the pointer in the data area we're building, along with * the count of the number of entries it contains. @@ -2549,14 +2566,6 @@ VolXListVolumes(struct rx_call *a_rxCidP, afs_int32 a_partID, /* * Bummer, no memory. Bag it, tell our caller what went wrong. */ - if (tv) { - VDetachVolume(&error, tv); - tv = (Volume *) 0; - } - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; - } closedir(dirp); return (VOLSERNO_MEMORY); } @@ -2571,20 +2580,8 @@ VolXListVolumes(struct rx_call *a_rxCidP, afs_int32 a_partID, a_volumeXInfoP->volXEntries_val + a_volumeXInfoP->volXEntries_len; } - /*Need more space */ + drop2: - /* - * Detach our current volume and the transaction on it, then move on - * to the next volume in the partition directory. - */ - if (tv) { - VDetachVolume(&error, tv); - tv = (Volume *) 0; - } - if (ttc) { - DeleteTrans(ttc, 1); - ttc = (struct volser_trans *)0; - } GetNextVol(dirp, volname, &volid); } /*Sweep through the partition directory */ @@ -2593,8 +2590,6 @@ VolXListVolumes(struct rx_call *a_rxCidP, afs_int32 a_partID, * delete our transaction (if any), and go home happy. */ closedir(dirp); - if (ttc) - DeleteTrans(ttc, 1); return (0); } /*SAFSVolXListVolumes */ @@ -2791,7 +2786,7 @@ SAFSVolConvertROtoRWvolume(struct rx_call *acid, afs_int32 partId, DIR *dirp; register struct volser_trans *ttc; char pname[16], volname[20]; - struct DiskPartition *partP; + struct DiskPartition64 *partP; afs_int32 ret = ENODEV; afs_int32 volid; @@ -2803,7 +2798,7 @@ SAFSVolConvertROtoRWvolume(struct rx_call *acid, afs_int32 partId, return VOLSERILLEGAL_PARTITION; dirp = opendir(VPartitionPath(partP)); if (dirp == NULL) - return VOLSERILLEGAL_PARTITION; + return VOLSERILLEGAL_PARTITION; strcpy(volname, ""); ttc = (struct volser_trans *)0; @@ -2812,8 +2807,8 @@ SAFSVolConvertROtoRWvolume(struct rx_call *acid, afs_int32 partId, GetNextVol(dirp, volname, &volid); continue; /*back to while loop */ } - - if (volid == volumeId) { /*copy other things too */ + + if (volid == volumeId) { /*copy other things too */ #ifndef AFS_PTHREAD_ENV IOMGR_Poll(); /*make sure that the client doesnot time out */ #endif @@ -2830,12 +2825,12 @@ SAFSVolConvertROtoRWvolume(struct rx_call *acid, afs_int32 partId, } GetNextVol(dirp, volname, &volid); } - + if (ttc) { DeleteTrans(ttc, 1); ttc = (struct volser_trans *)0; } - + closedir(dirp); return ret; #endif diff --git a/src/volser/volser.p.h b/src/volser/volser.p.h index 95c59654c..8053ef7b9 100644 --- a/src/volser/volser.p.h +++ b/src/volser/volser.p.h @@ -15,6 +15,8 @@ #include #endif +#include + /* vflags, representing state of the volume */ #define VTDeleteOnSalvage 1 /* delete on next salvage */ #define VTOutOfService 2 /* never put this volume online */ @@ -110,7 +112,6 @@ extern struct volser_trans *QI_GlobalWriteTrans; #define INVALID_BID 0 #define VOLSER_MAXVOLNAME 65 #define VOLSER_OLDMAXVOLNAME 32 -#define VOLMAXPARTS 255 /*flags used for interfacing with the backup system */ struct volDescription { /*used for interfacing with the backup system */ diff --git a/src/volser/volser_prototypes.h b/src/volser/volser_prototypes.h index 71a65f473..50fbe0f1d 100644 --- a/src/volser/volser_prototypes.h +++ b/src/volser/volser_prototypes.h @@ -24,8 +24,8 @@ extern struct rx_connection *UV_Bind(afs_int32 aserver, afs_int32 port); extern void SubEnumerateEntry(struct nvldbentry *entry); extern void EnumerateEntry(struct nvldbentry *entry); extern int UV_NukeVolume(afs_int32 server, afs_int32 partid, afs_int32 volid); -extern int UV_PartitionInfo(afs_int32 server, char *pname, - struct diskPartition *partition); +extern int UV_PartitionInfo64(afs_int32 server, char *pname, + struct diskPartition64 *partition); extern int UV_CreateVolume(afs_int32 aserver, afs_int32 apart, char *aname, afs_int32 * anewid); extern int UV_CreateVolume2(afs_int32 aserver, afs_int32 apart, char *aname, @@ -40,6 +40,9 @@ extern void sigint_handler(int x); extern int UV_MoveVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, afs_int32 atoserver, afs_int32 atopart); +extern int UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, + afs_int32 afrompart, afs_int32 atoserver, + afs_int32 atopart, int flags); extern int UV_BackupVolume(afs_int32 aserver, afs_int32 apart, afs_int32 avolid); extern int UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, @@ -49,8 +52,11 @@ extern int UV_DumpVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, afs_int32 fromdate, afs_int32(*DumpFunction) (), char *rock, afs_int32 flags); extern int UV_RestoreVolume(afs_int32 toserver, afs_int32 topart, - afs_int32 tovolid, char tovolname[], int flags, + afs_int32 tovolid, char tovolname[], int restoreflags, afs_int32(*WriteData) (), char *rock); +extern int UV_RestoreVolume2(afs_int32 toserver, afs_int32 topart, afs_int32 tovolid, + afs_int32 toparentid, char tovolname[], int flags, + afs_int32(*WriteData) (), char *rock); extern int UV_LockRelease(afs_int32 volid); extern int UV_AddSite(afs_int32 server, afs_int32 part, afs_int32 volid, afs_int32 valid); extern int UV_RemoveSite(afs_int32 server, afs_int32 part, afs_int32 volid); @@ -99,5 +105,20 @@ extern int UV_SetVolumeInfo(afs_int32 server, afs_int32 partition, afs_int32 volid, volintInfo * infop); extern void MapNetworkToHost(struct nvldbentry *old, struct nvldbentry *new); extern void MapHostToNetwork(struct nvldbentry *entry); +extern int UV_CopyVolume2(afs_int32 afromvol, afs_int32 afromserver, + afs_int32 afrompart, char *atovolname, + afs_int32 atoserver, afs_int32 atopart, + afs_int32 atovolid, int flags); +extern int UV_CloneVolume(afs_int32 aserver, afs_int32 apart, afs_int32 avolid, + afs_int32 acloneid, char *aname, int flags); +extern int UV_DumpClonedVolume(afs_int32 afromvol, afs_int32 afromserver, + afs_int32 afrompart, afs_int32 fromdate, + afs_int32(*DumpFunction) (), char *rock, + afs_int32 flags); +extern int UV_GetSize(afs_int32 afromvol, afs_int32 afromserver, + afs_int32 afrompart, afs_int32 fromdate, + struct volintSize *vol_size); +extern int verbose; +extern int noresolve; #endif diff --git a/src/volser/voltrans.c b/src/volser/voltrans.c index 3eca9c91d..012450fc4 100644 --- a/src/volser/voltrans.c +++ b/src/volser/voltrans.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/voltrans.c,v 1.10.2.3 2007/10/30 15:24:12 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/voltrans.c,v 1.11.8.3 2007/10/30 15:16:59 shadow Exp $"); #ifdef AFS_NT40_ENV #include @@ -51,7 +51,6 @@ RCSID #include #include #include -#include #include #include #include diff --git a/src/volser/vos.c b/src/volser/vos.c index 6768b6c9a..b6bb85fc4 100644 --- a/src/volser/vos.c +++ b/src/volser/vos.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/vos.c,v 1.40.2.25 2008/02/11 03:46:33 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/vos.c,v 1.55.2.17 2008/05/22 03:51:46 shadow Exp $"); #include #include @@ -39,7 +39,6 @@ RCSID #include #include #include -#include #include #include #include @@ -47,7 +46,6 @@ RCSID #include #include #include -#include #include "volser.h" #include "volint.h" #include @@ -60,11 +58,18 @@ RCSID #include #endif #include "volser_prototypes.h" +#include "vsutils_prototypes.h" +#include "lockprocs_prototypes.h" #ifdef HAVE_POSIX_REGEX #include #endif +/* Local Prototypes */ +int PrintDiagnostics(char *astring, afs_int32 acode); +int GetVolumeInfo(afs_int32 volid, afs_int32 *server, afs_int32 *part, + afs_int32 *voltype, struct nvldbentry *rentry); + struct tqElem { afs_int32 volid; struct tqElem *next; @@ -81,10 +86,10 @@ cmd_AddParm(ts, "-noauth", CMD_FLAG, CMD_OPTIONAL, "don't authenticate");\ cmd_AddParm(ts, "-localauth",CMD_FLAG,CMD_OPTIONAL,"use server tickets");\ cmd_AddParm(ts, "-verbose", CMD_FLAG, CMD_OPTIONAL, "verbose");\ cmd_AddParm(ts, "-encrypt", CMD_FLAG, CMD_OPTIONAL, "encrypt commands");\ +cmd_AddParm(ts, "-noresolve", CMD_FLAG, CMD_OPTIONAL, "don't resolve addresses"); \ #define ERROR_EXIT(code) {error=(code); goto error_exit;} -extern int verbose; int rxInitDone = 0; struct rx_connection *tconn; afs_int32 tserver; @@ -282,7 +287,11 @@ SendFile(usd_handle_t ufd, register struct rx_call *call, long blksize) FD_ZERO(&in); FD_SET((int)(ufd->handle), &in); /* don't timeout if read blocks */ +#if defined(AFS_PTHREAD_ENV) + select(((int)(ufd->handle)) + 1, &in, 0, 0, 0); +#else IOMGR_Select(((int)(ufd->handle)) + 1, &in, 0, 0, 0); +#endif #endif error = USD_READ(ufd, buffer, blksize, &nbytes); if (error) { @@ -340,7 +349,7 @@ WriteData(struct rx_call *call, char *rock) USD_SEEK(ufd, filesize, SEEK_END, &currOffset); hset64(filesize, hgethi(currOffset), hgetlo(currOffset)-sizeof(afs_uint32)); USD_SEEK(ufd, filesize, SEEK_SET, &currOffset); - USD_READ(ufd, &buffer, sizeof(afs_uint32), &got); + USD_READ(ufd, (char *)&buffer, sizeof(afs_uint32), &got); if ((got != sizeof(afs_uint32)) || (ntohl(buffer) != DUMPENDMAGIC)) { fprintf(STDERR, "Signature missing from end of file '%s'\n", filename); error = VOLSERBADOP; @@ -392,7 +401,11 @@ ReceiveFile(usd_handle_t ufd, struct rx_call *call, long blksize) FD_ZERO(&out); FD_SET((int)(ufd->handle), &out); /* don't timeout if write blocks */ +#if defined(AFS_PTHREAD_ENV) + select(((int)(ufd->handle)) + 1, &out, 0, 0, 0); +#else IOMGR_Select(((int)(ufd->handle)) + 1, 0, &out, 0, 0); +#endif #endif error = USD_WRITE(ufd, &buffer[bytesread - bytesleft], bytesleft, &w); @@ -1384,8 +1397,7 @@ GetServerAndPart(entry, voltype, server, part, previdx) } static void -PostVolumeStats(entry) - struct nvldbentry *entry; +PostVolumeStats(struct nvldbentry *entry) { SubEnumerateEntry(entry); /* Check for VLOP_ALLOPERS */ @@ -1443,11 +1455,8 @@ XVolumeStats(a_xInfoP, a_entryP, a_srvID, a_partID, a_volType) } /*XVolumeStats */ static void -VolumeStats(pntr, entry, server, part, voltype) - volintInfo *pntr; - struct nvldbentry *entry; - int voltype; - afs_int32 server, part; +VolumeStats_int(volintInfo *pntr, struct nvldbentry *entry, afs_int32 server, + afs_int32 part, int voltype) { int totalOK, totalNotOK, totalBusy; @@ -1629,7 +1638,7 @@ ExamineVolume(register struct cmd_syndesc *as, void *arock) EnumerateEntry(&entry); } else #endif /* FULL_LISTVOL_SWITCH */ - VolumeStats(pntr, &entry, aserver, apart, voltype); + VolumeStats_int(pntr, &entry, aserver, apart, voltype); if ((voltype == BACKVOL) && !(entry.flags & BACK_EXISTS)) { /* The VLDB says there is no backup volume yet we found one on disk */ @@ -1727,6 +1736,10 @@ SetFields(register struct cmd_syndesc *as, void *arock) /* -clearuse */ info.dayUse = 0; } + if (as->parms[3].items) { + /* -clearVolUpCounter */ + info.spare2 = 0; + } code = UV_SetVolumeInfo(aserver, apart, volid, &info); if (code) fprintf(STDERR, @@ -2100,7 +2113,7 @@ MoveVolume(register struct cmd_syndesc *as, void *arock) afs_int32 flags, code, err; char fromPartName[10], toPartName[10]; - struct diskPartition partition; /* for space check */ + struct diskPartition64 partition; /* for space check */ volintInfo *p; volid = vsu_GetVolumeID(as->parms[0].items->data, cstruct, &err); @@ -2169,7 +2182,7 @@ MoveVolume(register struct cmd_syndesc *as, void *arock) * check target partition for space to move volume */ - code = UV_PartitionInfo(toserver, toPartName, &partition); + code = UV_PartitionInfo64(toserver, toPartName, &partition); if (code) { fprintf(STDERR, "vos: cannot access partition %s\n", toPartName); exit(1); @@ -2225,7 +2238,7 @@ CopyVolume(register struct cmd_syndesc *as, void *arock) afs_int32 volid, fromserver, toserver, frompart, topart, code, err, flags; char fromPartName[10], toPartName[10], *tovolume; struct nvldbentry entry; - struct diskPartition partition; /* for space check */ + struct diskPartition64 partition; /* for space check */ volintInfo *p; volid = vsu_GetVolumeID(as->parms[0].items->data, cstruct, &err); @@ -2320,7 +2333,7 @@ CopyVolume(register struct cmd_syndesc *as, void *arock) * check target partition for space to move volume */ - code = UV_PartitionInfo(toserver, toPartName, &partition); + code = UV_PartitionInfo64(toserver, toPartName, &partition); if (code) { fprintf(STDERR, "vos: cannot access partition %s\n", toPartName); exit(1); @@ -2371,8 +2384,7 @@ ShadowVolume(register struct cmd_syndesc *as, void *arock) afs_int32 volid, fromserver, toserver, frompart, topart, tovolid; afs_int32 code, err, flags; char fromPartName[10], toPartName[10], toVolName[32], *tovolume; - struct nvldbentry entry; - struct diskPartition partition; /* for space check */ + struct diskPartition64 partition; /* for space check */ volintInfo *p, *q; p = (volintInfo *) 0; @@ -2505,7 +2517,7 @@ ShadowVolume(register struct cmd_syndesc *as, void *arock) * check target partition for space to move volume */ - code = UV_PartitionInfo(toserver, toPartName, &partition); + code = UV_PartitionInfo64(toserver, toPartName, &partition); if (code) { fprintf(STDERR, "vos: cannot access partition %s\n", toPartName); exit(1); @@ -4075,9 +4087,9 @@ RenameVolume(register struct cmd_syndesc *as, void *arock) return 0; } -GetVolumeInfo(volid, server, part, voltype, rentry) - afs_int32 *server, volid, *part, *voltype; - register struct nvldbentry *rentry; +int +GetVolumeInfo(afs_int32 volid, afs_int32 *server, afs_int32 *part, afs_int32 *voltype, + struct nvldbentry *rentry) { afs_int32 vcode; int i, index = -1; @@ -4992,11 +5004,11 @@ PartitionInfo(register struct cmd_syndesc *as, void *arock) afs_int32 apart; afs_int32 aserver, code; char pname[10]; - struct diskPartition partition; + struct diskPartition64 partition; struct partList dummyPartList; int i, cnt; int printSummary=0, sumPartitions=0; - afs_uint64 sumFree, sumStorage, tmp; + afs_uint64 sumFree, sumStorage; ZeroInt64(sumFree); ZeroInt64(sumStorage); @@ -5041,7 +5053,7 @@ PartitionInfo(register struct cmd_syndesc *as, void *arock) for (i = 0; i < cnt; i++) { if (dummyPartList.partFlags[i] & PARTVALID) { MapPartIdIntoName(dummyPartList.partId[i], pname); - code = UV_PartitionInfo(aserver, pname, &partition); + code = UV_PartitionInfo64(aserver, pname, &partition); if (code) { fprintf(STDERR, "Could not get information on partition %s\n", pname); @@ -5049,13 +5061,11 @@ PartitionInfo(register struct cmd_syndesc *as, void *arock) exit(1); } fprintf(STDOUT, - "Free space on partition %s: %d K blocks out of total %d\n", + "Free space on partition %s: %lld K blocks out of total %lld\n", pname, partition.free, partition.minFree); sumPartitions++; - FillInt64(tmp,0,partition.free); - AddUInt64(sumFree,tmp,&sumFree); - FillInt64(tmp,0,partition.minFree); - AddUInt64(sumStorage,tmp,&sumStorage); + AddUInt64(sumFree,partition.free,&sumFree); + AddUInt64(sumStorage,partition.minFree,&sumStorage); } } if (printSummary) { @@ -5134,7 +5144,7 @@ ChangeAddr(register struct cmd_syndesc *as, void *arock) static void print_addrs(const bulkaddrs * addrs, const afsUUID * m_uuid, int nentries, - int print, int noresolve) + int print) { afs_int32 vcode; afs_int32 i, j; @@ -5172,7 +5182,7 @@ print_addrs(const bulkaddrs * addrs, const afsUUID * m_uuid, int nentries, m_addrs.bulkaddrs_len = 0; vcode = ubik_VL_GetAddrsU(cstruct, 0, &m_attrs, &m_uuid, - &vlcb, &m_nentries, &m_addrs); + (afs_int32 *)&vlcb, &m_nentries, &m_addrs); if (vcode) { fprintf(STDERR, "vos: could not list the multi-homed server addresses\n"); @@ -5222,7 +5232,7 @@ static int ListAddrs(register struct cmd_syndesc *as, void *arock) { afs_int32 vcode; - afs_int32 i, noresolve = 0, printuuid = 0; + afs_int32 i, printuuid = 0; struct VLCallBack vlcb; afs_int32 nentries; bulkaddrs m_addrs; @@ -5260,9 +5270,6 @@ ListAddrs(register struct cmd_syndesc *as, void *arock) m_attrs.ipaddr = ntohl(saddr); } if (as->parms[2].items) { - noresolve = 1; - } - if (as->parms[3].items) { printuuid = 1; } @@ -5315,7 +5322,7 @@ ListAddrs(register struct cmd_syndesc *as, void *arock) return (vcode); } - print_addrs(&m_addrs, &m_uuid, m_nentries, printuuid, noresolve); + print_addrs(&m_addrs, &m_uuid, m_nentries, printuuid); i++; if ((as->parms[1].items) || (as->parms[0].items) || (i > nentries)) @@ -5599,9 +5606,8 @@ Sizes(register struct cmd_syndesc *as, void *arock) return 0; } -PrintDiagnostics(astring, acode) - char *astring; - afs_int32 acode; +int +PrintDiagnostics(char *astring, afs_int32 acode) { if (acode == EACCES) { fprintf(STDERR, @@ -5646,6 +5652,10 @@ MyBeforeProc(struct cmd_syndesc *as, void *arock) verbose = 1; else verbose = 0; + if (as->parms[17].items) /* -noresolve flag set */ + noresolve = 1; + else + noresolve = 0; return 0; } @@ -5899,6 +5909,7 @@ main(argc, argv) cmd_AddParm(ts, "-id", CMD_SINGLE, 0, "volume name or ID"); cmd_AddParm(ts, "-maxquota", CMD_SINGLE, CMD_OPTIONAL, "quota (KB)"); cmd_AddParm(ts, "-clearuse", CMD_FLAG, CMD_OPTIONAL, "clear dayUse"); + cmd_AddParm(ts, "-clearVolUpCounter", CMD_FLAG, CMD_OPTIONAL, "clear volUpdateCounter"); COMMONPARMS; ts = cmd_CreateSyntax("offline", volOffline, NULL, (char *)CMD_HIDDEN); @@ -6002,8 +6013,6 @@ main(argc, argv) "list the IP address of all file servers registered in the VLDB"); cmd_AddParm(ts, "-uuid", CMD_SINGLE, CMD_OPTIONAL, "uuid of server"); cmd_AddParm(ts, "-host", CMD_SINGLE, CMD_OPTIONAL, "address of host"); - cmd_AddParm(ts, "-noresolve", CMD_FLAG, CMD_OPTIONAL, - "don't resolve addresses"); cmd_AddParm(ts, "-printuuid", CMD_FLAG, CMD_OPTIONAL, "print uuid of hosts"); COMMONPARMS; diff --git a/src/volser/vsprocs.c b/src/volser/vsprocs.c index 51d57c09a..565ba96ac 100644 --- a/src/volser/vsprocs.c +++ b/src/volser/vsprocs.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/vsprocs.c,v 1.33.2.18 2008/02/11 03:46:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/vsprocs.c,v 1.38.2.19 2008/05/21 20:16:20 shadow Exp $"); #include #include @@ -34,7 +34,6 @@ RCSID #include #include #include -#include #include #include #include @@ -56,10 +55,12 @@ RCSID #include /* signal(), kill(), wait(), etc. */ #include -#include +#include "volser_prototypes.h" +#include "vsutils_prototypes.h" +#include "lockprocs_prototypes.h" struct ubik_client *cstruct; -int verbose = 0; +int verbose = 0, noresolve = 0; struct release { afs_int32 crtime; @@ -503,6 +504,7 @@ SubEnumerateEntry(struct nvldbentry *entry) int i; char pname[10]; int isMixed = 0; + char hoststr[16]; #ifdef notdef fprintf(STDOUT, " readWriteID %-10u ", entry->volumeId[RWVOL]); @@ -542,7 +544,8 @@ SubEnumerateEntry(struct nvldbentry *entry) for (i = 0; i < entry->nServers; i++) { MapPartIdIntoName(entry->serverPartition[i], pname); fprintf(STDOUT, " server %s partition %s ", - hostutil_GetNameByINet(entry->serverNumber[i]), pname); + noresolve ? afs_inet_ntoa_r(entry->serverNumber[i], hoststr) : + hostutil_GetNameByINet(entry->serverNumber[i]), pname); if (entry->serverFlags[i] & ITSRWVOL) fprintf(STDOUT, "RW Site "); else @@ -593,16 +596,28 @@ UV_NukeVolume(afs_int32 server, afs_int32 partid, afs_int32 volid) /* like df. Return usage of on in */ int -UV_PartitionInfo(afs_int32 server, char *pname, - struct diskPartition *partition) +UV_PartitionInfo64(afs_int32 server, char *pname, + struct diskPartition64 *partition) { register struct rx_connection *aconn; - afs_int32 code; + afs_int32 code = 0; - code = 0; aconn = (struct rx_connection *)0; aconn = UV_Bind(server, AFSCONF_VOLUMEPORT); - code = AFSVolPartitionInfo(aconn, pname, partition); + code = AFSVolPartitionInfo64(aconn, pname, partition); + if (code == RXGEN_OPCODE) { + struct diskPartition *dpp = + (struct diskPartition *)malloc(sizeof(struct diskPartition)); + code = AFSVolPartitionInfo(aconn, pname, dpp); + if (!code) { + strncpy(partition->name, dpp->name, 32); + strncpy(partition->devName, dpp->devName, 32); + partition->lock_fd = dpp->lock_fd; + partition->free = dpp->free; + partition->minFree = dpp->minFree; + } + free(dpp); + } if (code) { fprintf(STDERR, "Could not get information on partition %s\n", pname); PrintError("", code); @@ -1061,6 +1076,7 @@ UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, afs_int32 error; char in, lf; /* for test code */ int same; + char hoststr[16]; #ifdef ENABLE_BUGFIX_1165 volEntries volumeInfo; @@ -1137,7 +1153,8 @@ UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, char pname[10]; MapPartIdIntoName(entry.serverPartition[i], pname); fprintf(STDERR, " server %s partition %s \n", - hostutil_GetNameByINet(entry.serverNumber[i]), + noresolve ? afs_inet_ntoa_r(entry.serverNumber[i], hoststr) : + hostutil_GetNameByINet(entry.serverNumber[i]), pname); } } @@ -1773,6 +1790,7 @@ UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, ubik_VL_ReleaseLock(cstruct, 0, afromvol, -1, (LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP)); VDONE; + islocked = 0; } if (clonetid) { @@ -1978,12 +1996,14 @@ UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, } /* unlock VLDB entry */ - VPRINT1("Recovery: Releasing lock on VLDB entry for volume %u ...", - afromvol); - ubik_VL_ReleaseLock(cstruct, 0, afromvol, -1, - (LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP)); - VDONE; - + if (islocked) { + VPRINT1("Recovery: Releasing lock on VLDB entry for volume %u ...", + afromvol); + ubik_VL_ReleaseLock(cstruct, 0, afromvol, -1, + (LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP)); + VDONE; + islocked = 0; + } done: /* routine cleanup */ if (volName) free(volName); @@ -3016,6 +3036,7 @@ GetTrans(struct nvldbentry *vldbEntryPtr, afs_int32 index, afs_int32 volid; struct volser_status tstatus; int code, rcode, tcode; + char hoststr[16]; *connPtr = (struct rx_connection *)0; *transPtr = 0; @@ -3037,6 +3058,7 @@ GetTrans(struct nvldbentry *vldbEntryPtr, afs_int32 index, /* If the volume does not exist, create it */ if (!volid || code) { char volname[64]; + char hoststr[16]; if (volid && (code != VNOVOL)) { PrintError("Failed to start a transaction on the RO volume.\n", @@ -3051,7 +3073,9 @@ GetTrans(struct nvldbentry *vldbEntryPtr, afs_int32 index, fprintf(STDOUT, "Creating new volume %lu on replication site %s: ", (unsigned long)volid, - hostutil_GetNameByINet(vldbEntryPtr-> + noresolve ? afs_inet_ntoa_r(vldbEntryPtr-> + serverNumber[index], hoststr) : + hostutil_GetNameByINet(vldbEntryPtr-> serverNumber[index])); fflush(STDOUT); } @@ -3084,7 +3108,9 @@ GetTrans(struct nvldbentry *vldbEntryPtr, afs_int32 index, */ else { VPRINT2("Updating existing ro volume %u on %s ...\n", volid, - hostutil_GetNameByINet(vldbEntryPtr->serverNumber[index])); + noresolve ? afs_inet_ntoa_r(vldbEntryPtr-> + serverNumber[index], hoststr) : + hostutil_GetNameByINet(vldbEntryPtr->serverNumber[index])); code = AFSVolGetStatus(*connPtr, *transPtr, &tstatus); if (code) { @@ -3163,6 +3189,7 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 clonetid = 0, onlinetid; afs_int32 fromtid = 0; afs_uint32 fromdate, thisdate; + time_t tmv; int s; manyDests tr; manyResults results; @@ -3174,6 +3201,7 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, } remembertime[NMAXNSERVERS]; int releasecount = 0; struct volser_status volstatus; + char hoststr[16]; memset((char *)remembertime, 0, sizeof(remembertime)); memset((char *)&results, 0, sizeof(results)); @@ -3577,21 +3605,27 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, if (verbose) { fprintf(STDOUT, "Starting ForwardMulti from %lu to %u on %s", (unsigned long)cloneVolId, entry.volumeId[ROVOL], - hostutil_GetNameByINet(entry. + noresolve ? afs_inet_ntoa_r(entry.serverNumber[times[0]. + vldbEntryIndex], hoststr) : + hostutil_GetNameByINet(entry. serverNumber[times[0]. vldbEntryIndex])); for (s = 1; s < volcount; s++) { fprintf(STDOUT, " and %s", - hostutil_GetNameByINet(entry. + noresolve ? afs_inet_ntoa_r(entry.serverNumber[times[s]. + vldbEntryIndex], hoststr) : + hostutil_GetNameByINet(entry. serverNumber[times[s]. vldbEntryIndex])); } if (fromdate == 0) fprintf(STDOUT, " (full release)"); - else - fprintf(STDOUT, " (as of %.24s)", ctime((time_t *)&fromdate)); + else { + tmv = fromdate; + fprintf(STDOUT, " (as of %.24s)", ctime(&tmv)); + } fprintf(STDOUT, ".\n"); fflush(STDOUT); } @@ -3710,7 +3744,8 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, if (!(entry.serverFlags[i] & NEW_REPSITE)) { MapPartIdIntoName(entry.serverPartition[i], pname); fprintf(STDERR, "\t%35s %s\n", - hostutil_GetNameByINet(entry.serverNumber[i]), pname); + noresolve ? afs_inet_ntoa_r(entry.serverNumber[i], hoststr) : + hostutil_GetNameByINet(entry.serverNumber[i]), pname); } } @@ -3781,9 +3816,10 @@ UV_ReleaseVolume(afs_int32 afromvol, afs_int32 afromserver, fprintf(STDERR, "Failed to end transaction on ro volume %u at server %s\n", entry.volumeId[ROVOL], - hostutil_GetNameByINet(htonl - (replicas[i].server. - destHost))); + noresolve ? afs_inet_ntoa_r(htonl(replicas[i].server. + destHost), hoststr) : + hostutil_GetNameByINet(htonl + (replicas[i].server.destHost))); if (!error) error = code; } @@ -3843,6 +3879,7 @@ UV_DumpVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, struct rx_call *fromcall = (struct rx_call *)0; afs_int32 fromtid = 0, rxError = 0, rcode = 0; afs_int32 code, error = 0, retry = 0; + time_t tmv = fromdate; if (setjmp(env)) ERROR_EXIT(EPIPE); @@ -3855,7 +3892,7 @@ UV_DumpVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart, VEPRINT("Full Dump ...\n"); } else { VEPRINT1("Incremental Dump (as of %.24s)...\n", - ctime((time_t *) & fromdate)); + ctime(&tmv)); } /* get connections to the servers */ @@ -3933,6 +3970,7 @@ UV_DumpClonedVolume(afs_int32 afromvol, afs_int32 afromserver, afs_int32 code = 0, vcode = 0, error = 0; afs_int32 clonevol = 0; char vname[64]; + time_t tmv = fromdate; if (setjmp(env)) ERROR_EXIT(EPIPE); @@ -3945,7 +3983,7 @@ UV_DumpClonedVolume(afs_int32 afromvol, afs_int32 afromserver, VEPRINT("Full Dump ...\n"); } else { VEPRINT1("Incremental Dump (as of %.24s)...\n", - ctime((time_t *) & fromdate)); + ctime(&tmv)); } /* get connections to the servers */ @@ -4088,7 +4126,7 @@ UV_RestoreVolume2(afs_int32 toserver, afs_int32 topart, afs_int32 tovolid, afs_int32 oldCreateDate, oldUpdateDate, newCreateDate, newUpdateDate; int index, same, errcode; char apartName[10]; - + char hoststr[16]; memset(&cookie, 0, sizeof(cookie)); islocked = 0; @@ -4165,6 +4203,7 @@ UV_RestoreVolume2(afs_int32 toserver, afs_int32 topart, afs_int32 tovolid, MapPartIdIntoName(topart, partName); fprintf(STDOUT, "Restoring volume %s Id %lu on server %s partition %s ..", tovolreal, (unsigned long)pvolid, + noresolve ? afs_inet_ntoa_r(toserver, hoststr) : hostutil_GetNameByINet(toserver), partName); fflush(STDOUT); code = @@ -4416,6 +4455,7 @@ UV_RestoreVolume2(afs_int32 toserver, afs_int32 topart, afs_int32 tovolid, VPRINT2 ("Not deleting the previous volume %u on server %s, ...", pvolid, + noresolve ? afs_inet_ntoa_r(entry.serverNumber[index], hoststr) : hostutil_GetNameByINet(entry.serverNumber[index])); } else { tempconn = @@ -4427,6 +4467,7 @@ UV_RestoreVolume2(afs_int32 toserver, afs_int32 topart, afs_int32 tovolid, VPRINT3 ("Deleting the previous volume %u on server %s, partition %s ...", pvolid, + noresolve ? afs_inet_ntoa_r(entry.serverNumber[index], hoststr) : hostutil_GetNameByINet(entry.serverNumber[index]), apartName); code = @@ -5270,6 +5311,7 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, char pname[10]; int pass = 0, islocked = 0, createentry, addvolume, modified, mod, doit = 1; afs_int32 rwvolid; + char hoststr[16]; if (modentry) { if (*modentry == 1) @@ -5358,12 +5400,16 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, fprintf(STDERR, "*** Warning: Orphaned RW volume %lu exists on %s %s\n", (unsigned long)rwvolid, + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : hostutil_GetNameByINet(aserver), pname); MapPartIdIntoName(entry.serverPartition[idx], pname); fprintf(STDERR, " VLDB reports RW volume %lu exists on %s %s\n", (unsigned long)rwvolid, + noresolve ? + afs_inet_ntoa_r(entry.serverNumber[idx], hoststr) : hostutil_GetNameByINet(entry. serverNumber[idx]), pname); @@ -5380,6 +5426,8 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, fprintf(STDERR, "*** Warning: Orphaned BK volume %u exists on %s %s\n", entry.volumeId[BACKVOL], + noresolve ? + afs_inet_ntoa_r(entry.serverNumber[idx], hoststr) : hostutil_GetNameByINet(entry. serverNumber [idx]), pname); @@ -5387,6 +5435,8 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, fprintf(STDERR, " VLDB reports its RW volume %lu exists on %s %s\n", (unsigned long)rwvolid, + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : hostutil_GetNameByINet(aserver), pname); } @@ -5457,11 +5507,15 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, fprintf(STDERR, "*** Warning: Orphaned BK volume %lu exists on %s %s\n", (unsigned long)volumeinfo->volid, + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : hostutil_GetNameByINet(aserver), pname); MapPartIdIntoName(entry.serverPartition[idx], pname); fprintf(STDERR, " VLDB reports its RW/BK volume %lu exists on %s %s\n", (unsigned long)rwvolid, + noresolve ? + afs_inet_ntoa_r(entry.serverNumber[idx], hoststr) : hostutil_GetNameByINet(entry. serverNumber[idx]), pname); @@ -5480,6 +5534,8 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, fprintf(STDERR, "*** Warning: Orphaned BK volume %u exists on %s %s\n", entry.volumeId[BACKVOL], + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : hostutil_GetNameByINet(aserver), pname); fprintf(STDERR, @@ -5492,8 +5548,10 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, pname); fprintf(STDERR, "*** Warning: Orphaned BK volume %lu exists on %s %s\n", - (unsigned long)volumeinfo->volid, - hostutil_GetNameByINet(aserver), + (unsigned long)volumeinfo->volid, + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : + hostutil_GetNameByINet(aserver), pname); fprintf(STDERR, " VLDB reports its BK volume ID is %u\n", @@ -5513,7 +5571,7 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, entry.serverNumber[idx] = aserver; entry.serverPartition[idx] = apart; - entry.serverFlags[idx] = ITSRWVOL; + entry.serverFlags[idx] = ITSBACKVOL; modified++; } @@ -5563,7 +5621,9 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, fprintf(STDERR, "*** Warning: Orphaned RO volume %u exists on %s %s\n", entry.volumeId[ROVOL], - hostutil_GetNameByINet(entry. + noresolve ? + afs_inet_ntoa_r(entry.serverNumber[j], hoststr) : + hostutil_GetNameByINet(entry. serverNumber[j]), pname); fprintf(STDERR, @@ -5590,8 +5650,10 @@ CheckVolume(volintInfo * volumeinfo, afs_int32 aserver, afs_int32 apart, MapPartIdIntoName(apart, pname); fprintf(STDERR, "*** Warning: Orphaned RO volume %lu exists on %s %s\n", - (unsigned long)volumeinfo->volid, - hostutil_GetNameByINet(aserver), pname); + (unsigned long)volumeinfo->volid, + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : + hostutil_GetNameByINet(aserver), pname); fprintf(STDERR, " VLDB reports its RO volume ID is %u\n", entry.volumeId[ROVOL]); @@ -5970,6 +6032,7 @@ UV_SyncVldb(afs_int32 aserver, afs_int32 apart, int flags, int force) afs_int32 failures = 0, modifications = 0, tentries = 0; afs_int32 modified; afs_uint32 maxvolid = 0; + char hoststr[16]; volumeInfo.volEntries_val = (volintInfo *) 0; volumeInfo.volEntries_len = 0; @@ -6021,7 +6084,9 @@ UV_SyncVldb(afs_int32 aserver, afs_int32 apart, int flags, int force) fprintf(STDOUT, "Processing volume entry %d: %s (%lu) on server %s %s...\n", j + 1, vi->name, (unsigned long)vi->volid, - hostutil_GetNameByINet(aserver), pname); + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : + hostutil_GetNameByINet(aserver), pname); fflush(STDOUT); } @@ -6050,7 +6115,9 @@ UV_SyncVldb(afs_int32 aserver, afs_int32 apart, int flags, int force) if (pfail) { fprintf(STDERR, "Could not process entries on server %s partition %s\n", - hostutil_GetNameByINet(aserver), pname); + noresolve ? + afs_inet_ntoa_r(aserver, hoststr) : + hostutil_GetNameByINet(aserver), pname); } if (volumeInfo.volEntries_val) { free(volumeInfo.volEntries_val); @@ -6136,6 +6203,7 @@ CheckVldbRWBK(struct nvldbentry * entry, afs_int32 * modified) int idx; afs_int32 code, error = 0; char pname[10]; + char hoststr[16]; if (modified) *modified = 0; @@ -6170,7 +6238,9 @@ CheckVldbRWBK(struct nvldbentry * entry, afs_int32 * modified) fprintf(STDERR, "Transaction call failed for RW volume %u on server %s %s\n", entry->volumeId[RWVOL], - hostutil_GetNameByINet(entry->serverNumber[idx]), + noresolve ? + afs_inet_ntoa_r(entry->serverNumber[idx], hoststr) : + hostutil_GetNameByINet(entry->serverNumber[idx]), pname); ERROR_EXIT(code); } @@ -6207,7 +6277,9 @@ CheckVldbRWBK(struct nvldbentry * entry, afs_int32 * modified) fprintf(STDERR, "Transaction call failed for BK volume %u on server %s %s\n", entry->volumeId[BACKVOL], - hostutil_GetNameByINet(entry->serverNumber[idx]), + noresolve ? + afs_inet_ntoa_r(entry->serverNumber[idx], hoststr) : + hostutil_GetNameByINet(entry->serverNumber[idx]), pname); ERROR_EXIT(code); } @@ -6238,6 +6310,7 @@ CheckVldbRO(struct nvldbentry *entry, afs_int32 * modified) int foundro = 0, modentry = 0; afs_int32 code, error = 0; char pname[10]; + char hoststr[16]; if (modified) *modified = 0; @@ -6266,7 +6339,9 @@ CheckVldbRO(struct nvldbentry *entry, afs_int32 * modified) fprintf(STDERR, "Transaction call failed for RO %u on server %s %s\n", entry->volumeId[ROVOL], - hostutil_GetNameByINet(entry->serverNumber[idx]), pname); + noresolve ? + afs_inet_ntoa_r(entry->serverNumber[idx], hoststr) : + hostutil_GetNameByINet(entry->serverNumber[idx]), pname); ERROR_EXIT(code); } } @@ -6550,6 +6625,7 @@ UV_RenameVolume(struct nvldbentry *entry, char oldname[], char newname[]) afs_int32 tid; struct rx_connection *aconn; int islocked; + char hoststr[16]; error = 0; aconn = (struct rx_connection *)0; @@ -6714,7 +6790,9 @@ UV_RenameVolume(struct nvldbentry *entry, char oldname[], char newname[]) if (!code) { VPRINT2("Renamed RO volume %s on host %s\n", nameBuffer, - hostutil_GetNameByINet(entry-> + noresolve ? + afs_inet_ntoa_r(entry->serverNumber[i], hoststr) : + hostutil_GetNameByINet(entry-> serverNumber[i])); code = AFSVolEndTrans(aconn, tid, &rcode); tid = 0; diff --git a/src/volser/vsutils.c b/src/volser/vsutils.c index 7d0dfdda5..c1763713f 100644 --- a/src/volser/vsutils.c +++ b/src/volser/vsutils.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/volser/vsutils.c,v 1.16.2.4 2007/10/30 15:24:13 shadow Exp $"); + ("$Header: /cvs/openafs/src/volser/vsutils.c,v 1.18.8.5 2008/04/14 20:25:52 shadow Exp $"); #include #include @@ -36,7 +36,6 @@ RCSID #include #include #include -#include #include #include #include @@ -47,13 +46,14 @@ RCSID #include "volint.h" #include "lockdata.h" +#include "vsutils_prototypes.h" + struct ubik_client *cstruct; static rxkad_level vsu_rxkad_level = rxkad_clear; static void -ovlentry_to_nvlentry(oentryp, nentryp) - struct vldbentry *oentryp; - struct nvldbentry *nentryp; +ovlentry_to_nvlentry(struct vldbentry *oentryp, + struct nvldbentry *nentryp) { register int i; @@ -71,10 +71,9 @@ ovlentry_to_nvlentry(oentryp, nentryp) nentryp->flags = oentryp->flags; } -static -nvlentry_to_ovlentry(nentryp, oentryp) - struct nvldbentry *nentryp; - struct vldbentry *oentryp; +static int +nvlentry_to_ovlentry(struct nvldbentry *nentryp, + struct vldbentry *oentryp) { register int i; @@ -102,8 +101,8 @@ nvlentry_to_ovlentry(nentryp, oentryp) static int newvlserver = 0; -VLDB_CreateEntry(entryp) - struct nvldbentry *entryp; +int +VLDB_CreateEntry(struct nvldbentry *entryp) { struct vldbentry oentry; register int code; @@ -128,9 +127,8 @@ VLDB_CreateEntry(entryp) return code; } -VLDB_GetEntryByID(volid, voltype, entryp) - afs_int32 volid, voltype; - struct nvldbentry *entryp; +int +VLDB_GetEntryByID(afs_int32 volid, afs_int32 voltype, struct nvldbentry *entryp) { struct vldbentry oentry; register int code; @@ -155,9 +153,8 @@ VLDB_GetEntryByID(volid, voltype, entryp) return code; } -VLDB_GetEntryByName(namep, entryp) - char *namep; - struct nvldbentry *entryp; +int +VLDB_GetEntryByName(char *namep, struct nvldbentry *entryp) { struct vldbentry oentry; register int code; @@ -181,9 +178,8 @@ VLDB_GetEntryByName(namep, entryp) return code; } -VLDB_ReplaceEntry(volid, voltype, entryp, releasetype) - afs_int32 volid, voltype, releasetype; - struct nvldbentry *entryp; +int +VLDB_ReplaceEntry(afs_int32 volid, afs_int32 voltype, struct nvldbentry *entryp, afs_int32 releasetype) { struct vldbentry oentry; register int code; @@ -213,11 +209,10 @@ VLDB_ReplaceEntry(volid, voltype, entryp, releasetype) } - -VLDB_ListAttributes(attrp, entriesp, blkentriesp) - VldbListByAttributes *attrp; - afs_int32 *entriesp; - nbulkentries *blkentriesp; +int +VLDB_ListAttributes(VldbListByAttributes *attrp, + afs_int32 *entriesp, + nbulkentries *blkentriesp) { bulkentries arrayEntries; register int code, i; @@ -254,14 +249,13 @@ VLDB_ListAttributes(attrp, entriesp, blkentriesp) return code; } -VLDB_ListAttributesN2(attrp, name, thisindex, nentriesp, blkentriesp, - nextindexp) - VldbListByAttributes *attrp; - char *name; - afs_int32 thisindex; - afs_int32 *nentriesp; - nbulkentries *blkentriesp; - afs_int32 *nextindexp; +int +VLDB_ListAttributesN2(VldbListByAttributes *attrp, + char *name, + afs_int32 thisindex, + afs_int32 *nentriesp, + nbulkentries *blkentriesp, + afs_int32 *nextindexp) { afs_int32 code; @@ -287,8 +281,8 @@ struct cacheips { struct cacheips cacheips[GETADDRUCACHESIZE]; int cacheip_index = 0; -VLDB_IsSameAddrs(serv1, serv2, errorp) - afs_int32 serv1, serv2, *errorp; +int +VLDB_IsSameAddrs(afs_int32 serv1, afs_int32 serv2, afs_int32 *errorp) { register int code; ListAddrByAttributes attrs; @@ -377,8 +371,7 @@ VLDB_IsSameAddrs(serv1, serv2, errorp) to get a rxkad_clear connection, simply don't call this. */ void -vsu_SetCrypt(cryptflag) - int cryptflag; +vsu_SetCrypt(int cryptflag) { if (cryptflag) { vsu_rxkad_level = rxkad_crypt; @@ -392,23 +385,9 @@ vsu_SetCrypt(cryptflag) Get the appropriate type of ubik client structure out from the system. */ afs_int32 -vsu_ClientInit(noAuthFlag, confDir, cellName, sauth, uclientp, secproc) - int noAuthFlag; - int (*secproc) (); - char *cellName; - struct ubik_client **uclientp; - char *confDir; - afs_int32 sauth; +vsu_ClientInit(int noAuthFlag, char *confDir, char *cellName, afs_int32 sauth, + struct ubik_client **uclientp, int (*secproc)()) { - afs_int32 code, scIndex, i; - struct afsconf_cell info; - struct afsconf_dir *tdir; - struct ktc_principal sname; - struct ktc_token ttoken; - struct rx_securityClass *sc; - static struct rx_connection *serverconns[VLDB_MAXSERVERS]; - char cellstr[64]; - return ugen_ClientInit(noAuthFlag, confDir, cellName, sauth, uclientp, secproc, "vsu_ClientInit", vsu_rxkad_level, VLDB_MAXSERVERS, AFSCONF_VLDBSERVICE, 90, @@ -420,8 +399,7 @@ vsu_ClientInit(noAuthFlag, confDir, cellName, sauth, uclientp, secproc) * and return the result as . */ int -vsu_ExtractName(rname, name) - char rname[], name[]; +vsu_ExtractName(char rname[], char name[]) { char sname[VOLSER_OLDMAXVOLNAME + 1]; int total; @@ -449,12 +427,8 @@ vsu_ExtractName(rname, name) /* returns 0 if failed */ afs_uint32 -vsu_GetVolumeID(astring, acstruct, errp) - struct ubik_client *acstruct; - afs_int32 *errp; - char *astring; +vsu_GetVolumeID(char *astring, struct ubik_client *acstruct, afs_int32 *errp) { - afs_uint32 value; char volname[VOLSER_OLDMAXVOLNAME + 1]; struct nvldbentry entry; afs_int32 vcode = 0; diff --git a/src/volser/vsutils_prototypes.h b/src/volser/vsutils_prototypes.h new file mode 100644 index 000000000..6594a3ec6 --- /dev/null +++ b/src/volser/vsutils_prototypes.h @@ -0,0 +1,17 @@ +#ifndef _VSUTILS_PROTOTYPES_H +#define _VSUTILS_PROTOTYPES_H +/* vsutils.c */ +extern int VLDB_CreateEntry(struct nvldbentry *entryp); +extern int VLDB_GetEntryByID(afs_int32 volid, afs_int32 voltype, struct nvldbentry *entryp); +extern int VLDB_GetEntryByName(char *namep, struct nvldbentry *entryp); +extern int VLDB_ReplaceEntry(afs_int32 volid, afs_int32 voltype, struct nvldbentry *entryp, afs_int32 releasetype); +extern int VLDB_ListAttributes(VldbListByAttributes *attrp, afs_int32 *entriesp, nbulkentries *blkentriesp); +extern int VLDB_ListAttributesN2(VldbListByAttributes *attrp, char *name, afs_int32 thisindex, + afs_int32 *nentriesp, nbulkentries *blkentriesp, afs_int32 *nextindexp); +extern int VLDB_IsSameAddrs(afs_int32 serv1, afs_int32 serv2, afs_int32 *errorp); +extern void vsu_SetCrypt(int cryptflag); +extern afs_int32 vsu_ClientInit(int noAuthFlag, char *confDir, char *cellName, afs_int32 sauth, + struct ubik_client **uclientp, int (*secproc)()); +extern int vsu_ExtractName(char rname[], char name[]); +extern afs_uint32 vsu_GetVolumeID(char *astring, struct ubik_client *acstruct, afs_int32 *errp); +#endif diff --git a/src/xstat/NTMakefile b/src/xstat/NTMakefile index c76bf4760..def1af40b 100644 --- a/src/xstat/NTMakefile +++ b/src/xstat/NTMakefile @@ -51,6 +51,7 @@ $(BINDIR)\xstat_fs_test.exe: $(OUT)\xstat_fs_test.obj $(LIBDIR)\afs_xstat_fs.lib $(EXECONLINK) rpcrt4.lib $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) # # Cache Manager data collection @@ -64,6 +65,7 @@ $(BINDIR)\xstat_cm_test.exe: $(OUT)\xstat_cm_test.obj $(LIBDIR)\afs_xstat_cm.lib $(EXECONLINK) $(_VC_MANIFEST_EMBED_EXE) $(EXEPREP) + $(CODESIGN_USERLAND) # # Misc targets diff --git a/src/xstat/xstat_cm.c b/src/xstat/xstat_cm.c index cf44580a4..1dd034925 100644 --- a/src/xstat/xstat_cm.c +++ b/src/xstat/xstat_cm.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/xstat/xstat_cm.c,v 1.9.2.4 2008/03/10 22:35:37 shadow Exp $"); + ("$Header: /cvs/openafs/src/xstat/xstat_cm.c,v 1.10.2.3 2008/03/10 22:32:37 shadow Exp $"); #include "xstat_cm.h" /*Interface for this module */ #include /*Lightweight process package */ diff --git a/src/xstat/xstat_cm_test.c b/src/xstat/xstat_cm_test.c index 6cf003c72..a0b37bf9d 100644 --- a/src/xstat/xstat_cm_test.c +++ b/src/xstat/xstat_cm_test.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/xstat/xstat_cm_test.c,v 1.8.2.6 2007/11/26 21:22:00 shadow Exp $"); + ("$Header: /cvs/openafs/src/xstat/xstat_cm_test.c,v 1.11.2.3 2007/11/26 21:08:47 shadow Exp $"); #include "xstat_cm.h" /*Interface for xstat_cm module */ #include /*Command line interpreter */ @@ -126,13 +126,13 @@ PrintCallInfo() int numInt32s; /*# int32words returned */ afs_int32 *currInt32; /*Ptr to current afs_int32 value */ char *printableTime; /*Ptr to printable time string */ - + time_t probeTime = xstat_cm_Results.probeTime; /* * Just print out the results of the particular probe. */ numInt32s = xstat_cm_Results.data.AFSCB_CollData_len; currInt32 = (afs_int32 *) (xstat_cm_Results.data.AFSCB_CollData_val); - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; printf @@ -158,8 +158,9 @@ print_cmCallStats() static char rn[] = "print_cmCallStats"; /*Routine name */ char *printableTime; /*Ptr to printable time string */ struct afs_CMStats *cmp; + time_t probeTime = xstat_cm_Results.probeTime; - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; printf @@ -750,6 +751,10 @@ PrintOverallPerfInfo(a_ovP) printf("\t%10d srvMaxChainLengthHWM\n", a_ovP->srvMaxChainLengthHWM); printf("\t%10d srvRecordsHWM\n", a_ovP->srvRecordsHWM); + printf("\t%10d cacheBucket0_Discarded\n", a_ovP->cacheBucket0_Discarded); + printf("\t%10d cacheBucket1_Discarded\n", a_ovP->cacheBucket1_Discarded); + printf("\t%10d cacheBucket2_Discarded\n", a_ovP->cacheBucket2_Discarded); + printf("\t%10d sysName_ID\n", a_ovP->sysName_ID); printf("\tFile Server up/downtimes, same cell:\n"); @@ -796,6 +801,7 @@ PrintPerfInfo() afs_int32 numInt32s; /*# int32words received */ struct afs_stats_CMPerf *perfP; /*Ptr to performance stats */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_cm_Results.probeTime; numInt32s = xstat_cm_Results.data.AFSCB_CollData_len; if (numInt32s != perfInt32s) { @@ -805,7 +811,7 @@ PrintPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; perfP = (struct afs_stats_CMPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); @@ -1027,6 +1033,7 @@ PrintFullPerfInfo() struct afs_stats_CMFullPerf *fullP; /*Ptr to full perf info */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_cm_Results.probeTime; numInt32s = xstat_cm_Results.data.AFSCB_CollData_len; if (numInt32s != fullPerfInt32s) { @@ -1036,7 +1043,7 @@ PrintFullPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_cm_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullP = (struct afs_stats_CMFullPerf *) (xstat_cm_Results.data.AFSCB_CollData_val); diff --git a/src/xstat/xstat_fs.c b/src/xstat/xstat_fs.c index 96ff20700..b6fb54a15 100644 --- a/src/xstat/xstat_fs.c +++ b/src/xstat/xstat_fs.c @@ -18,7 +18,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/xstat/xstat_fs.c,v 1.9.2.4 2008/03/10 22:35:37 shadow Exp $"); + ("$Header: /cvs/openafs/src/xstat/xstat_fs.c,v 1.10.2.3 2008/03/10 22:32:37 shadow Exp $"); #include "xstat_fs.h" /*Interface for this module */ #include /*Lightweight process package */ diff --git a/src/xstat/xstat_fs_callback.c b/src/xstat/xstat_fs_callback.c index e3c015270..498e761a6 100644 --- a/src/xstat/xstat_fs_callback.c +++ b/src/xstat/xstat_fs_callback.c @@ -30,7 +30,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/xstat/xstat_fs_callback.c,v 1.13.2.2 2007/10/30 15:24:16 shadow Exp $"); + ("$Header: /cvs/openafs/src/xstat/xstat_fs_callback.c,v 1.15.2.1 2007/10/30 15:16:59 shadow Exp $"); #include #include /*Standard I/O stuff */ @@ -782,3 +782,15 @@ SRXAFSCB_TellMeAboutYourself(struct rx_call * rxcall, */ return (0); } + +int SRXAFSCB_GetDE(a_call, a_index, addr, inode, flags, time, fileName) + struct rx_call *a_call; + afs_int32 a_index; + afs_int32 addr; + afs_int32 inode; + afs_int32 flags; + afs_int32 time; + char ** fileName; +{ + return RXGEN_OPCODE; +} diff --git a/src/xstat/xstat_fs_test.c b/src/xstat/xstat_fs_test.c index c50594f9c..5fdc95d27 100644 --- a/src/xstat/xstat_fs_test.c +++ b/src/xstat/xstat_fs_test.c @@ -17,7 +17,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/xstat/xstat_fs_test.c,v 1.8.2.7 2007/10/30 15:24:16 shadow Exp $"); + ("$Header: /cvs/openafs/src/xstat/xstat_fs_test.c,v 1.15.2.1 2007/10/30 15:16:59 shadow Exp $"); #include "xstat_fs.h" /*Interface for xstat_fs module */ #include /*Command line interpreter */ @@ -115,13 +115,14 @@ PrintCallInfo() int numInt32s; /*# int32words returned */ afs_int32 *currInt32; /*Ptr to current afs_int32 value */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_fs_Results.probeTime; /* * Just print out the results of the particular probe. */ numInt32s = xstat_fs_Results.data.AFS_CollData_len; currInt32 = (afs_int32 *) (xstat_fs_Results.data.AFS_CollData_val); - printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; printf("AFS_XSTATSCOLL_CALL_INFO (coll %d) for FS %s\n[Probe %d, %s]\n\n", @@ -416,6 +417,7 @@ PrintFullPerfInfo() struct fs_stats_FullPerfStats *fullPerfP; /*Ptr to full perf stats */ char *printableTime; /*Ptr to printable time * string */ + time_t probeTime = xstat_fs_Results.probeTime; numInt32s = xstat_fs_Results.data.AFS_CollData_len; if (numInt32s != fullPerfInt32s) { @@ -424,7 +426,7 @@ PrintFullPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; fullPerfP = (struct fs_stats_FullPerfStats *) (xstat_fs_Results.data.AFS_CollData_val); @@ -467,6 +469,7 @@ PrintPerfInfo() afs_int32 numInt32s; /*# int32words received */ struct afs_PerfStats *perfP; /*Ptr to performance stats */ char *printableTime; /*Ptr to printable time string */ + time_t probeTime = xstat_fs_Results.probeTime; numInt32s = xstat_fs_Results.data.AFS_CollData_len; if (numInt32s != perfInt32s) { @@ -475,7 +478,7 @@ PrintPerfInfo() return; } - printableTime = ctime((time_t *) & (xstat_fs_Results.probeTime)); + printableTime = ctime(&probeTime); printableTime[strlen(printableTime) - 1] = '\0'; perfP = (struct afs_PerfStats *) (xstat_fs_Results.data.AFS_CollData_val); -- 2.39.5