I too have applied Ben's patches and the time taken to write the kernel sources to a CDRW on a 32x12x40 burner has reduced dramatically (from > 50 minutes to < 5). Good work. But something else appears to have happened as well. For a week or two (and, I freely admit, without really knowing what i am looking for), I have been digging around seeing if I could find what might be causing the file corruption (2048 bytes of 0's) when large numbers of files (like the kernel sources) are written to a packet-formatted CDRW ). Having applied Ben's patches, that problem seems to have gone away too! This is what I am doing: cdrwtool -d /dev/sr0 -q pktsetup /dev/pktcdvd0 /dev/sr0 mount -t udf -o rw,noatime /dev/pktcdvd0 /cdrw cp -r linux /cdrw diff -ar --brief linux /cdrw/linux >> linux.diff At the end of this, linux.diff is empty My kernel is 2.4.19-rc3 with packet-cd 2.4.19-rc1 and updated with udf 0.9.6 with Ben's patches applied. Just to be sure, I've gone back to a 2.4.19-rc3 kernel without the udf patches, rerun the whole test again, and sure enough diff throws up faults again (14 files were different which is pretty typical in my experience). I can't see nything wrong with the way i am testing this. Is anyone else getting similar results please? Chris On Friday 19 July 2002 10:37 pm, Ben Fennema wrote:
On Fri, Jul 19, 2002 at 11:21:54PM +0200, Peter Osterlund wrote:
Yes it works perfectly. I applied it to the 2.4 cvs tree then copied it into the 2.4.19-rc2 tree. Compilation complained about a missing i_bh struct member, but this patch fixed it:
--- udf_fs_i.h.orig Fri Jul 19 23:06:35 2002 +++ udf_fs_i.h Fri Jul 19 21:53:43 2002 @@ -47,6 +47,7 @@ unsigned i_strat_4096 : 1; unsigned i_new_inode : 1; unsigned reserved : 26; + struct buffer_head *i_bh; };
#endif
Oops.. forgot about that part of the tree =]
i_new_inode goes away as well, so it becomes:
Index: udf_fs_i.h =================================================================== RCS file: /cvsroot/linux-udf/udf/include/linux/udf_fs_i.h,v retrieving revision 1.23 diff -u -p -r1.23 udf_fs_i.h --- udf_fs_i.h 15 Mar 2002 06:47:25 -0000 1.23 +++ udf_fs_i.h 19 Jul 2002 21:37:33 -0000 @@ -30,6 +30,7 @@ typedef struct
struct udf_inode_info { + struct buffer_head *i_bh; long i_umtime; long i_uctime; long i_crtime; @@ -45,8 +46,7 @@ struct udf_inode_info unsigned i_alloc_type : 3; unsigned i_extended_fe : 1; unsigned i_strat_4096 : 1; - unsigned i_new_inode : 1; - unsigned reserved : 26; + unsigned reserved : 27; #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,3) struct inode vfs_inode; #endif
With your patch, there are no reads when adding files. It appears to be just as efficient as ext2. Good work!
Excellent!
Ben