[OpenAFS] Solaris 9 issues - making some progress

Douglas E. Engert deengert@anl.gov
Fri, 13 Aug 2004 10:14:52 -0500


Dale Ghent wrote:

> 
> I took some time today to investigate the vfsck problems on Solaris 9 
> with kernel patch 112233-12 or greater applied.
> 
> It seems that this patch did change a bit of the UFS structure. The 
> biggest visible change I've been able to find is the removal of the 
> fs_interleave member from the fs struct (defined in 
> /usr/include/sys/fs/ufs_fs.h)
> 

Do you have a diff of the old and new header files?
I have patch 112233-12 on my Solaris 9 workstation, but the AFS servers
are running with 112233-11 The files are identical.

They have  "int32_t fs_interleave; /* hardware sector interleave */

Are you sure you don't have a corrupt verison of ufs_fs.h?

The ufs_fs.h file dated as Aug 7 2003 and a lenght of 24602.
and MD5 hash of 86e95798e5c54903adb94403300c891d
with #prgma ident "@#ufs_fs.h   2.62  03/02/23 SMI"

> The ufs driver reflects this change, and that is why with a vfsck 
> compiled on a previous kernel rev fails with the "IMPOSSIBLE INTERLEAVE" 
> error. So I went into src/vfsck/setup.c and removed the references to 
> fs_interleave from the AFS_SUN5_ENV ifdef blocks. This cleared up that 
> error.
> 
> Now, the next error vfsck reports is "CANNOT READ: BLK 0". It seems that 
> the default UFS block size is 8192 bytes. I put some debugging code into 
> utilities.c at lines 409 and 412 and it is reporting block 0 being a 
> size of 1568 bytes. If I tell vfsck to continue past this error, it then 
> displays the same error but reports block 0 being 1584 bytes in size, a 
> difference of 16 bytes:
> 
> =================================================================
> [root@hfs6]/tmp/openafs-1.2.11/src/vfsck>./vfsck /dev/md/rdsk/d10
> ----Open AFS (R) openafs 1.2.11 fsck----
> ** /dev/md/rdsk/d10
> DEBUG: The size of block 16 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 71619120 is 2048 bytes. read() rv is 1
> DEBUG: The size of block 0 is 1568 bytes. read() rv is 0
> 
> CANNOT READ: BLK 0
> CONTINUE? [yn] y
> 
> THE FOLLOWING DISK SECTORS COULD NOT BE READ:
> DEBUG: The size of block 0 is 1584 bytes. read() rv is 0
> 
> CANNOT READ: BLK 0
> CONTINUE? [yn]
> =================================================================
> 
> So for some reason, the read() at utilities.c:408 is having issues with 
> block 0 being something (I can't tell what yet - I have only a basic 
> understanding of deep UFS internals) and is returning 0. If I tell vfsck 
> to continue past the second error prompt (see above output snippet, it 
> happily goes through the remaining blocks:
> 
> =================================================================
> CANNOT READ: BLK 0
> CONTINUE? [yn] y
> 
> THE FOLLOWING DISK SECTORS COULD NOT BE READ:
> ** Last Mounted on /vicepa
> ** Phase 1 - Check Blocks and Sizes
> DEBUG: The size of block 64 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 80 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 96 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 112 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 128 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 144 is 8192 bytes. read() rv is 1
> DEBUG: The size of block 160 is 8192 bytes. read() rv is 1
> ....
> ....
> =================================================================
> 
> Hopefully this can help shed some light on this issue. If someone who 
> knows more about this stuff wants me to try something, just let me know 
> and I'll do it.
> 
> /dale
> 
> _______________________________________________
> OpenAFS-info mailing list
> OpenAFS-info@openafs.org
> https://lists.openafs.org/mailman/listinfo/openafs-info
> 
> 
> 

-- 

  Douglas E. Engert  <DEEngert@anl.gov>
  Argonne National Laboratory
  9700 South Cass Avenue
  Argonne, Illinois  60439
  (630) 252-5444