Re: MD-RAID: Use seq_putc() in three status functions?

From: SF Markus Elfring
Date: Tue Oct 18 2016 - 14:21:58 EST


> So back to the original task for you: Show me in the generated output where the benefits are.

I can offer a bit more information for this software development discussion.


The afffected source files can be compiled for the processor architecture "x86_64"
by a tool like "GCC 6.2.1+r239849-1.3" from the software distribution
"openSUSE Tumbleweed" with the following command examples.

git checkout next-20161014 && my_cc=/usr/bin/gcc-6 && make HOSTCC="${my_cc}" allmodconfig && make -j6 HOSTCC="${my_cc}" drivers/md/
git checkout next_usage_of_seq_putc_in_md_raid_1 && my_cc=/usr/bin/gcc-6 && make HOSTCC="${my_cc}" allmodconfig && make -j6 HOSTCC="${my_cc}" drivers/md/


The tool "objdump" from the software package "binutils 2.27-1.3" can be used
to get corresponding disassemblies for a file like "drivers/md/raid1.obj"
which can then be compared as follows.


--- ../disassembly-md-raid1-next-20161014-1.txt 2016-10-18 18:00:12.341222741 +0200
+++ ../disassembly-md-raid1-seq_putc-1.txt 2016-10-18 18:03:54.135887333 +0200
@@ -3349,7 +3349,7 @@
37ad: 85 c0 test %eax,%eax
37af: 74 0d je 37be <raid1_status+0x9e>
37b1: 80 3d 00 00 00 00 00 cmpb $0x0,0x0(%rip) # 37b8 <raid1_status+0x98>
- 37b8: 0f 84 1d 01 00 00 je 38db <raid1_status+0x1bb>
+ 37b8: 0f 84 1b 01 00 00 je 38d9 <raid1_status+0x1b9>
37be: 4c 89 ff mov %r15,%rdi
37c1: 31 db xor %ebx,%ebx
37c3: e8 00 00 00 00 callq 37c8 <raid1_status+0xa8>
@@ -3404,42 +3404,43 @@
3891: 85 c0 test %eax,%eax
3893: 74 09 je 389e <raid1_status+0x17e>
3895: 80 3d 00 00 00 00 00 cmpb $0x0,0x0(%rip) # 389c <raid1_status+0x17c>
- 389c: 74 6e je 390c <raid1_status+0x1ec>
+ 389c: 74 6c je 390a <raid1_status+0x1ea>
389e: 48 c7 c2 00 00 00 00 mov $0x0,%rdx
38a5: be 01 00 00 00 mov $0x1,%esi
38aa: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
38b1: 65 ff 0d 00 00 00 00 decl %gs:0x0(%rip) # 38b8 <raid1_status+0x198>
38b8: e8 00 00 00 00 callq 38bd <raid1_status+0x19d>
38bd: 4c 89 f7 mov %r14,%rdi
- 38c0: 48 c7 c6 00 00 00 00 mov $0x0,%rsi
- 38c7: e8 00 00 00 00 callq 38cc <raid1_status+0x1ac>
- 38cc: 48 83 c4 10 add $0x10,%rsp
- 38d0: 5b pop %rbx
- 38d1: 41 5c pop %r12
- 38d3: 41 5d pop %r13
- 38d5: 41 5e pop %r14
- 38d7: 41 5f pop %r15
- 38d9: 5d pop %rbp
- 38da: c3 retq
- 38db: e8 00 00 00 00 callq 38e0 <raid1_status+0x1c0>
- 38e0: 84 c0 test %al,%al
- 38e2: 0f 85 d6 fe ff ff jne 37be <raid1_status+0x9e>
- 38e8: 48 c7 c2 00 00 00 00 mov $0x0,%rdx
- 38ef: be 69 03 00 00 mov $0x369,%esi
- 38f4: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
- 38fb: c6 05 00 00 00 00 01 movb $0x1,0x0(%rip) # 3902 <raid1_status+0x1e2>
- 3902: e8 00 00 00 00 callq 3907 <raid1_status+0x1e7>
- 3907: e9 b2 fe ff ff jmpq 37be <raid1_status+0x9e>
- 390c: e8 00 00 00 00 callq 3911 <raid1_status+0x1f1>
- 3911: 84 c0 test %al,%al
- 3913: 75 89 jne 389e <raid1_status+0x17e>
- 3915: 48 c7 c2 00 00 00 00 mov $0x0,%rdx
- 391c: be 9c 03 00 00 mov $0x39c,%esi
- 3921: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
- 3928: c6 05 00 00 00 00 01 movb $0x1,0x0(%rip) # 392f <raid1_status+0x20f>
- 392f: e8 00 00 00 00 callq 3934 <raid1_status+0x214>
- 3934: e9 65 ff ff ff jmpq 389e <raid1_status+0x17e>
- 3939: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
+ 38c0: be 5d 00 00 00 mov $0x5d,%esi
+ 38c5: e8 00 00 00 00 callq 38ca <raid1_status+0x1aa>
+ 38ca: 48 83 c4 10 add $0x10,%rsp
+ 38ce: 5b pop %rbx
+ 38cf: 41 5c pop %r12
+ 38d1: 41 5d pop %r13
+ 38d3: 41 5e pop %r14
+ 38d5: 41 5f pop %r15
+ 38d7: 5d pop %rbp
+ 38d8: c3 retq
+ 38d9: e8 00 00 00 00 callq 38de <raid1_status+0x1be>
+ 38de: 84 c0 test %al,%al
+ 38e0: 0f 85 d8 fe ff ff jne 37be <raid1_status+0x9e>
+ 38e6: 48 c7 c2 00 00 00 00 mov $0x0,%rdx
+ 38ed: be 69 03 00 00 mov $0x369,%esi
+ 38f2: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
+ 38f9: c6 05 00 00 00 00 01 movb $0x1,0x0(%rip) # 3900 <raid1_status+0x1e0>
+ 3900: e8 00 00 00 00 callq 3905 <raid1_status+0x1e5>
+ 3905: e9 b4 fe ff ff jmpq 37be <raid1_status+0x9e>
+ 390a: e8 00 00 00 00 callq 390f <raid1_status+0x1ef>
+ 390f: 84 c0 test %al,%al
+ 3911: 75 8b jne 389e <raid1_status+0x17e>
+ 3913: 48 c7 c2 00 00 00 00 mov $0x0,%rdx
+ 391a: be 9c 03 00 00 mov $0x39c,%esi
+ 391f: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
+ 3926: c6 05 00 00 00 00 01 movb $0x1,0x0(%rip) # 392d <raid1_status+0x20d>
+ 392d: e8 00 00 00 00 callq 3932 <raid1_status+0x212>
+ 3932: e9 67 ff ff ff jmpq 389e <raid1_status+0x17e>
+ 3937: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
+ 393e: 00 00

0000000000003940 <print_conf>:
3940: e8 00 00 00 00 callq 3945 <print_conf+0x5>
@@ -11134,7 +11135,7 @@

0000000000000000 <_GLOBAL__sub_D_65535_0_raid1.c>:
0: 55 push %rbp
- 1: be 35 00 00 00 mov $0x35,%esi
+ 1: be 34 00 00 00 mov $0x34,%esi
6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
d: 48 89 e5 mov %rsp,%rbp
10: e8 00 00 00 00 callq 15 <_GLOBAL__sub_D_65535_0_raid1.c+0x15>
@@ -11145,7 +11146,7 @@

0000000000000000 <_GLOBAL__sub_I_65535_1_raid1.c>:
0: 55 push %rbp
- 1: be 35 00 00 00 mov $0x35,%esi
+ 1: be 34 00 00 00 mov $0x34,%esi
6: 48 c7 c7 00 00 00 00 mov $0x0,%rdi
d: 48 89 e5 mov %rsp,%rbp
10: e8 00 00 00 00 callq 15 <_GLOBAL__sub_I_65535_1_raid1.c+0x15>


Does this kind of data display contain differences which are worth for further considerations?

Regards,
Markus