Re: [PATCH 0/2] ceph: fix iov_iter issues in ceph_direct_read_write()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ilya Dryomov <idryomov@xxxxxxxxx> writes:

> On Tue, May 8, 2018 at 2:47 PM, Luis Henriques <lhenriques@xxxxxxxx> wrote:
>> Ilya Dryomov <idryomov@xxxxxxxxx> writes:
>>
>>> Hi Luis, Jeff,
>>>
>>> This is an updated version that fixes the problem with pipe buffers.
>>> I wasn't able to get "trinity -V /some/dir/in/cephfs -c splice" do it
>>> for me, but a simple "overflow the pipe" test now passes.
>>>
>>> I believe this is ready for merging.  Please take a look.
>>
>> Ok, I can confirm that I no longer see splice trashing the kernel when
>> running trinity.  However, I'm currently investigating a leak reported
>> by kmemleak.  It takes a while to trigger (same testcase: splice syscall
>> stress with trinity), but I eventually see something like:
>>
>> unreferenced object 0xffff880061a3b9d8 (size 128):
>>   comm "trinity-c0", pid 303, jiffies 4295049336 (age 5361.756s)
>>   hex dump (first 32 bytes):
>>     89 5a 51 c4 1a 90 82 fa 40 5b 8a 01 00 ea ff ff  .ZQ.....@[......
>>     c0 82 93 01 00 ea ff ff 80 71 94 01 00 ea ff ff  .........q......
>>   backtrace:
>>     [<000000005a0f2bb8>] ceph_read_iter+0xf8e/0x10b0
>>     [<00000000a8278adb>] generic_file_splice_read+0x21b/0x320
>>     [<000000004fcba43d>] __se_sys_splice+0x914/0x9a0
>>     [<00000000276d178b>] do_syscall_64+0xee/0x290
>>     [<00000000f883973e>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
>>     [<00000000eab9257f>] 0xffffffffffffffff
>>
>> It could be a false positive, not sure yet.  It may not even been
>> related with these changes.  I'll let you know what I can find.
>
> 128 bytes is 16 page pointers.  I think it's the leak I found when
> tracking down that problem with pipes.  Fixed by
>
>   https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git/commit/?h=for-linus&id=e76b6312391bdd62e31dc86cb65e478b07b7909e
>   https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git/commit/?h=for-linus&id=d7760d638b140d53c6390a2fbee9b06460b43e9e

Doh!  I haven't tested these patches, but I'm pretty sure that's it.  I
spent a lot of time staring at this code yesterday and couldn't
understand where the leak was!  I even tried with different gcc versions
to make sure this wasn't an compiler bug :-)

Anyway, thanks for fixing this!

Cheers,
-- 
Luis
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux