home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / Updates / b11.mm < prev    next >
Text File  |  1991-03-27  |  13KB  |  395 lines

  1. .\" Use -mm macros
  2. .\"
  3. .ds Rh ANSI X3B11.1: WORM File Systems
  4. .ds Au Andrew Hume <andrew@research.att.com>
  5. .ds Dt January 22\-24, 1991
  6. .ds Lo Murray Hill, NJ
  7. .ds Ed Jeffrey S. Haemer <jsh@usenix.org>
  8. .ds Wd U\s-3SENIX\s0 Standards Watchdog Committee
  9. .if '\*(Su'' \{\
  10. .ds Su the \*(Dt meeting in \*(Lo:
  11. .\}
  12. .if n \{\
  13. .tm Subject: Standards Update, \*(Rh
  14. .tm From: \*(Ed
  15. .tm Reply-To: std-unix@uunet.uu.net
  16. .tm Organization: \*(Wd
  17. .tm
  18. .\}
  19. .S 12
  20. .TL
  21. An Update on U\s-3NIX\s0\u\s-41\s0\d-Related Standards Activities
  22. .FS 1.
  23. UNIX\u\(rg\d is a Registered Trademark of UNIX System Laboratories
  24. in the United States and other countries.
  25. .FE
  26. .nr :p 1
  27. .EQ
  28. delim $$
  29. .EN
  30. .sp
  31. \*(Rh
  32. .AF "\*(Ed, Report Editor"
  33. .AU "\*(Wd"
  34. .MT 4
  35. .if n \{\
  36. .nh
  37. .na
  38. .\}
  39. .PF "'\*(DT Standards Update'     '\*(Rh'"
  40. \*(DT
  41. .sp
  42. .P
  43. \fB\*(Au\fP reports on \*(Su
  44. .HU "Introduction"
  45. X\s-13B11.1\s0 is working on a standard for file interchange
  46. on write-once media
  47. (both sequential and non-sequential, i.e., random access):
  48. a portable file system for \s-1WORM\s0s.
  49. First let me apologize for laggardly snitching;
  50. we have had an extra meeting (in December)
  51. to accelerate our progress with the draft proposal
  52. and I have been busy writing
  53. a programmer's guide to the draft proposal.
  54. I shall describe the results of the last three meetings,
  55. October (Nashua, \s-1NH\s0),
  56. December (Murray Hill, \s-1NJ\s0),
  57. and January (San Jose, \s-1CA\s0),
  58. not in chronological order,
  59. but rather as a summary of where we are now.
  60. Although many details remain to be ironed out,
  61. we have broad agreement on the current proposal.
  62. .HU "Multi-volume file systems"
  63. The draft proposal supports multi-volume file systems.
  64. To avoid the confusion that reigned at our meetings,
  65. I will define what this means.
  66. A
  67. .I volume
  68. is a logical address space
  69. (on some medium).
  70. Thus, a typical \s-1WORM\s0 disk is two volumes,
  71. as each side is addressed separately.
  72. A
  73. .I "volume partition"
  74. is simply a contiguous subset of a volume's address space.
  75. A
  76. .I "logical volume"
  77. is simply a set of (volume) partitions
  78. upon which a file system is recorded.
  79. Finally,
  80. a
  81. .I "logical volume set"
  82. is a set of volumes with a single volume set identifier.
  83. (That is,
  84. it is simply a publishing concept.)
  85. Note, however,
  86. that when I say file system,
  87. I mean a set of files and directories
  88. described by possibly multiple directory hierarchies
  89. (typically each would be in a different character set).
  90. The (logical) block size, not the physical sector size, is $2 sup i$ bytes,
  91. $ 9<=i<65536$,
  92. and implementations would have to support at least a block size
  93. of 64\s-1KB\s0.
  94. The various size limits are generous;
  95. internal block addresses allow 64K volumes,
  96. 64K partitions per volume,
  97. and $2 sup 32$ blocks per partition.
  98. .HU "Volume Headers"
  99. The location of the volume header
  100. (the analog of the superblock)
  101. is a tricky issue
  102. because of the requirement that systems be able to boot off a disk
  103. in our format
  104. and there is simply no consensus
  105. on the size or location of the boot area.
  106. Accordingly,
  107. pointers to the volume header
  108. (actually a sequence of various descriptor records)
  109. are recorded at one or more of
  110. 0,
  111. 16,
  112. 64,
  113. 128,
  114. 192,
  115. 256,
  116. $N - 16$,
  117. $N - 4$
  118. (where $N$ is the size of the disk).
  119. The seek speed
  120. (or rather the lack of seek speed)
  121. of \s-1WORM\s0 disks
  122. encouraged us to put these at both ends of the disk.
  123. The volume header record,
  124. like all the other major control structures,
  125. has a 16-bit \s-1CRC\s0
  126. and a unique 8-byte tag,
  127. which should prevent misrecognition.
  128. .HU "Volume/Partition Structure"
  129. The volume layer handles space allocation for the volume,
  130. definitions of partitions,
  131. and bad-block mapping.
  132. The partition layer does its own space allocation,
  133. supports the file system,
  134. and does partition-access logging.
  135. Partitions have file-system-type tags;
  136. the intent is to allow partition $w$ to be an X3B11.1 file system,
  137. partition $x$ to be a \s-1CDROM\s0 file system,
  138. partition $y$ to be an \s-1MS-DOS\s0 floppy file system
  139. and partition $z$ to be of unknown type.
  140. There should be a registry for this type field;
  141. vendors may want to register their file-system formats.
  142. .HU "Bad-Block Handling"
  143. A simple defect-management scheme has been adopted;
  144. it is similar to the bad-block remapping scheme
  145. used for most \s-1SMD\s0 disks.
  146. There was considerable resistance to such a scheme,
  147. particularly from the representatives of the hardware vendors,
  148. as the (\s-1SCSI\s0) \s-1WORM\s0 disks
  149. already do as much error detection/correction as is possible.
  150. However,
  151. defect management
  152. (above the disk driver level)
  153. is still necessary because 
  154. .AL
  155. .LI
  156. error correction/detection in the drive can,
  157. and for performance reasons often is,
  158. turned off,
  159. .LI
  160. errors can easily occur between the disk
  161. and the host's main memory
  162. (have you ever heard of \s-1DMA\s0 or bus errors?),
  163. and
  164. .LI
  165. even though \s-1SCSI\s0 disks present an ``error free'' interface,
  166. most drives have a limited number of errors they can cope with,
  167. and many early drives did little or no error correction.
  168. .HU "FCB Format"
  169. As you may recall,
  170. multiple versions of the
  171. .I "direct entry"
  172. (the equivalent of the inode)
  173. are stored in a data structure
  174. called the file control block (\s-1FCB\s0).
  175. The original proposal involved various levels of indirect blocks
  176. exactly like classic Unix file systems.
  177. We adopted my proposal
  178. (adapted from an observation by Dennis Ritchie)
  179. for a simpler, more general format
  180. that allows arbitrary structures,
  181. which can be specialized for different applications.
  182. .HU "Partition Access Records"
  183. This is more like logging changes to the file system
  184. than a security thing like access control lists.
  185. The idea is to have periods of writing to the partition
  186. bracketed by specific control records
  187. so that it will be possible to tell
  188. if a system closed out that partition gracefully.
  189. (More bluntly, did we unmount the partition gracefully
  190. or did the system crash in the middle of a session?)
  191. These records are kept on a per-file-system basis
  192. and are recorded as variants of direct entries
  193. in a structure identical to \s-1FCB\s0s.
  194. Another side issue is support for a so called ``stable'' record,
  195. which is analogous to the proposed stable sync feature of \s-1BSD\s0 Unix.
  196. (The control structures such as inodes and indirect blocks
  197. are written to disk
  198. but the user's data may not be, yet.)
  199. This peculiar state avoids the need to run
  200. .I fsck
  201. (or its equivalent)
  202. on the disk
  203. but you still have to get the user's data from somewhere.
  204. [Ed: does anyone really need this ``stable'' state?]
  205. .HU "Recording Directories"
  206. For performance reasons,
  207. it is proposed that directories,
  208. or rather the records (\s-1FIDS\s0)
  209. identifying the files (and subdirectories) in that directory,
  210. be kept in optionally sorted order.
  211. This would be in binary and not lexicographic order
  212. (thus evading nettlesome character-set-collating-order issues).
  213. It is not trivial to support this
  214. but is probably worth it.
  215. Related to this is the issue of system areas in directories and \s-1FID\s0s.
  216. It is expected that these areas will contain accelerator structures,
  217. such as B-tree indices and so on.
  218. Here, and elsewhere in the standard,
  219. the governing principle is to allow systems to use such structures
  220. but to neither mandate nor standardize their use.
  221. .HU "Anonymous Files"
  222. There are numerous \s-1FCB\s0s,
  223. or file-like objects,
  224. that have no \s-1FID\s0.
  225. An example might be a Macintosh resource fork.
  226. The question is whether to make these visible to the user.
  227. This is a serious issue,
  228. and one not confined to this standard.
  229. It is an issue for the system supporting access to the file system on the disk.
  230. Do we rely on this system to do the right thing
  231. or should we mandate a mechanism?
  232. For example,
  233. take the example of a Macintosh file (with its resource fork)
  234. on a system (say Unix) that doesn't have that concept.
  235. We can either trust that the vendor supplying your Unix
  236. has implemented an
  237. .I fcntl
  238. (or
  239. .I ioctl )
  240. to access the resource fork,
  241. or we can evade the issue completely
  242. by mandating that the resource fork be available for normal access
  243. by a reserved name such as
  244. \f(CRfoo.\s-1RFORK\s0\fP.
  245. The general feeling is that users will not allow a standard
  246. to reserve parts of the file name space for its own use.
  247. Thus,
  248. it seems likely that access would have to be via standardized
  249. .I fcntl
  250. calls,
  251. but these are outside the scope of our standard.
  252. .HU "Byte Order"
  253. I have pressed the issue of the byte order for numeric fields.
  254. The previous notion was to allow the recording system to choose the byte order.
  255. The issue is not technical
  256. (everyone seems happy to pick just one and stick with it)
  257. but political.
  258. We picked \s-1LSB\s0 order:
  259. the order used by the low-end (and slowest) systems.
  260. We measured the performance degradation for low-end \s-1MSB\s0 systems
  261. (the slowest Macintosh we could find),
  262. and the \s-1CPU\s0 cost of straightforward C code.
  263. Interpreting the byte order for the worst case
  264. (a block of integer block numbers)
  265. was about 10ms
  266. \(em comparable to doing a single disk \s-1I/O\s0
  267. and one or two orders of magnitude less
  268. than the cost of doing a disk seek.
  269. (Careful assembly code would be much faster than this.)
  270. .HU "Extended Attributes"
  271. The direct entry for a file has many attributes or fields.
  272. Some of these will be faster to access
  273. and be stored directly in the direct entry.
  274. The rest will be stored in an extended attribute record area
  275. much like resources in a Macintosh resource fork.
  276. There are two issues:
  277. which attributes get faster access
  278. and 
  279. how do you access the other attributes?
  280. The former is something the standard specifies;
  281. our guiding principle was to include the fields needed for a Unix
  282. .I stat
  283. or an \s-1MS-DOS\s0 (or \s-1VMS\s0)
  284. .I dir
  285. command.
  286. Unfortunately,
  287. the issue of access is beyond the domain of our
  288. standard
  289. and needs to be addressed by \s-1POSIX\s0,
  290. probably best by 1003.8.
  291. Internally within our standard,
  292. the extended attributes are identified by a 32-bit number,
  293. some of which are set in the standard
  294. and the rest by a registry maintained by some authority
  295. (like \s-1ANSI\s0).
  296. The current list of extended attributes is given below;
  297. treat it as very preliminary and subject to change.
  298. .nf
  299. .DS
  300. .TS
  301. center;
  302. a a.
  303. information creation    file abstract
  304. information modification    file type
  305. information expiration    associated file
  306. information effective    data compression
  307. file creation    protection
  308. file access    application-specific data segment
  309. file modification    implementation segment
  310. file backup    escape sequences segment
  311. file expiration    action history
  312. file attribute    icon
  313. file effective    environment type
  314. .TE
  315. .DE
  316. .fi
  317. .HU "Character Sets"
  318. We have adopted a somewhat simpler way of dealing with character sets
  319. than the \s-1CD-ROM\s0 standard (\s-1ISO\s0 9660).
  320. The current schemes available are
  321. .nf
  322. .DS
  323. .TS
  324. box, center;
  325. n | a.
  326. 0    \f(CR0-9A-Z_.\fP from Latin-1 (ISO 8859-1),
  327. 1    portable filename character set \f(CR0-9A-Za-z_.-\fP (POSIX 1003.1),
  328. 2    $G sub 0$ set from Latin-1,
  329. 3    all graphic characters from Latin-1, and
  330. 255    T{
  331. defined via escape sequences \(em the full scale mechanisms
  332. \ of ISO 2022, which are only rarely implemented.
  333. T}
  334. .TE
  335. .DE
  336. .fi
  337. .HU "International Activity"
  338. The appropriate \s-1ISO\s0 committee (\s-1SC15\s0)
  339. has been reconstituted with Japan supplying secretariat duties.
  340. A meeting is expected in July or September
  341. and it is hoped that there will be close cooperation between X3B11.1
  342. and \s-1SC15\s0.
  343. There is some concern that \s-1ANSI\s0 might awaken the long-dormant
  344. file structure committee
  345. and that this might delay acceptance of X3B11.1's work.
  346. Also,
  347. because of a request by a working group
  348. involved in the Philips \s-1CD-WO\s0 device
  349. (a combination medium
  350. that is a 5.25in \s-1WORM\s0 with a \s-1CD-ROM\s0 portion),
  351. \s-1ECMA\s0 might also reconstitute
  352. its file structure committee (\s-1TC15\s0).
  353. .HU "Finale"
  354. What can, or should, you do?
  355. As always, I welcome any feedback,
  356. specific or general on the work our committee does.
  357. (I must express my appreciation to USENIX for publishing these reports;
  358. nearly all the mail I have received about X3B11.1's work
  359. starts off like,
  360. ``I read your report in the so-and-so
  361. .I login; ''.)
  362. In particular,
  363. I invite comments on any fields or attributes you would like standardized and
  364. \(em perhaps more important to the Unix community \(em
  365. how to access auxiliary information about a file in
  366. .I "a standard way" .
  367. Plenty of ad hoc solutions already exist
  368. for the cases of versioned files
  369. (\s-1VMS\s0 file systems on Ultrix systems),
  370. Macintosh files mounted as \s-1NFS\s0 file systems,
  371. and \s-1CD-ROM\s0 file systems.
  372. The number of these problems will certainly increase over time;
  373. we need to address the solutions now
  374. before we standardize on file system interfaces (such as 1003.8)
  375. that omit such mechanisms.
  376. .P
  377. If you would like more details on X3B11.1's work,
  378. you should contact either me
  379. (\f(CRandrew@research.att.com\fP,
  380. (908)\ 582-6262)
  381. or the committee chair,
  382. Ed Beshore (\f(CRedb@hpgrla.hp.com\fP).
  383. I think the two most useful documents
  384. are the current draft of the working paper
  385. (about 80 pages)
  386. and a programmer's guide to the draft
  387. (about 12 pages written by me).
  388. I will send you copies of the latter document;
  389. requests for other documents or more general inquiries about X3B11.1's work
  390. would be best sent to Ed Beshore.
  391. .P
  392. The next meeting is in North Falmouth, \s-1MA\s0 on April 23\-26, 1991.
  393. Anyone interested in attending should contact either me or Ed Beshore.
  394.  
  395.