I pulled a new copy of CVS YAFFS2 just after Charles added his patch for
write_begin/write_end to build YAFFS for 2.6.28 kernels.
Mostly things work great, but my board locks up when I try to untar into
a large-block NAND partition my rootfs image. It's a random failure in
that when I'm running with a rootfs in RAM it fails(at different spots
on different runs), but if the rootfs is NFS, the tar succeeded(ont he
few times I tried it).
The lockup is soft (i.e. top running in another ssh'd window to the
board continues) and shows tar stuck in a "D" state. Unfortunately, my
BDI doesn't connect to this OMAP processor, and attempting to execute
commands in another shell (linke cat /proc/yaffs) lock up witht he shell
in "D" state.
With logging turned on ("+os"), I find the following in the log(showing
the operation from one file before the failed file):
yaffs locking
yaffs_lookup for 2945:Andorra
yaffs unlocking
yaffs_lookup not found
yaffs_create
yaffs_mknod: parent object 2945 type 3
yaffs_mknod: making oject for Andorra, mode 81ed dev 0
yaffs locking
yaffs_mknod: making file
yaffs unlocking
yaffs_get_inode for object 2829
yaffs_iget for 2829
yaffs locking
yaffs_FillInode mode 81ed uid 0 gid 0 size 0 count 1
yaffs unlocking
yaffs_mknod created object 2829 count = 1
start yaffs_write_begin
yaffs locking
yaffs unlocking
yaffs_readpage at 00000000, size 00001000
yaffs locking
yaffs unlocking
yaffs_readpage done
end yaffs_write_begin - ok
yaffs_write_end addr c64a2000 pos 0 nBytes 2185
yaffs locking
yaffs_file_write about to write writing 2185 bytesto object 2829 at 0
yaffs_file_write writing 2185 bytes, 2185 written at 0
yaffs_file_write size updated to 2185 bytes, 5 blocks
yaffs unlocking
yaffs locking
yaffs unlocking
yaffs_file_flush object 2829 (dirty)
yaffs locking
yaffs unlocking
yaffs_setattr of object 2829
yaffs locking
yaffs unlocking
yaffs_setattr of object 2829
yaffs locking
yaffs unlocking
yaffs_setattr of object 2829
yaffs locking
yaffs unlocking
yaffs locking
yaffs_lookup for 2945:Podgorica
yaffs unlocking
yaffs_lookup not found
yaffs_create
yaffs_mknod: parent object 2945 type 3
yaffs_mknod: making oject for Podgorica, mode 81ed dev 0
yaffs locking
yaffs_mknod: making file
yaffs_clear_inode: ino 1489, count 0 object exists
yaffs locking
yaffs_write_super
yaffs_write_super
yaffs_write_super
yaffs_write_super
It looks like a lookup for "Podgorica" came back as not there, but
creating the object for "Podgorica" needs to clear the inode which tries
to lock it, and YAFFS (and the upper FS layers) are wedged.
Any ideas on how to fix this?
--
Peter Barada <
peterb@logicpd.com>