9fs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #!/bin/rc
  2. # 9fs filesystem [mountpoint] - srv & mount filesystem, usually from plan 9
  3. rfork e
  4. arch=/lib/vac/arch # archive mount-point tree
  5. fn usage {
  6. echo usage: 9fs service '[mountpoint]' >[1=2]
  7. exit usage
  8. }
  9. switch($1){
  10. case '' -*
  11. usage
  12. # main fs
  13. case dump
  14. 9fs boot && mount -cC /srv/boot /n/dump main/archive
  15. case snap
  16. 9fs boot && mount -C /srv/boot /n/snap main/snapshot
  17. case fs fsmain
  18. srv -q fs && mount -cC /srv/fs /n/$1 main/active
  19. case fsdump
  20. srv -q fs && mount -C /srv/fs /n/$1 main/archive
  21. case fssnap
  22. srv -q fs && mount -C /srv/fs /n/$1 main/snapshot
  23. case fsstand
  24. srv -q -cC net!fs!10564 $1 && mount -cC /srv/$1 /n/$1 main/active
  25. case stand
  26. 9fs fsstand
  27. bind /n/fsstand /n/stand
  28. case fsstandsnap
  29. srv -q -cC net!fs!10564 $1 && mount -C /srv/$1 /n/$1 main/snapshot
  30. case fsother other
  31. srv -q -cC net!fs!20564 $1 && mount -cC /srv/$1 /n/$1 main/active
  32. case fsothersnap
  33. srv -q -cC net!fs!20564 $1 && mount -C /srv/$1 /n/$1 main/snapshot
  34. case extother newother
  35. import -cC fs /n/$1
  36. case alldumps
  37. 9fs dump
  38. mountlabsdump
  39. bind /n/dump /n/$1
  40. bind -a /n/labsdump /n/$1
  41. # the labs
  42. case labsdump # the complete and utter history of Plan 9 since 1990
  43. mountlabsdump
  44. case labs archive bootes bootesdump fornax fornaxdump emelie emeliedump \
  45. choline cholinedump pie piedump
  46. mountlabs
  47. case audio
  48. bind -a /sys/lib/music /lib/audio/maps
  49. case kfs
  50. if(! test -f /srv/kfs)
  51. disk/kfs
  52. mount -cC /srv/kfs /n/kfs
  53. #
  54. # the outside world
  55. #
  56. #cs=cs.bell-labs.com
  57. case wiki
  58. srv -q 'tcp!p9f.org!wiki' wiki
  59. mount /srv/wiki /mnt/wiki
  60. case sources 9p.io
  61. # 9fs 9p.io &&
  62. 9fs 148.251.6.120 && bind /n/148.251.6.120 /n/9p.io && # temp hack
  63. bind /n/9p.io /n/sources
  64. case bl-sources
  65. # srv net!sources.$cs!9fs sources &&
  66. # mount -C -k 'user='^$user /srv/sources /n/sources
  67. # if (! ~ $status '') {
  68. # rm -f /srv/sources
  69. # srv net!sources.$cs!9fs sources &&
  70. # mount -C -k 'user='^$user /srv/sources /n/sources
  71. # }
  72. # # /n/sources is too much typing and /n/sources/plan9 is worse
  73. # bind /n/sources /n/src
  74. # if (test -e /n/src/plan9)
  75. # bind /n/src/plan9 /n/p9
  76. echo sources is down forever. >[1=2]
  77. exit 'sources down'
  78. case sourcesdump
  79. # 9fs sources && mount -C /srv/sources /n/$1 main/archive
  80. echo sources is down forever. >[1=2]
  81. exit 'sources down'
  82. case sourcessnap
  83. # 9fs sources && mount -C /srv/sources /n/$1 main/snapshot
  84. echo sources is down forever. >[1=2]
  85. exit 'sources down'
  86. # arbitrary venti archives
  87. case vac:*
  88. vacfs -p <{echo $1}
  89. case vac.*
  90. vacfs -m /n/$1 <{echo $1 | sed 's/vac\./vac:/'}
  91. case oldlog
  92. vacfs -m /n/$1 `{ls -t /sys/log/vac/[12]???.vac | sed 1q}
  93. case log
  94. 9fs consoles
  95. 9fs stand
  96. bind -a /n/consoles/sys/log /sys/log
  97. bind -a /n/stand/sys/log /sys/log
  98. # misc. unix machines
  99. case fw
  100. exec srvssh -u /usr/local/bin/u9fs fw fw /n/fw
  101. case mac imacpro
  102. srv -mcC imacpro && bind /n/imacpro /n/mac
  103. #case mac imacpro
  104. # ssh is too hard nowadays
  105. # exec srvssh -u u9fs tcp!imacpro!myssh mac /n/mac
  106. case mac-nfs imacpro-nfs
  107. nfs -u /lib/nfs/passwd.mac /lib/nfs/group.mac imacpro >[2]/dev/null
  108. mount /srv/imacpro /n/mac / && bind /n/mac /n/imacpro
  109. # catalina weirdness
  110. mount /srv/imacpro /n/mac/System/Volumes/Data /System/Volumes/Data
  111. cd /n/mac/System/Volumes/Data &&
  112. for (dir in *)
  113. bind -bc $dir /n/mac/$dir >[2]/dev/null
  114. # general case
  115. case *
  116. switch($#*){
  117. case 1
  118. exec srv -mcC $1
  119. case *
  120. exec srv -mcC $1 $1 $2
  121. }
  122. }
  123. # only special cases recognised above get here
  124. switch($#*){
  125. case 1
  126. ;
  127. case 2
  128. bind /n/$1 $2
  129. case *
  130. usage
  131. }