Re: need help about _ASSERT_H in dout

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

 



On Mon, 6 Feb 2017, kefu chai wrote:
> On Mon, Feb 6, 2017 at 7:00 PM, liuchang0812 <liuchang0812@xxxxxxxxx> wrote:
> > hi, Sage and Cephers
> >
> > I tried to use boost::algorithm in os/bluefs.cc this afternoon. I got
> > such error when i included "boost/algorithm/string.hpp".
> >
> > /home/liuchang/WorkSpace/ceph/src/os/bluestore/BlueFS.cc: In member
> > function ‘int BlueFS::add_block_device(unsigned int,
> > std::__cxx11::string)’:
> > /home/liuchang/WorkSpace/ceph/src/common/dout.h:81:12: error: base
> > operand of ‘->’ is not a pointer
> >    _ASSERT_H->_log->submit_entry(_dout_e);  \
> >
> >
> > I have found this commit[1] that includes _ASSERT_H. i can't
> > understand why replace _dout_cct with _ASSERT_H and what
> > boost::algorithm confilicts with _ASSERT_H。
> 
> because boost/algorithm/string.hpp includes "assert.h" from libc. you
> need to re-included "include/assert.h" to override the `assert()` from
> libc.

or better yet, include the boost headers early, before any ceph headers 
get included, such that ceph's assert.h is still only included once.

sage

> 
> >
> > thanks, any comments are appreciated.
> >
> >
> > [1]: https://github.com/ceph/ceph/commit/a30601a1b69c3f1ac5cfa592050877aec8b5be9d
> >
> > [2]: more log as :
> >
> > /home/liuchang/WorkSpace/ceph/src/os/bluestore/BlueFS.cc: In member
> > function ‘int BlueFS::add_block_device(unsigned int,
> > std::__cxx11::string)’:
> > /home/liuchang/WorkSpace/ceph/src/common/dout.h:81:12: error: base
> > operand of ‘->’ is not a pointer
> >    _ASSERT_H->_log->submit_entry(_dout_e);  \
> >             ^
> > /home/liuchang/WorkSpace/ceph/src/os/bluestore/BlueFS.cc:119:65: note:
> > in expansion of macro ‘dendl’
> >    dout(10) << __func__ << " bdev " << id << " path " << path << dendl;
> >                                                                  ^
> > /home/liuchang/WorkSpace/ceph/src/common/dout.h:62:18: warning: unused
> > variable ‘_dout_cct’ [-Wunused-variable]
> >      CephContext *_dout_cct = cct;     \
> >                   ^
> > /home/liuchang/WorkSpace/ceph/src/common/dout.h:66:24: note: in
> > expansion of macro ‘dout_impl’
> >  #define ldout(cct, v)  dout_impl(cct, dout_subsys, v) dout_prefix
> >                         ^
> > /home/liuchang/WorkSpace/ceph/src/common/debug.h:23:17: note: in
> > expansion of macro ‘ldout’
> >  #define dout(v) ldout((dout_context), v)
> >                  ^
> > /home/liuchang/WorkSpace/ceph/src/os/bluestore/BlueFS.cc:119:3: note:
> > in expansion of macro ‘dout’
> >    dout(10) << __func__ << " bdev " << id << " path " << path << dendl;
> > --
> > 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
> 
> 
> 
> -- 
> Regards
> Kefu Chai
> --
> 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