Conversation
|
Hi! Thanks for the fast reply! I'll try to address these issues ASAP and come back to you. Thanks! |
|
Sounds good. And yeah, since the XATTR_{CREATE,REPLACE} are coming out of system headers we should add our own #defines (with identical values). Probably CEPH_XATTR_*, in src/include/ceph_fs.h... ideally in a separate patch. Thanks! |
parameter. Ceph passes Linux setxattr flags on the wire without converting them, so use the same values for these defitions.
btrfs_ioctl.h to compile and relying on the btrfs runtime checks wherever possible.
are system-dependent. In future, we'll probably want to use system independent values as Ceph result codes, not system errno values.
Conflicts: src/Makefile.am
the system-dependent extattr code can be moved into a single place. Implement FreeBSD and Darwin support.
|
Hi! I added support for extended attributes and adressed the problems we discussed. |
|
Oh, I see. Okay, this looks good enough to merge! We can do further cleanups in master. The last thing we need is a Signed-off-by: line in the commit messages (see SubmittingPatches). While you're at it, you might rebase against the current master (there's a conflict in Makefile.am). The commit message format is normally: subsystem: short description Long description. Signed-off-by: ... |
code is returned from getxattr. Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
the buffer provided was too small similar to what Linux does. Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
…sed in sa_len on FreeBSD,
not just a size of the whole sockaddr_storage placeholder.
Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
…e of the
address object. Also, do not assume ss_family is 2 bytes
on all platforms.
Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
so they won't interfere with system definitions. Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
otherwise they fail on FreeBSD (and possibly on other
platforms).
Signed-off-by: Stanislav Sedov <stas@FreeBSD.org>
These were static in auth/Crypto.cc, which was mostly fine, except when we got a signal shutting everything down for the gcov stuff, like so: Thread 21 (Thread 2164): #0 0x00007f31a800b3cd in open64 () from /lib/libpthread.so.0 #1 0x000000000081dee0 in __gcov_open () #2 0x000000000081e3fd in gcov_exit () #3 0x00007f31a67e64f2 in exit () from /lib/libc.so.6 #4 0x000000000054e1ca in handle_signal (signal=<value optimized out>) at osd/OSD.cc:600 #5 <signal handler called> #6 0x00007f31a8007a9a in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #7 0x0000000000636d7b in Wait (this=0x2241000) at ./common/Cond.h:48 #8 SimpleMessenger::wait (this=0x2241000) at msg/SimpleMessenger.cc:2637 #9 0x00000000004a4e35 in main (argc=<value optimized out>, argv=<value optimized out>) at ceph_osd.cc:343 and a racing thread would, say, accept a connection and then crash, like so: #0 0x00007f31a800ba0b in raise () from /lib/libpthread.so.0 #1 0x0000000000696eeb in reraise_fatal (signum=2164) at global/signal_handler.cc:59 #2 0x00000000006976cc in handle_fatal_signal (signum=<value optimized out>) at global/signal_handler.cc:106 #3 <signal handler called> #4 0x00007f31a67e0ba5 in raise () from /lib/libc.so.6 #5 0x00007f31a67e46b0 in abort () from /lib/libc.so.6 #6 0x00007f31a70846bd in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/libstdc++.so.6 #7 0x00007f31a7082906 in ?? () from /usr/lib/libstdc++.so.6 #8 0x00007f31a7082933 in std::terminate() () from /usr/lib/libstdc++.so.6 #9 0x00007f31a708328f in __cxa_pure_virtual () from /usr/lib/libstdc++.so.6 #10 0x0000000000690e5b in CryptoKey::decrypt (this=0x7f3195a67510, in=..., out=..., error=...) at auth/Crypto.cc:404 #11 0x000000000079ccee in void decode_decrypt_enc_bl<CephXServiceTicketInfo>(CephXServiceTicketInfo&, CryptoKey, ceph::buffer::list&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) () #12 0x0000000000795ca3 in cephx_verify_authorizer (cct=0x2232000, keys=<value optimized out>, indata=..., ticket_info=<value optimized out>, reply_bl=<value optimized out>) at auth/cephx/CephxProtocol.cc:438 #13 0x00000000007a17cf in CephxAuthorizeHandler::verify_authorizer (this=<value optimized out>, cct=0x2232000, keys=0x2256000, authorizer_data=<value optimized out>, authorizer_reply=..., entity_name=..., global_id=@0x7f3195a67848, caps_info=..., auid=0x7f3195a67840) at auth/cephx/CephxAuthorizeHandler.cc:21 #14 0x00000000005577ff in OSD::ms_verify_authorizer (this=0x2267000, con=0x230da00, peer_type=<value optimized out>, protocol=<value optimized out>, authorizer_data=<value optimized out>, authorizer_reply=<value optimized out>, isvalid=@0x7f3195a67c0f) at osd/OSD.cc:2723 #15 0x0000000000611ce1 in ms_deliver_verify_authorizer (this=<value optimized out>, con=0x230da00, peer_type=4, protocol=2, authorizer=<value optimized out>, authorizer_reply=<value optimized out>, isvalid=@0x7f3195a67c0f) at msg/Messenger.h:145 #16 SimpleMessenger::verify_authorizer (this=<value optimized out>, con=0x230da00, peer_type=4, protocol=2, authorizer=<value optimized out>, authorizer_reply=<value optimized out>, isvalid=@0x7f3195a67c0f) at msg/SimpleMessenger.cc:2419 #17 0x00000000006309ab in SimpleMessenger::Pipe::accept (this=0x22ce280) at msg/SimpleMessenger.cc:756 #18 0x0000000000634711 in SimpleMessenger::Pipe::reader (this=0x22ce280) at msg/SimpleMessenger.cc:1546 #19 0x00000000004a7085 in SimpleMessenger::Pipe::Reader::entry (this=<value optimized out>) at msg/SimpleMessenger.h:208 #20 0x000000000060f252 in Thread::_entry_func (arg=0x874) at common/Thread.cc:42 #21 0x00007f31a8003971 in start_thread () from /lib/libpthread.so.0 #22 0x00007f31a689392d in clone () from /lib/libc.so.6 #23 0x0000000000000000 in ?? () Instead, put these on the heap. Set them up in the ceph::crypto::init() method, and tear them down in ceph::crypto::shutdown(). Fixes: #1633 Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
Shut down MonClient before messenger, to avoid race with MonClient::tick() and MonClient::shutdown(). Fixes #0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 #1 0x00007f44475e2849 in _L_lock_953 () from /lib/libpthread.so.0 #2 0x00007f44475e266b in __pthread_mutex_lock (mutex=0x14d8dc8) at pthread_mutex_lock.c:61 #3 0x00000000005ae090 in Mutex::Lock (this=0x14d8db8, no_lockdep=false) at ./common/Mutex.h:108 #4 0x000000000068440e in MonClient::shutdown (this=0x14d8c30) at mon/MonClient.cc:386 #5 0x00000000005b2653 in ceph_tool_common_shutdown (ctx=0x14d84c0) at tools/common.cc:661 #6 0x00000000005ada29 in main (argc=7, argv=0x7fff8a2394c8) at tools/ceph.cc:304 vs #0 0x00007f44475e8a0b in raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42 #1 0x00000000005eff6b in reraise_fatal (signum=11) at global/signal_handler.cc:59 #2 0x00000000005f0165 in handle_fatal_signal (signum=11) at global/signal_handler.cc:106 #3 <signal handler called> #4 0x0000000000000000 in ?? () #5 0x000000000068661a in MonClient::tick (this=0x14d8c30) at mon/MonClient.cc:621 #6 0x0000000000689e3b in MonClient::C_Tick::finish(int) () #7 0x000000000061b3c5 in SafeTimer::timer_thread (this=0x14d8df8) at common/Timer.cc:102 #8 0x000000000061c6f0 in SafeTimerThread::entry() () #9 0x00000000005f1219 in Thread::_entry_func (arg=0x14e1a00) at common/Thread.cc:41 #10 0x00007f44475e0971 in start_thread (arg=<value optimized out>) at pthread_create.c:304 #11 0x00007f4445ead92d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #12 0x0000000000000000 in ?? () Signed-off-by: Sage Weil <sage@newdream.net>
Specifically, /foo may exist and client may try to mount /foo/bar. That GETATTR request is on #1/foo/bar, but we cannot return a null dentry on bar because the client is not prepared to handle it and will crash in fill_trace(). Fixes: #2959 Reported-by: Yan Zheng <zheng.z.yan@intel.com> Signed-off-by: Sage Weil <sage@inktank.com>
CID 731943 (#1 of 1): Uninitialized scalar variable (UNINIT) At (5): Using uninitialized element of array "buf" when calling "pwrite(int, void const *, size_t, __off64_t)". Signed-off-by: Sage Weil <sage@inktank.com>
CID 731942 (#1 of 1): Resource leak (RESOURCE_LEAK) At (12): Variable "peermap" going out of scope leaks the storage it points to. Signed-off-by: Sage Weil <sage@inktank.com>
CID 731941 (#1 of 2): Argument cannot be negative (NEGATIVE_RETURNS) At (6): "fd" is passed to a parameter that cannot be negative. Signed-off-by: Sage Weil <sage@inktank.com>
CID 731940 (#1 of 1): Missing break in switch (MISSING_BREAK) This case (value 23) is not terminated by a 'break' statement. 1719 case CEPH_MSG_CLIENT_RECONNECT: 1720 ALLOW_MESSAGES_FROM(CEPH_ENTITY_TYPE_CLIENT); The above case falls through to this one. Signed-off-by: Sage Weil <sage@inktank.com>
CID 731939 (#1 of 1): Dereference after null check (FORWARD_NULL) At (5): Passing null pointer "out" to function "std::operator << <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> > &, char const *)", which dereferences it. Broken by 13b841c. Signed-off-by: Sage Weil <sage@inktank.com>
Hi!
This changes allows ceph to compile successfully under FreeBSD.
This is by no means complete, but these are the minimal changes I would like to push
first.
Signed-off-by: Stanislav Sedov stas@FreeBSD.org