<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<tt></tt> 
<br><tt>Hi Castor,</tt><tt></tt>
<p><tt>While I have had some success with this patch on x86 and</tt>
<br><tt>x86_64 machines, I haven't been so fortunate with other</tt>
<br><tt>architectures.</tt><tt></tt>
<p><tt>On ia64 machines for example, it quite often is unable</tt>
<br><tt>to determine the .data segment address of a module, leaving</tt>
<br><tt>it as 0, so there is no improvement over the current way it works.</tt><tt></tt>
<p><tt>On the s390x, it actually causes a pretty serious regression.</tt>
<br><tt>For example without the patch, here are the data addresses</tt>
<br><tt>of the ext3 module before and after it gets loaded:</tt><tt></tt>
<p><tt>$ /usr/bin/crash -s vmlinux-2.6.18-1.2767.el5</tt>
<br><tt>crash> sym -m ext3 | grep "([dD])"</tt>
<br><tt>208bfea0 (d) ext3_dir_operations</tt>
<br><tt>208bff88 (d) ext3_file_operations</tt>
<br><tt>208c0070 (d) ext3_ordered_aops</tt>
<br><tt>208c00e0 (d) ext3_writeback_aops</tt>
<br><tt>208c0150 (d) ext3_journalled_aops</tt>
<br><tt>208c01c0 (d) ext3_xattr_handler_map</tt>
<br><tt>208c01f8 (d) ext3_file_inode_operations</tt>
<br><tt>208c02a0 (d) ext3_dir_inode_operations</tt>
<br><tt>208c0348 (d) ext3_special_inode_operations</tt>
<br><tt>208c03f0 (d) ext3_fs_type</tt>
<br><tt>208c0430 (d) ext3_sops</tt>
<br><tt>208c04d8 (d) ext3_export_ops</tt>
<br><tt>208c0508 (d) ext3_qctl_operations</tt>
<br><tt>208c0560 (d) ext3_quota_operations</tt>
<br><tt>208c05c0 (d) ext3_symlink_inode_operations</tt>
<br><tt>208c0668 (d) ext3_fast_symlink_inode_operations</tt>
<br><tt>208c0710 (d) ext3_xattr_handlers</tt>
<br><tt>208c0740 (d) tokens</tt>
<br><tt>208c0a40 (d) ext3_xattr_user_handler</tt>
<br><tt>208c0a60 (d) ext3_xattr_trusted_handler</tt>
<br><tt>208c0a80 (d) ext3_xattr_acl_access_handler</tt>
<br><tt>208c0aa0 (d) ext3_xattr_acl_default_handler</tt>
<br><tt>208c0ac0 (d) ext3_xattr_security_handler</tt>
<br><tt>208c0b00 (d) __this_module</tt>
<br><tt>crash> mod -s ext3</tt>
<br><tt>     MODULE      
NAME                 
SIZE  OBJECT FILE</tt>
<br><tt>        208c0b00  ext3               
200208  /lib/modules/2.6.18-1.2767.el5/kernel/fs/ext3/ext3.ko</tt>
<br><tt>crash> sym -m ext3 | grep "([dD])"</tt>
<br><tt>208bfea0 (d) ext3_dir_operations</tt>
<br><tt>208bff88 (d) ext3_file_operations</tt>
<br><tt>208c0070 (d) ext3_ordered_aops</tt>
<br><tt>208c00e0 (d) ext3_writeback_aops</tt>
<br><tt>208c0150 (d) ext3_journalled_aops</tt>
<br><tt>208c01c0 (d) ext3_xattr_handler_map</tt>
<br><tt>208c01f8 (d) ext3_file_inode_operations</tt>
<br><tt>208c02a0 (d) ext3_dir_inode_operations</tt>
<br><tt>208c0348 (d) ext3_special_inode_operations</tt>
<br><tt>208c03f0 (d) ext3_fs_type</tt>
<br><tt>208c0430 (d) ext3_sops</tt>
<br><tt>208c04d8 (d) ext3_export_ops</tt>
<br><tt>208c0508 (d) ext3_qctl_operations</tt>
<br><tt>208c0560 (d) ext3_quota_operations</tt>
<br><tt>208c05c0 (d) ext3_symlink_inode_operations</tt>
<br><tt>208c0668 (d) ext3_fast_symlink_inode_operations</tt>
<br><tt>208c0710 (d) ext3_xattr_handlers</tt>
<br><tt>208c0740 (d) tokens</tt>
<br><tt>208c0a40 (d) ext3_xattr_user_handler</tt>
<br><tt>208c0a60 (d) ext3_xattr_trusted_handler</tt>
<br><tt>208c0a80 (d) ext3_xattr_acl_access_handler</tt>
<br><tt>208c0aa0 (d) ext3_xattr_acl_default_handler</tt>
<br><tt>208c0ac0 (d) ext3_xattr_security_handler</tt>
<br><tt>208c0b00 (d) __this_module</tt>
<br><tt>crash></tt><tt></tt>
<p><tt>That looks fine...</tt><tt></tt>
<p><tt>However, with the patch applied, I get the following behavior:</tt><tt></tt>
<p><tt>$ crash*14/crash -s vmlinux-2.6.18-1.2767.el5</tt>
<br><tt>crash> sym -m ext3 | grep "([dD])"</tt>
<br><tt>208bfea0 (d) ext3_dir_operations</tt>
<br><tt>208bff88 (d) ext3_file_operations</tt>
<br><tt>208c0070 (d) ext3_ordered_aops</tt>
<br><tt>208c00e0 (d) ext3_writeback_aops</tt>
<br><tt>208c0150 (d) ext3_journalled_aops</tt>
<br><tt>208c01c0 (d) ext3_xattr_handler_map</tt>
<br><tt>208c01f8 (d) ext3_file_inode_operations</tt>
<br><tt>208c02a0 (d) ext3_dir_inode_operations</tt>
<br><tt>208c0348 (d) ext3_special_inode_operations</tt>
<br><tt>208c03f0 (d) ext3_fs_type</tt>
<br><tt>208c0430 (d) ext3_sops</tt>
<br><tt>208c04d8 (d) ext3_export_ops</tt>
<br><tt>208c0508 (d) ext3_qctl_operations</tt>
<br><tt>208c0560 (d) ext3_quota_operations</tt>
<br><tt>208c05c0 (d) ext3_symlink_inode_operations</tt>
<br><tt>208c0668 (d) ext3_fast_symlink_inode_operations</tt>
<br><tt>208c0710 (d) ext3_xattr_handlers</tt>
<br><tt>208c0740 (d) tokens</tt>
<br><tt>208c0a40 (d) ext3_xattr_user_handler</tt>
<br><tt>208c0a60 (d) ext3_xattr_trusted_handler</tt>
<br><tt>208c0a80 (d) ext3_xattr_acl_access_handler</tt>
<br><tt>208c0aa0 (d) ext3_xattr_acl_default_handler</tt>
<br><tt>208c0ac0 (d) ext3_xattr_security_handler</tt>
<br><tt>208c0b00 (d) __this_module</tt>
<br><tt>crash> mod -s ext3</tt>
<br><tt>     MODULE      
NAME                 
SIZE  OBJECT FILE</tt>
<br><tt>        208c0b00  ext3               
200208  /lib/modules/2.6.18-1.2767.el5/kernel/fs/ext3/ext3.ko</tt>
<br><tt>crash> sym -m ext3 | grep "([dD])"</tt>
<br><tt>0 (D) __this_module</tt>
<br><tt>0 (D) ext3_dir_operations</tt>
<br><tt>0 (D) ext3_file_inode_operations</tt>
<br><tt>0 (d) tokens</tt>
<br><tt>a8 (D) ext3_dir_inode_operations</tt>
<br><tt>e8 (D) ext3_file_operations</tt>
<br><tt>150 (D) ext3_special_inode_operations</tt>
<br><tt>1d0 (d) ext3_ordered_aops</tt>
<br><tt>1f8 (d) ext3_fs_type</tt>
<br><tt>238 (d) ext3_sops</tt>
<br><tt>240 (d) ext3_writeback_aops</tt>
<br><tt>2b0 (d) ext3_journalled_aops</tt>
<br><tt>2e0 (d) ext3_export_ops</tt>
<br><tt>300 (D) ext3_xattr_user_handler</tt>
<br><tt>310 (d) ext3_qctl_operations</tt>
<br><tt>320 (d) ext3_xattr_handler_map</tt>
<br><tt>320 (D) ext3_xattr_trusted_handler</tt>
<br><tt>340 (D) ext3_xattr_acl_access_handler</tt>
<br><tt>360 (D) ext3_xattr_acl_default_handler</tt>
<br><tt>368 (d) ext3_quota_operations</tt>
<br><tt>380 (D) ext3_xattr_security_handler</tt>
<br><tt>3c8 (D) ext3_symlink_inode_operations</tt>
<br><tt>470 (D) ext3_fast_symlink_inode_operations</tt>
<br><tt>518 (D) ext3_xattr_handlers</tt>
<br><tt>crash></tt><tt></tt>
<p><tt>I haven't been able to test it on a ppc64 or s390.  (That's</tt>
<br><tt>why I asked for help from others on the mailing list to test</tt>
<br><tt>it out, but I didn't get any takers...)</tt><tt></tt>
<p><tt>In any case, as much as I like what the patch wants to do,</tt>
<br><tt>I can't accept it given such a serious regression.  Perhaps</tt>
<br><tt>it could be made an experimental run-time option that could</tt>
<br><tt>be turned on prior to doing any "mod" commands, leaving the</tt>
<br><tt>current behaviour in place by default?</tt><tt></tt>
<p><tt>Thanks,</tt>
<br><tt>  Dave</tt>
<br><tt></tt> </html>