On 2015-04-07 20:54, Pete Turnbull wrote:
  On 07/04/2015 19:26, Johnny Billquist wrote:
 > Well, yes, it's still bad, and still
there, but all the RT-11
> utilities
> use the substitute block.
 So COPY/DEV is essentially only usable for opying RT-11 disks on RT-11
 systems. :-)
 Nothing wrong with that, mind you. 
 Well, no, actually; I've been using it (under RT-11 V5.7) to copy other
 OS disks (mainly 7th Edition Unix) because it does that perfectly well
 :-)  When the DL.SYS driver sees a disk changed, it reads the
 manufacturing defect list so it's still good to copy most disks. 
 But since the 7th edition Unix most likely do not treat the bad blocks
 the same way as RT-11 does (skipping bad blocks), that means blocks
 will get renumbered, and 7th edition will end up with a very corrupt
 and broken file system.
 Essentially, this will only work well if you don't have any bad blocks
 on the device.
 Just because you have a manufacturer bad block list on the disk, that
 does not mean that different OSes handle the disk the same way.
 Let me give you a very silly example.
 Let's say we have a file system where each disk block points to the
 next disk block in a file, and that the OS address each disk block in
 an absolute manner. Bad blocks do not affect the block numbering.
 Let's then say that we have the following 5 blocks:
 Block #        Content
 n:        n+1
 n+1:        n+3
 n+2:        <bad block>
 n+3:        n+4
 n+4:        0 (EOF)
 Now, if RT treats this as skipping over the bad blocks, it would skip
 n+2, while n+3 would on the target device become n+2. However, block
 n+1 still points to n+3, so now we skip over one block of the file.
 Which means we corrupted the disk.
 I could create a whole bunch of similar scenarios, but I'm sure you
 can too. :-)
     Johnny
 
 I don't see any way that bad blocks can just be skipped over in the
 numbering system. This would mean you had no reasonable way of doing
 random block access to the RL0x device without some type of lookup table.
 RL0x does head/cylinder/sector addressing, so a direct block address
 could be decomposed into a specific H/C/S by a simple set of equations.
 If you throw skipping arbitrary bad sectors in the mix this no longer
 works.
 So I see that replacement of bad sectors inline (using the '144 mapping
 table and data) as the only reasonable approach.
 My opinion of course.