> On Feb 5, 2017, at 1:33 PM, Johnny Billquist <[email protected]> wrote:
> 
> On 2017-02-05 19:21, Paul Koning wrote:
>> 
>>> On Feb 5, 2017, at 7:55 AM, Johnny Billquist <[email protected]> wrote:
>>> 
>>> I'm not entirely clear about what you mean by "porting".
>>> 
>>> Are you talking about getting the files and file system across from one 
>>> type of device to another? If so, it might depend on the file system in 
>>> question, but for the ones I can think of, in general, you can just copy 
>>> the content to a larger device and it works just fine. You will not get 
>>> access to the extra space though, as the existing file system only knows 
>>> about the blocks that existed when it was created.
>> 
>> For RSTS, that's often not true, for two reasons.  One is the "cluster 
>> size".  There's the device cluster size and the pack cluster size.  The 
>> former is the power of two such that device size in blocks divided by that 
>> cluster size is <= 65536.  The pack cluster size is the file system 
>> allocation unit.  It must be >= the device cluster size.  If you put a small 
>> device file system on a larger device, it may have too small a pack cluster 
>> size.
>> 
>> The other, more limiting, issue is that the free cluster bitmap (file 
>> [0,1]satt.sys) must be large enough for the device the file system sits on.  
>> If the pack cluster size still works for the device in question (for RL01 
>> vs. RL02 that would always be true) you may well have a bitmap file that's 
>> too short for the larger device.
>> 
>> Both of these issues will cause the OS to complain when you try to mount the 
>> file system.
> 
> Paul, I don't know much about the internals of RSTS/E (as you might know). 
> Are RSTS/E going through these kind of checks on mount? In RSX, various kinds 
> of parameters are stored in the FS home block, and what is used on all future 
> mounts, and processing. These structures and data are just assumed to be 
> inherently consistent, and no check is made against the actual disk drive, to 
> check if the number of blocks on that device match against these structures.

Yes, they actually are checked.  The first one has to be, because file system 
related I/O is done in terms of device clusters (so the addresses are 16 bits) 
and since various file system pointers are in units of pack clusters, it needs 
to calculate pcs/dcs to get the conversion factor.  If that is zero (because 
pcs < dcs) it complains.

There are also validity checks on the storage bitmap file.  It clearly would be 
straightforward to accept other size bitmaps, but that's not how the code is 
written.

        paul

_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to