I tried to write regression test. However, Lustre client has way to determine file size on client side. So, it seems hard to reproduce the issue on client side.
I collected following messages when doing following things on Lustre without patch (all Lustre client and servers runs on the same machine):
dd if=/dev/zero of=file bs=4095 count=1
sync
echo 3 > /proc/sys/vm/drop_caches
dd if=file of=/dev/null bs=1048576
[root@server1 lustre]# grep tgt_brw_read /tmp/lustre.log | grep leaving
00000020:00000001:0.0:1446642073.288612:0:10887:0:(tgt_handler.c:1915:tgt_brw_read()) Process leaving (rc=4096 : 4096 : 1000)
[root@server1 lustre]# grep 4095 /tmp/lustre.log
00020000:00000001:0.0:1446642073.282732:0:12771:0:(lov_offset.c:68:lov_stripe_size()) Process leaving (rc=4095 : 4095 : fff)
00020000:00000001:0.0:1446642073.282733:0:12771:0:(lov_offset.c:68:lov_stripe_size()) Process leaving (rc=4095 : 4095 : fff)
00000080:00000001:1.0:1446642073.288760:0:12771:0:(file.c:1302:ll_file_aio_read()) Process leaving (rc=4095 : 4095 : fff)
00000080:00000001:1.0:1446642073.288762:0:12771:0:(file.c:1332:ll_file_read()) Process leaving (rc=4095 : 4095 : fff)
00020000:00000001:1.0:1446642073.288856:0:12771:0:(lov_offset.c:68:lov_stripe_size()) Process leaving (rc=4095 : 4095 : fff)
00020000:00000001:1.0:1446642073.288857:0:12771:0:(lov_offset.c:68:lov_stripe_size()) Process leaving (rc=4095 : 4095 : fff)
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/17060/
Subject:
LU-7371test: wrong read length over isizeProject: fs/lustre-release
Branch: master
Current Patch Set:
Commit: 7023698133970372031a16beac276e5e3e64cfbe