Subject: Disk IO / UVM and Crypt FS..
To: tech-kern <tech-kern@netbsd.org>
From: Jorgen Lundman <lundman@lundman.net>
List: tech-kern
Date: 05/08/2002 10:56:02
Hi guys,
Sorry to bring this up again, but I wrote some modifications to 'ccd' to
do a simple encrypted FS. This has been fine and working for me for
about 6 months now, in 1.5, 1.5.2, 1.5.2-release and a couple of
-current's after that.
But I recently acquired a 160g HD, so I fetched the very latest -current
(as of yesterday), the patches went in fine as there had been no
modifications to ccd.c[1], a little bit of clean up in
crypto/blowfish/bf_cdc.c but otherwise fine.
However, it now is fairly keen on panicing. I can create directories on
an crypted-ccd fine (using XOR method with key of ' ' (space) for
debugging) shows it is working, master disklabel is untouched, the ccd
disklabel is 'encrypted' and so is the directory:
mkdir /mnt/This.Is.A.Directory
May 2 03:23:29 fjord /netbsd: ccd_decode(0xd0451000, 8192, 128)
May 2 03:23:29 fjord /netbsd: ccd_decode(0xc8511000, 1024, 2912)
May 2 03:23:29 fjord /netbsd: ccd_decode(0xc7681000, 8192, 44154992)
[cut] memory address, size, block-num )
dd if=/dev/rwd1d of=disk count=2048 bs=1024
001EC020: 74484953 0E69530E 610E6449 52454354 |tHIS.iS.a.dIRECT|
001EC030: 4F525920 20202020 20202020 20202020 |ORY |
That is fine, however, when I eventually go to write a small file to
disk, the initial process works, but if you enter 'sync' to flush it (or
just wait) it'll die when it actually goes to write the data.
fjord# cp ccdvar.h /mnt/
May 2 03:27:39 fjord /netbsd: ccd_decode(0xce521000, 8192, 112)
May 2 03:27:39 fjord /netbsd: ccd_encode(0xd0451000, 8192, 128)
May 2 03:27:39 fjord /netbsd: ccd_decode(0xd0451000, 8192, 128)
May 2 03:27:39 fjord /netbsd: ccd_encode(0xc8511000, 1024, 2912)
May 2 03:27:39 fjord /netbsd: ccd_decode(0xc8511000, 1024, 2912)
fjord#
fjord# sync
May 2 03:27:43 fjord /netbsd: ccd_encode(0xc4b33000, 8192, 2928)
uvm_fault(0xc063ef00, 0xcb33000, 0, 2) -> e
kernel: page fault trap, code=0
Stopped in pid 819 (sync) at ccd_encode+0x83: xorb %al, 0(%edx)
db>
Obviously something has changed, and I have to fix it. I was hoping
someone perhaps had an idea of what is going wrong to shorten the time
required to debug it. Are those memory-pages now protected (I can't
modify them), do I now need to lock them perhaps incase there are
concurrant references or am I barking up the wrong tree.
Lundy
[1] - Some clean up done, removed M_CLEAR from most malloc calls etc.
"Shouldn't" affect it?
--
Jorgen "Lord" Lundman <lundman@lundman.net>
Technology Manager, Unix Administrator
Phone: +44 (0)20-86591860 Mobile: +44 (0)79-58642918
Pager: 07958642918@one2one.net
"Rare is the person who can weigh the faults of others
without putting his thumb on the scales": Byron J. Langenfeld