On Thu, Dec 13, 2007 at 11:43:43PM +0300, Dmitry Monakhov (dmonakhov@xxxxx) wrote: > On 14:47 Mon 10 Dec , Evgeniy Polyakov wrote: > > > > Network state machine. > > > > Includes network async processing state machine and related tasks. > Hi, I've tried to play a little bit with DST and discover huge memory > leak. Every read request from remote node result in bio + bio's pages leak. > > Data flow: > ->kst_export_ready ## prepare and submit bio > ->generic_make_request(bio) ## submit it > > ->kst_export_read_end_io ## block layer call bio_end_io callback > > ->kst_thread_process_state ## process ready requests > ->kst_data_callback > ->kst_data_process_bio ## submit pages to network layer > ->kst_complete_req > ->kst_bio_endio > ->kst_export_read_end_io ## WoW we calling the same bio_end_io > ## callback twice > ->dst_free_request(req); ## request will be destroyed but it's bio > ## and all bio's pages wasn't released. > We may release bio's pages after it was sent to network, it is safe because > sendpage() already called get_page(). I've attached simple patch which > this this. Yes, your patch looks good. Thanks a lot, Dmitry. -- Evgeniy Polyakov - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html