nomad@hydra.convex.com (Lee Damon) (09/28/90)
I have created the following table in scsi_hi.c and recompiled the kernel: /* start length drive interleave */ {0, 300256, &drive_tbl[DEFAULT], 1}, /* /dev/hd0 */ {0, 256, &drive_tbl[DEFAULT], 1}, /* /dev/hd1 */ {256, 10000, &drive_tbl[DEFAULT], 1}, /* /dev/hd2 */ {10256, 90000, &drive_tbl[DEFAULT], 1}, /* /dev/hd3 */ {100256, 100000, &drive_tbl[DEFAULT], 1}, /* /dev/hd4 */ {200256, 100000, &drive_tbl[DEFAULT], 1}, /* /dev/hd5 */ # endif mkfs works, df says: # df /dev/hd4 /dev/hd4 i-nodes: 1 used 33340 free blocks: 2 used 34462 free I'd think it should say 100000? When I mount the file system I get: File system Panic: Too many map blocks 2 questions: 1) What else do I need to change to make these sizes work? 2) What else do I need to change to tell the system I have 2 or more disks? (I'm trying to write to 3 Miniscribe 9380Ss - anyone already have the kernel configed for that?) thanks! nomad --------------------------------- \ play: castle!nomad or nomad@castle.org - Lee "nomad" Damon - \ work: convex!nomad or nomad@convex.com \ Marketing Computer Systems Administrator - Convex [Super]Computer Co. / \ "Blessed are the pessimists, for they have made backups." / \
kls@ditka.UUCP (Karl Swartz) (09/28/90)
> I have created the following table in scsi_hi.c and recompiled the kernel: > > /* start length drive interleave */ ... > {10256, 90000, &drive_tbl[DEFAULT], 1}, /* /dev/hd3 */ > {100256, 100000, &drive_tbl[DEFAULT], 1}, /* /dev/hd4 */ > {200256, 100000, &drive_tbl[DEFAULT], 1}, /* /dev/hd5 */ > # df /dev/hd4 > /dev/hd4 i-nodes: 1 used 33340 free blocks: 2 used 34462 free > > I'd think it should say 100000? Since Minix uses a 16-bit index to the block in a partition the largest parition you can have is 64K blocks. More precisely, you can have at most 64K *zones* in a partition, where a zone defaults to one block but can be more. The release notes from Bruce say this is untested, and in fact >= 32K is untested. I tried a 60,000 block partition and also ran into the panic with message about too many map blocks. Investigation led me to the following #defines in fs/const.h: #define ZMAP_SLOTS 6 #define I_MAP_SLOTS 4 #define NR_SUPERS 5 According to my calculations a 60,000 block (er, zone) partition would require ZMAP_SLOTS to be at least 8. I_MAP_SLOTS should be fine as 4 allows for 32K inodes, more than enough for the largest partition according to the default of one inode for every three zones. NR_SUPERS is just the size of the mount table, in effect, and can be increased as needed. Anyway, I increased ZMAP_SLOTS to 8. This produced a kernel which would bail out to the ROM monitor (bpt rather than panic) during boot, right about where I'd expect it to start mounting partitions. Somewhere here I recall a comment that the filesystem in 1.3 is broken in various ways with regard to partitions >= 32K zones, and perhaps with zones of > 1 block. I think 1.5 is supposed to fix this. > 1) What else do I need to change to make these sizes work? I'd suggest using smaller (< 32K) partitions for the moment. > 2) What else do I need to change to tell the system I have 2 or more disks? Look in kernel/scsi_hi.c for the definition of drive_tbl, right before partition_tbl. Define your drives here, then reference the appropriate drive in the third parameter of each partition table entry. -- Karl Swartz |UUCP {uunet,decwrl}!daver!ditka!kls 1-408/223-1308 |INet zygot!ditka!kls@apple.com "I never let my schooling get in |BIX kswartz the way of my education."(Twain) |Snail 1738 Deer Creek Ct., San Jose CA 95148