On Fri, 3 Jun 2011, Tommi Virtanen wrote:
> On Fri, Jun 03, 2011 at 01:40:44PM +0300, Fyodor Ustinov wrote:
> > Hi!
> > 
> > kernel 2.6.39
> > ceph - 0.28.2
> > 
> > In sysctl.conf set
> > vm.min_free_kbytes=262144
> > 
> > Jun  2 03:08:17 amanda kernel: [35398.757055] libceph: msg_new can't
> > allocate 4096 bytes
> 
> ... so first you run out of memory ...
> 
> > Jun  3 13:33:10 amanda kernel: [159291.960881] ------------[ cut
> > here ]------------
> > Jun  3 13:33:10 amanda kernel: [159291.960930] kernel BUG at
> > mm/mempool.c:186!
> ...
> > Jun  3 13:33:10 amanda kernel: [159291.970496] Call Trace:
> > Jun  3 13:33:10 amanda kernel: [159291.970496]  [<ffffffffa02a59e2>]
> > ceph_msgpool_destroy+0x12/0x20 [libceph]
> > Jun  3 13:33:10 amanda kernel: [159291.970496]  [<ffffffffa02a7fc3>]
> > ceph_osdc_stop+0x83/0xb0 [libceph]
> > Jun  3 13:33:10 amanda kernel: [159291.970496]  [<ffffffffa02a158d>]
> > ceph_destroy_client+0x1d/0x60 [libceph]
> 
> And then, the mempool destroy goes wrong. And that's because...
> 
> /**
>  * mempool_destroy - deallocate a memory pool
>  * @pool:      pointer to the memory pool which was allocated via
>  *             mempool_create().
>  *
>  * this function only sleeps if the free_fn() function sleeps. The caller
>  * has to guarantee that all elements have been returned to the pool (ie:
>  * freed) prior to calling mempool_destroy().
>  */
> void mempool_destroy(mempool_t *pool)
> {
>       /* Check for outstanding elements */
>       BUG_ON(pool->curr_nr != pool->min_nr);
>       free_pool(pool);
> }
> 
> We didn't empty the pool before trying to release it. It's either one
> of these
> 
>       ceph_msgpool_destroy(&osdc->msgpool_op);
>       ceph_msgpool_destroy(&osdc->msgpool_op_reply);
> 
> but I can't easily tell which one.
> 
> Summary so far: we're leaking msgpool_op or msgpool_op_reply entries
> when unmounting kclient while out of memory.
> 
> devs: If anyone else has a good idea where this is heading, please
> take over.

Argh, I just saw this yesterday (#1136) but saved the wrong log file.  
I'll see if I can reproduce.

sage
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to