Merge lp:~ubuntu-branches/ubuntu/natty/ceph/natty-201103250159 into lp:ubuntu/natty/ceph

Proposed by James Westby
Status: Work in progress
Proposed branch: lp:~ubuntu-branches/ubuntu/natty/ceph/natty-201103250159
Merge into: lp:ubuntu/natty/ceph
Diff against target: 2653 lines (+2008/-64) (has conflicts)
37 files modified
.pc/.version (+1/-0)
.pc/applied-patches (+1/-0)
.pc/fix-mkcephfs-path.patch/src/Makefile.am (+772/-0)
configure (+37/-0)
configure.ac (+8/-0)
debian/ceph.install (+41/-0)
debian/ceph.lintian (+4/-0)
debian/ceph.lintian-overrides (+7/-0)
debian/ceph.logrotate (+9/-0)
debian/changelog (+24/-0)
debian/compat (+4/-0)
debian/control (+213/-0)
debian/copyright (+69/-0)
debian/libceph1-dev.install (+6/-0)
debian/libceph1.install (+5/-0)
debian/libcrush1-dev.install (+9/-0)
debian/libcrush1.install (+5/-0)
debian/librados1-dev.install (+13/-0)
debian/librados1.install (+5/-0)
debian/move_dbg_files.sh (+8/-0)
debian/rules (+68/-0)
debian/source/format (+4/-0)
src/.git_version (+4/-0)
src/client/Client.cc (+18/-0)
src/common/signal.cc (+163/-0)
src/include/ceph_strings.cc (+6/-0)
src/include/rados.h (+11/-0)
src/mds/MDS.cc (+6/-0)
src/mon/MDSMonitor.cc (+9/-0)
src/msg/Message.cc (+6/-0)
src/msg/Message.h (+4/-0)
src/os/FileStore.cc (+45/-0)
src/osd/OSD.cc (+50/-0)
src/osd/OSD.h (+4/-0)
src/osd/PG.cc (+328/-64)
src/osd/PG.h (+15/-0)
src/osd/ReplicatedPG.cc (+26/-0)
Text conflict in configure
Text conflict in configure.ac
Text conflict in debian/ceph.install
Text conflict in debian/ceph.lintian-overrides
Text conflict in debian/changelog
Text conflict in debian/compat
Text conflict in debian/control
Text conflict in debian/copyright
Text conflict in debian/libceph1-dev.install
Text conflict in debian/libceph1.install
Text conflict in debian/libcrush1-dev.install
Text conflict in debian/libcrush1.install
Text conflict in debian/librados1-dev.install
Text conflict in debian/librados1.install
Text conflict in debian/rules
Text conflict in debian/source/format
Text conflict in src/.git_version
Text conflict in src/client/Client.cc
Text conflict in src/common/signal.cc
Text conflict in src/include/ceph_strings.cc
Text conflict in src/include/rados.h
Text conflict in src/mds/MDS.cc
Text conflict in src/mon/MDSMonitor.cc
Text conflict in src/msg/Message.cc
Text conflict in src/msg/Message.h
Text conflict in src/os/FileStore.cc
Text conflict in src/osd/OSD.cc
Text conflict in src/osd/OSD.h
Text conflict in src/osd/PG.cc
Text conflict in src/osd/PG.h
Text conflict in src/osd/ReplicatedPG.cc
To merge this branch: bzr merge lp:~ubuntu-branches/ubuntu/natty/ceph/natty-201103250159
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+55056@code.launchpad.net

Description of the change

The package history in the archive and the history in the bzr branch differ. As the archive is authoritative the history of lp:ubuntu/natty/ceph now reflects that and the old bzr branch has been pushed to lp:~ubuntu-branches/ubuntu/natty/ceph/natty-201103250159. A merge should be performed if necessary.

To post a comment you must log in.

Unmerged revisions

6. By Micah Gersten

debian/control: add Homepage

5. By Clint Byrum

* Removed .la files from libceph1-dev, libcrush1-dev and
  librados1-dev (per Debian policy v3.9.1 10.2).
* debian/watch: added watch file

4. By Clint Byrum

* New upstream release. (LP: #658670, LP: #684011)
* debian/patches/fix-mkcephfs.patch: dropped (applied upstream)
* Removed .la files from libcrush1-dev and librados1-dev (per Debian
  policy v3.9.1 10.2).
* debian/control: adding pkg-config as a build dependency
* debian/control: depend on libcrypto++-dev instead of libssl-dev

3. By Clint Byrum

New upstream release.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory '.pc'
2=== added file '.pc/.version'
3--- .pc/.version 1970-01-01 00:00:00 +0000
4+++ .pc/.version 2011-03-28 07:08:46 +0000
5@@ -0,0 +1,1 @@
6+2
7
8=== added file '.pc/applied-patches'
9--- .pc/applied-patches 1970-01-01 00:00:00 +0000
10+++ .pc/applied-patches 2011-03-28 07:08:46 +0000
11@@ -0,0 +1,1 @@
12+fix-mkcephfs-path.patch
13
14=== added directory '.pc/fix-mkcephfs-path.patch'
15=== added directory '.pc/fix-mkcephfs-path.patch/src'
16=== added file '.pc/fix-mkcephfs-path.patch/src/Makefile.am'
17--- .pc/fix-mkcephfs-path.patch/src/Makefile.am 1970-01-01 00:00:00 +0000
18+++ .pc/fix-mkcephfs-path.patch/src/Makefile.am 2011-03-28 07:08:46 +0000
19@@ -0,0 +1,772 @@
20+#
21+# note: the old Makefile is at Makefile.old
22+#
23+
24+AUTOMAKE_OPTIONS = gnu
25+
26+bin_PROGRAMS =
27+sbin_PROGRAMS =
28+bin_SCRIPTS = crun
29+
30+# monitor
31+cmon_SOURCES = cmon.cc msg/SimpleMessenger.cc
32+cmon_LDADD = libmon.a libcrush.a libcommon.a -lpthread -lm -lcrypto
33+bin_PROGRAMS += cmon
34+
35+# osd
36+cosd_SOURCES = cosd.cc msg/SimpleMessenger.cc objclass/class_debug.cc \
37+ objclass/class_api.cc
38+cosd_LDADD = libosd.a libos.a libcrush.a libcommon.a -ldl -lpthread -lm -lcrypto
39+bin_PROGRAMS += cosd
40+
41+# mds
42+cmds_SOURCES = cmds.cc msg/SimpleMessenger.cc
43+cmds_LDADD = libmds.a libosdc.a libcrush.a libcommon.a -lpthread -lm -lcrypto
44+bin_PROGRAMS += cmds
45+
46+# admin tools
47+ceph_SOURCES = ceph.cc msg/SimpleMessenger.cc
48+ceph_LDADD = libcrush.a libcommon.a -ledit -lpthread -lm -lcrypto
49+cconf_SOURCES = cconf.cc
50+cconf_LDADD = libcommon.a -lpthread -lm -lcrypto
51+cauthtool_SOURCES = cauthtool.cc
52+cauthtool_LDADD = libcommon.a -lpthread -lm -lcrypto
53+bin_PROGRAMS += ceph cconf cauthtool
54+
55+monmaptool_SOURCES = monmaptool.cc
56+monmaptool_LDADD = libcommon.a -lpthread -lm -lcrypto
57+crushtool_SOURCES = crushtool.cc
58+crushtool_LDADD = libcrush.a libcommon.a -lpthread -lm -lcrypto
59+osdmaptool_SOURCES = osdmaptool.cc
60+osdmaptool_LDADD = libcrush.a libcommon.a -lpthread -lm -lcrypto
61+bin_PROGRAMS += monmaptool crushtool osdmaptool
62+
63+mount_ceph_SOURCES = mount/mount.ceph.c
64+noinst_PROGRAMS = mount.ceph
65+
66+# synthetic client
67+csyn_SOURCES = csyn.cc msg/SimpleMessenger.cc
68+csyn_LDADD = libclient.a libosdc.a libcrush.a libcommon.a -lpthread -lm -lcrypto
69+bin_PROGRAMS += csyn
70+
71+core: cmon cosd cmds ceph cconf monmaptool osdmaptool crushtool csyn
72+
73+
74+# fuse targets?
75+if WITH_FUSE
76+cfuse_SOURCES = cfuse.cc msg/SimpleMessenger.cc client/fuse.cc client/fuse_ll.cc
77+cfuse_LDADD = -lfuse libclient.a libosdc.a libcrush.a libcommon.a -lpthread -lm -lcrypto
78+bin_PROGRAMS += cfuse
79+
80+#if WITH_DEBUG
81+#fakefuse_SOURCES = fakefuse.cc msg/FakeMessenger.cc client/fuse.cc client/fuse_ll.cc
82+#fakefuse_LDADD = -lfuse libmon.a libmds.a libosd.a libos.a \
83+# libclient.a libosdc.a libcrush.a
84+#bin_PROGRAMS += fakefuse
85+#endif
86+
87+endif
88+
89+# debug targets?
90+if WITH_DEBUG
91+
92+psim_SOURCES = psim.cc
93+psim_LDADD = libcrush.a libcommon.a -lpthread -lm -lcrypto
94+bin_PROGRAMS += psim
95+
96+testmsgr_SOURCES = testmsgr.cc msg/SimpleMessenger.cc
97+testmsgr_LDADD = libcommon.a -lpthread -lm -lcrypto
98+bin_PROGRAMS += testmsgr
99+
100+test_ioctls_SOURCES = client/test_ioctls.c
101+bin_PROGRAMS += test_ioctls
102+
103+dumpjournal_SOURCES = dumpjournal.cc msg/SimpleMessenger.cc
104+dumpjournal_LDADD = libosdc.a libcrush.a libcommon.a -lpthread -lm -lcrypto
105+dupstore_SOURCES = dupstore.cc
106+dupstore_LDADD = libos.a libcommon.a -lpthread -lm -lcrypto
107+streamtest_SOURCES = streamtest.cc
108+streamtest_LDADD = libos.a libcommon.a -lpthread -lm -lcrypto
109+bin_PROGRAMS += dumpjournal dupstore streamtest
110+
111+test_trans_SOURCES = test_trans.cc
112+test_trans_LDADD = libos.a libcommon.a -lpthread -lm -lcrypto
113+bin_PROGRAMS += test_trans
114+
115+
116+#fakesyn_SOURCES = fakesyn.cc msg/FakeMessenger.cc
117+#fakesyn_LDADD = libmon.a libmds.a libosd.a libos.a \
118+# libclient.a libosdc.a libcrush.a libcommon.a
119+#bin_PROGRAMS += fakesyn
120+
121+endif
122+
123+
124+##########
125+BUILT_SOURCES =
126+lib_LTLIBRARIES =
127+
128+# libcrush.so
129+libcrush_la_SOURCES = \
130+ crush/builder.c \
131+ crush/mapper.c \
132+ crush/crush.c \
133+ crush/hash.c
134+libcrush_la_CFLAGS = ${AM_CFLAGS}
135+libcrush_la_CXXFLAGS = ${AM_CXXFLAGS}
136+libcrush_la_LDFLAGS = -version-info 1:0:0 -export-symbols-regex 'crush_.*' -lm
137+lib_LTLIBRARIES += libcrush.la
138+
139+# libceph
140+libceph_la_SOURCES = \
141+ libceph.cc \
142+ client/Client.cc \
143+ msg/SimpleMessenger.cc \
144+ ${libcommon_a_SOURCES} \
145+ ${libosdc_a_SOURCES}
146+libceph_la_CFLAGS = ${AM_CFLAGS}
147+libceph_la_CXXFLAGS= ${AM_CXXFLAGS}
148+libceph_la_LIBADD = libcrush.la
149+libceph_la_LDFLAGS = -version-info 1:0:0 -export-symbols-regex '^ceph_.*' -lpthread -lssl
150+lib_LTLIBRARIES += libceph.la
151+
152+if WITH_DEBUG
153+testceph_SOURCES = client/testceph.cc
154+testceph_LDADD = libceph.la libcrush.la -lpthread -lm -lcrypto
155+bin_PROGRAMS += testceph
156+endif
157+
158+# librados
159+librados_SOURCES = \
160+ librados.cc \
161+ msg/SimpleMessenger.cc \
162+ osdc/Objecter.cc \
163+ ${libcommon_a_SOURCES}
164+librados_la_SOURCES = ${librados_SOURCES}
165+librados_la_CFLAGS = ${AM_CFLAGS}
166+librados_la_CXXFLAGS = ${AM_CXXFLAGS}
167+librados_la_LIBADD = libcrush.la
168+librados_la_LDFLAGS = -version-info 1:0:0 -export-symbols-regex '^rados_.*' -lpthread
169+lib_LTLIBRARIES += librados.la
170+
171+librados_a_SOURCES = ${librados_SOURCES}
172+librados_a_CFLAGS = ${AM_CFLAGS}
173+librados_a_CXXFLAGS = ${AM_CXXFLAGS}
174+
175+rados_SOURCES = rados.cc
176+rados_LDADD = librados.la -lpthread -lm -lcrypto
177+bin_PROGRAMS += rados
178+
179+if WITH_DEBUG
180+testrados_SOURCES = testrados.c
181+testrados_LDADD = librados.la -lpthread -lm -lcrypto
182+testradospp_SOURCES = testradospp.cc
183+testradospp_LDADD = librados.la -lpthread -lm -lcrypto
184+bin_PROGRAMS += testrados testradospp
185+endif
186+
187+radosacl_SOURCES = radosacl.cc
188+radosacl_LDADD = librados.la -lpthread -lm -lcrypto
189+rbd_SOURCES = rbd.cc
190+rbd_LDADD = librados.la -lpthread -lm -lcrypto
191+bin_PROGRAMS += radosacl rbd
192+
193+if WITH_RADOSGW
194+libradosgw_a_SOURCES = \
195+ rgw/rgw_fs.cc \
196+ rgw/rgw_rados.cc \
197+ rgw/rgw_acl.cc \
198+ rgw/rgw_user.cc \
199+ rgw/rgw_access.cc \
200+ rgw/rgw_op.cc \
201+ rgw/rgw_rest.cc \
202+ rgw/rgw_common.cc
203+libradosgw_a_CFLAGS = ${AM_CFLAGS}
204+# lib_LTLIBRARIES += libradosgw.a
205+
206+radosgw_SOURCES = rgw/rgw_main.cc
207+radosgw_LDADD = libradosgw.a librados.a libcrush.a -lfcgi -lcrypto -lexpat -lpthread -lm
208+radosgw_admin_SOURCES = rgw/rgw_admin.cc
209+radosgw_admin_LDADD = libradosgw.a librados.a libcrush.a -lfcgi -lcrypto -lexpat -lpthread -lm
210+bin_PROGRAMS += radosgw radosgw_admin
211+endif
212+
213+if WITH_DEBUG
214+testcrypto_SOURCES = testcrypto.cc
215+testcrypto_LDADD = libcommon.a -lpthread -lm -lcrypto
216+bin_PROGRAMS += testcrypto
217+
218+testkeys_SOURCES = testkeys.cc
219+testkeys_LDADD = libmon.a libcommon.a -lpthread -lm -lcrypto
220+bin_PROGRAMS += testkeys
221+endif
222+
223+
224+## rados object classes
225+
226+#libcls_crypto.so: cls_crypto.cc
227+# ${CXX} -I. -fPIC -shared -g -o libcls_crypto.so -lcrypto cls_crypto.cc
228+#BUILT_SOURCES += libcls_crypto.so
229+
230+#libcls_acl.so: cls_acl.cc
231+# ${CXX} -I. -fPIC -shared -g -o libcls_acl.so cls_acl.cc
232+#BUILT_SOURCES += libcls_acl.so
233+
234+# rbd: rados block device class
235+libcls_rbd_la_SOURCES = cls_rbd.cc
236+libcls_rbd_la_CFLAGS = ${AM_CFLAGS}
237+libcls_rbd_la_CXXFLAGS= ${AM_CXXFLAGS}
238+libcls_rbd_la_LDFLAGS = -version-info 1:0:0 -export-symbols-regex '.*__cls_.*' -lpthread
239+
240+radoslibdir = $(libdir)/rados-classes
241+radoslib_LTLIBRARIES = libcls_rbd.la
242+
243+
244+## hadoop client
245+if WITH_HADOOPCLIENT
246+JAVA_BASE = /usr/lib/jvm/java-6-sun
247+libhadoopcephfs_la_SOURCES = client/hadoop/CephFSInterface.cc
248+libhadoopcephfs_la_LIBADD = libceph.la
249+libhadoopcephfs_la_CFLAGS = ${AM_CFLAGS}
250+libhadoopcephfs_la_CXXFLAGS = ${AM_CXXFLAGS}
251+libhadoopcephfs_la_LDFLAGS = -version-info 1:0:0 -export-symbols-regex 'hadoopcephfs_.*'
252+lib_LTLIBRARIES += libhadoopcephfs.la
253+endif
254+
255+
256+# shell scripts
257+editpaths = sed \
258+ -e 's|@bindir[@]|$(bindir)|g' \
259+ -e 's|@libdir[@]|$(libdir)|g' \
260+ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \
261+ -e 's|@datadir[@]|$(pkgdatadir)|g' \
262+ -e 's|@prefix[@]|$(prefix)|g'
263+
264+init-ceph mkcephfs cclass: init-ceph.in mkcephfs.in cclass.in Makefile
265+ rm -f $@ $@.tmp
266+ $(editpaths) '$(srcdir)/$@.in' >$@.tmp
267+ chmod +x $@.tmp
268+ chmod a-w $@.tmp
269+ mv $@.tmp $@
270+
271+BUILT_SOURCES += init-ceph mkcephfs cclass
272+
273+##
274+LDADD =
275+
276+
277+AM_CXXFLAGS = -Wall -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -rdynamic
278+AM_CFLAGS = -Wall -D__CEPH__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -rdynamic
279+AM_LDFLAGS =
280+
281+if WITH_LIBATOMIC
282+AM_LDFLAGS += -latomic_ops
283+endif
284+
285+noinst_LIBRARIES = \
286+ libcommon.a libcrush.a \
287+ libmon.a libmds.a libosdc.a libosd.a libclient.a \
288+ libos.a librados.a libradosgw.a
289+
290+noinst_LIBRARIES += #libcephclient_so.a
291+
292+# extra bits
293+EXTRA_DIST = verify-mds-journal.sh vstart.sh stop.sh \
294+ crun ceph_common.sh init-ceph.in mkcephfs.in cclass.in cclsinfo make_version check_version
295+
296+install-data-local:
297+ $(install_sh_SCRIPT) -m 0755 cclass $(DESTDIR)$(bindir)/cclass
298+ $(install_sh_SCRIPT) -m 0755 cclsinfo $(DESTDIR)$(bindir)/cclsinfo
299+ sh -c "if [ \"$(sbindir)\" = \"/usr/sbin\" ]; then mkdir -p $(DESTDIR)/sbin ; $(install_sh_SCRIPT) -m 0755 mount.ceph $(DESTDIR)/sbin/mount.ceph ; else mkdir -p $(DESTDIR)$(sbindir) ; $(install_sh_SCRIPT) -m 0755 mount.ceph $(DESTDIR)$(sbindir)/mount.ceph ; fi"
300+ mkdir -p $(DESTDIR)$(sbindir)/ceph
301+ $(install_sh_SCRIPT) -m 0755 mkcephfs $(DESTDIR)$(sbindir)/mkcephfs
302+ mkdir -p $(DESTDIR)$(libdir)/ceph
303+ $(install_sh_SCRIPT) -m 0755 ceph_common.sh $(DESTDIR)$(libdir)/ceph/ceph_common.sh
304+ mkdir -p $(DESTDIR)$(sysconfdir)/ceph
305+ $(install_sh_SCRIPT) -m 0600 sample.ceph.conf $(DESTDIR)$(sysconfdir)/ceph/sample.ceph.conf
306+ $(install_sh_SCRIPT) -m 0755 fetch_config $(DESTDIR)$(sysconfdir)/ceph/sample.fetch_config
307+ mkdir -p $(DESTDIR)$(includedir)/ceph
308+ $(install_sh_SCRIPT) -m 0644 client/libceph.h $(DESTDIR)$(includedir)/ceph/libceph.h
309+ mkdir -p $(DESTDIR)$(includedir)/rados
310+ $(install_sh_SCRIPT) -m 0644 include/librados.h $(DESTDIR)$(includedir)/rados/librados.h
311+ $(install_sh_SCRIPT) -m 0644 include/librados.hpp $(DESTDIR)$(includedir)/rados/librados.hpp
312+ $(install_sh_SCRIPT) -m 0644 include/buffer.h $(DESTDIR)$(includedir)/rados/buffer.h
313+ $(install_sh_SCRIPT) -m 0644 include/atomic.h $(DESTDIR)$(includedir)/rados/atomic.h
314+ $(install_sh_SCRIPT) -m 0644 include/page.h $(DESTDIR)$(includedir)/rados/page.h
315+ $(install_sh_SCRIPT) -m 0644 include/crc32c.h $(DESTDIR)$(includedir)/rados/crc32c.h
316+ $(install_sh_SCRIPT) -m 0644 include/Spinlock.h $(DESTDIR)$(includedir)/rados/Spinlock.h
317+ $(install_sh_SCRIPT) -m 0644 include/assert.h $(DESTDIR)$(includedir)/rados/assert.h
318+ mkdir -p $(DESTDIR)$(includedir)/crush
319+ $(install_sh_SCRIPT) -m 0644 crush/hash.h $(DESTDIR)$(includedir)/crush/hash.h
320+ $(install_sh_SCRIPT) -m 0644 crush/crush.h $(DESTDIR)$(includedir)/crush/crush.h
321+ $(install_sh_SCRIPT) -m 0644 crush/types.h $(DESTDIR)$(includedir)/crush/types.h
322+ $(install_sh_SCRIPT) -m 0644 crush/mapper.h $(DESTDIR)$(includedir)/crush/mapper.h
323+
324+FORCE:
325+.git_version: FORCE
326+ ./check_version .git_version
327+ceph_ver.h: .git_version
328+ ./make_version .git_version ceph_ver.h
329+
330+ceph_ver.c: ceph_ver.h
331+common/debug.cc: ceph_ver.h
332+config.cc: ceph_ver.h
333+
334+
335+
336+# cleaning
337+clean-local:
338+ -rm *.so
339+# -rm crush/*.cxx
340+# -rm CrushWrapper.pm
341+
342+# libs
343+libcommon_a_SOURCES = \
344+ ceph_ver.c \
345+ $(libcommon_files)
346+
347+# this list ommits the ceph_ver.c file
348+libcommon_files = \
349+ auth/AuthAuthorizeHandler.cc \
350+ auth/AuthClientHandler.cc \
351+ auth/AuthSupported.cc \
352+ auth/cephx/CephxAuthorizeHandler.cc \
353+ auth/cephx/CephxClientHandler.cc \
354+ auth/cephx/CephxProtocol.cc \
355+ auth/none/AuthNoneAuthorizeHandler.cc \
356+ auth/Crypto.cc \
357+ auth/ExportControl.cc \
358+ auth/KeyRing.cc \
359+ auth/RotatingKeyRing.cc \
360+ common/LogClient.cc \
361+ msg/Message.cc \
362+ msg/msg_types.cc \
363+ common/BackTrace.cc \
364+ common/Logger.cc \
365+ common/ClassLibrary.cc \
366+ common/Clock.cc \
367+ common/Timer.cc \
368+ common/Finisher.cc \
369+ common/sctp_crc32.c\
370+ common/assert.cc \
371+ common/dyn_snprintf.c \
372+ common/WorkQueue.cc \
373+ common/ConfUtils.cc \
374+ common/MemoryModel.cc \
375+ common/armor.c \
376+ common/base64.c \
377+ common/str_list.cc \
378+ mon/MonMap.cc \
379+ mon/MonClient.cc \
380+ osd/OSDMap.cc \
381+ mds/MDSMap.cc \
382+ common/tls.cc \
383+ common/common_init.cc \
384+ common/buffer.cc \
385+ common/debug.cc \
386+ include/ceph_fs.cc \
387+ include/ceph_hash.cc \
388+ include/ceph_strings.cc \
389+ include/ceph_frag.cc \
390+ config.cc \
391+ common/page.cc \
392+ common/lockdep.cc
393+
394+libcrush_a_SOURCES = \
395+ crush/builder.c \
396+ crush/mapper.c \
397+ crush/crush.c \
398+ crush/hash.c
399+
400+libmon_a_SOURCES = \
401+ auth/cephx/CephxKeyServer.cc \
402+ auth/cephx/CephxServiceHandler.cc \
403+ auth/AuthServiceHandler.cc \
404+ mon/Monitor.cc \
405+ mon/Paxos.cc \
406+ mon/PaxosService.cc \
407+ mon/OSDMonitor.cc \
408+ mon/MDSMonitor.cc \
409+ mon/MonmapMonitor.cc \
410+ mon/PGMonitor.cc \
411+ mon/LogMonitor.cc \
412+ mon/ClassMonitor.cc \
413+ mon/AuthMonitor.cc \
414+ mon/Elector.cc \
415+ mon/MonitorStore.cc \
416+ mon/MonCaps.cc
417+
418+libmds_a_SOURCES = \
419+ mds/MDS.cc \
420+ mds/locks.c \
421+ mds/journal.cc \
422+ mds/Server.cc \
423+ mds/MDCache.cc \
424+ mds/Locker.cc \
425+ mds/Migrator.cc \
426+ mds/MDBalancer.cc \
427+ mds/CDentry.cc \
428+ mds/CDir.cc \
429+ mds/CInode.cc \
430+ mds/LogEvent.cc \
431+ mds/MDSTable.cc \
432+ mds/InoTable.cc \
433+ mds/MDSTableClient.cc \
434+ mds/MDSTableServer.cc \
435+ mds/AnchorServer.cc \
436+ mds/AnchorClient.cc \
437+ mds/SnapServer.cc \
438+ mds/snap.cc \
439+ mds/SessionMap.cc \
440+ mds/MDLog.cc
441+
442+libos_a_SOURCES = \
443+ os/FileJournal.cc \
444+ os/FileStore.cc \
445+ os/JournalingObjectStore.cc
446+
447+libosd_a_SOURCES = \
448+ osd/PG.cc \
449+ osd/ReplicatedPG.cc \
450+ osd/Ager.cc \
451+ osd/OSD.cc \
452+ osd/OSDCaps.cc \
453+ common/ClassHandler.cc
454+# osd/RAID4PG.cc
455+
456+libosdc_a_SOURCES = \
457+ osdc/Objecter.cc \
458+ osdc/ObjectCacher.cc \
459+ osdc/Filer.cc \
460+ osdc/Journaler.cc
461+
462+libclient_a_SOURCES = \
463+ client/Client.cc \
464+ client/SyntheticClient.cc \
465+ client/Trace.cc
466+
467+# headers... and everything else we want to include in a 'make dist'
468+# that autotools doesn't magically identify.
469+noinst_HEADERS = \
470+ auth/cephx/CephxAuthorizeHandler.h\
471+ auth/cephx/CephxKeyServer.h\
472+ auth/cephx/CephxProtocol.h\
473+ auth/cephx/CephxClientHandler.h\
474+ auth/cephx/CephxServiceHandler.h\
475+ auth/none/AuthNoneAuthorizeHandler.h\
476+ auth/none/AuthNoneClientHandler.h\
477+ auth/none/AuthNoneServiceHandler.h\
478+ auth/none/AuthNoneProtocol.h\
479+ auth/Auth.h\
480+ auth/AuthSupported.h\
481+ auth/AuthClientHandler.h\
482+ auth/AuthServiceHandler.h\
483+ auth/AuthAuthorizeHandler.h\
484+ auth/KeyRing.h\
485+ auth/RotatingKeyRing.h\
486+ auth/Crypto.h\
487+ auth/ExportControl.h\
488+ ceph_ver.h \
489+ client/Client.h\
490+ client/SyntheticClient.h\
491+ client/Trace.h\
492+ client/fuse.h\
493+ client/fuse_ll.h\
494+ client/ioctl.h\
495+ client/libceph.h\
496+ client/hadoop/CephFSInterface.h\
497+ cls_acl.cc\
498+ cls_crypto.cc\
499+ cm.txt\
500+ common/arch.h\
501+ common/armor.h\
502+ common/base64.h\
503+ common/debug.h\
504+ common/lockdep.h\
505+ common/BackTrace.h\
506+ common/ClassVersion.h\
507+ common/Clock.h\
508+ common/common_init.h\
509+ common/Cond.h\
510+ common/dyn_snprintf.h\
511+ common/ClassHandler.h\
512+ common/ConfUtils.h\
513+ common/DecayCounter.h\
514+ common/Finisher.h\
515+ common/LogType.h\
516+ common/Logger.h\
517+ common/MemoryModel.h\
518+ common/Mutex.h\
519+ common/RWLock.h\
520+ common/Semaphore.h\
521+ common/Thread.h\
522+ common/Throttle.h\
523+ common/Timer.h\
524+ common/tls.h\
525+ common/WorkQueue.h\
526+ common/LogClient.h\
527+ config.h\
528+ crush/CrushWrapper.h\
529+ crush/CrushWrapper.i\
530+ crush/builder.h\
531+ crush/crush.h\
532+ crush/grammar.h\
533+ crush/hash.h\
534+ crush/mapper.h\
535+ crush/sample.txt\
536+ crush/types.h\
537+ fetch_config\
538+ include/ClassLibrary.h\
539+ include/Context.h\
540+ include/CompatSet.h\
541+ include/Distribution.h\
542+ include/LogEntry.h\
543+ include/Spinlock.h\
544+ include/assert.h\
545+ include/atomic.h\
546+ include/bitmapper.h\
547+ include/blobhash.h\
548+ include/buffer.h\
549+ include/byteorder.h\
550+ include/ceph_frag.h\
551+ include/ceph_fs.h\
552+ include/ceph_hash.h\
553+ include/color.h\
554+ include/crc32c.h\
555+ include/cstring.h\
556+ include/encoding.h\
557+ include/err.h\
558+ include/error.h\
559+ include/filepath.h\
560+ include/frag.h\
561+ include/hash.h\
562+ include/intarith.h\
563+ include/interval_set.h\
564+ include/inttypes.h\
565+ include/librados.h\
566+ include/librados.hpp\
567+ include/lru.h\
568+ include/msgr.h\
569+ include/nstring.h\
570+ include/object.h\
571+ include/page.h\
572+ include/rangeset.h\
573+ include/rados.h\
574+ include/rbd_types.h\
575+ include/statlite.h\
576+ include/str_list.h\
577+ include/triple.h\
578+ include/tstring.h\
579+ include/types.h\
580+ include/uofs.h\
581+ include/utime.h\
582+ include/dlist.h\
583+ include/elist.h\
584+ include/xlist.h\
585+ mds/locks.c\
586+ mds/locks.h\
587+ mds/Anchor.h\
588+ mds/AnchorClient.h\
589+ mds/AnchorServer.h\
590+ mds/CDentry.h\
591+ mds/CDir.h\
592+ mds/CInode.h\
593+ mds/Capability.h\
594+ mds/InoTable.h\
595+ mds/LocalLock.h\
596+ mds/Locker.h\
597+ mds/LogEvent.h\
598+ mds/LogSegment.h\
599+ mds/MDBalancer.h\
600+ mds/MDCache.h\
601+ mds/MDLog.h\
602+ mds/MDS.h\
603+ mds/MDSMap.h\
604+ mds/MDSTable.h\
605+ mds/MDSTableServer.h\
606+ mds/MDSTableClient.h\
607+ mds/Migrator.h\
608+ mds/ScatterLock.h\
609+ mds/Server.h\
610+ mds/SessionMap.h\
611+ mds/SimpleLock.h\
612+ mds/SnapClient.h\
613+ mds/SnapServer.h\
614+ mds/events/ECommitted.h\
615+ mds/events/EExport.h\
616+ mds/events/EFragment.h\
617+ mds/events/EImportFinish.h\
618+ mds/events/EImportStart.h\
619+ mds/events/EMetaBlob.h\
620+ mds/events/EOpen.h\
621+ mds/events/ESession.h\
622+ mds/events/ESessions.h\
623+ mds/events/ESlaveUpdate.h\
624+ mds/events/EString.h\
625+ mds/events/ESubtreeMap.h\
626+ mds/events/ETableClient.h\
627+ mds/events/ETableServer.h\
628+ mds/events/EUpdate.h\
629+ mds/mds_table_types.h\
630+ mds/mdstypes.h\
631+ mds/snap.h\
632+ messages/MAuth.h\
633+ messages/MAuthReply.h\
634+ messages/MCacheExpire.h\
635+ messages/MClass.h\
636+ messages/MClassAck.h\
637+ messages/MClientCaps.h\
638+ messages/MClientCapRelease.h\
639+ messages/MClientLease.h\
640+ messages/MClientReconnect.h\
641+ messages/MClientReply.h\
642+ messages/MClientRequest.h\
643+ messages/MClientRequestForward.h\
644+ messages/MClientSession.h\
645+ messages/MClientSnap.h\
646+ messages/MDentryLink.h\
647+ messages/MDentryUnlink.h\
648+ messages/MDirUpdate.h\
649+ messages/MDiscover.h\
650+ messages/MDiscoverReply.h\
651+ messages/MExportCaps.h\
652+ messages/MExportCapsAck.h\
653+ messages/MExportDir.h\
654+ messages/MExportDirAck.h\
655+ messages/MExportDirCancel.h\
656+ messages/MExportDirDiscover.h\
657+ messages/MExportDirDiscoverAck.h\
658+ messages/MExportDirFinish.h\
659+ messages/MExportDirNotify.h\
660+ messages/MExportDirNotifyAck.h\
661+ messages/MExportDirPrep.h\
662+ messages/MExportDirPrepAck.h\
663+ messages/MGenericMessage.h\
664+ messages/MGetPoolStats.h\
665+ messages/MGetPoolStatsReply.h\
666+ messages/MHeartbeat.h\
667+ messages/MInodeFileCaps.h\
668+ messages/MLock.h\
669+ messages/MLog.h\
670+ messages/MLogAck.h\
671+ messages/MMDSBeacon.h\
672+ messages/MMDSCacheRejoin.h\
673+ messages/MMDSLoadTargets.h\
674+ messages/MMDSFragmentNotify.h\
675+ messages/MMDSMap.h\
676+ messages/MMDSResolve.h\
677+ messages/MMDSResolveAck.h\
678+ messages/MMDSSlaveRequest.h\
679+ messages/MMDSTableRequest.h\
680+ messages/MMonCommand.h\
681+ messages/MMonCommandAck.h\
682+ messages/MMonElection.h\
683+ messages/MMonGetMap.h\
684+ messages/MMonGlobalID.h\
685+ messages/MMonMap.h\
686+ messages/MMonObserve.h\
687+ messages/MMonObserveNotify.h\
688+ messages/MMonPaxos.h\
689+ messages/MMonSubscribe.h\
690+ messages/MMonSubscribeAck.h\
691+ messages/MOSDAlive.h\
692+ messages/MOSDBoot.h\
693+ messages/MOSDFailure.h\
694+ messages/MOSDMap.h\
695+ messages/MOSDOp.h\
696+ messages/MOSDOpReply.h\
697+ messages/MOSDPGCreate.h\
698+ messages/MOSDPGInfo.h\
699+ messages/MOSDPGLog.h\
700+ messages/MOSDPGNotify.h\
701+ messages/MOSDPGQuery.h\
702+ messages/MOSDPGRemove.h\
703+ messages/MOSDPGTemp.h\
704+ messages/MOSDPGTrim.h\
705+ messages/MOSDPing.h\
706+ messages/MOSDScrub.h\
707+ messages/MOSDSubOp.h\
708+ messages/MOSDSubOpReply.h\
709+ messages/MPGStats.h\
710+ messages/MPGStatsAck.h\
711+ messages/MPing.h\
712+ messages/MPoolOp.h\
713+ messages/MPoolOpReply.h\
714+ messages/MRemoveSnaps.h\
715+ messages/MRoute.h\
716+ messages/MForward.h\
717+ messages/MStatfs.h\
718+ messages/MStatfsReply.h\
719+ messages/PaxosServiceMessage.h\
720+ mon/AuthMonitor.h\
721+ mon/ClassMonitor.h\
722+ mon/Elector.h\
723+ mon/LogMonitor.h\
724+ mon/MDSMonitor.h\
725+ mon/MonmapMonitor.h\
726+ mon/MonCaps.h\
727+ mon/MonClient.h\
728+ mon/MonMap.h\
729+ mon/Monitor.h\
730+ mon/MonitorStore.h\
731+ mon/OSDMonitor.h\
732+ mon/PGMap.h\
733+ mon/PGMonitor.h\
734+ mon/Paxos.h\
735+ mon/PaxosService.h\
736+ mon/Session.h\
737+ mon/mon_types.h\
738+ mount/canonicalize.c\
739+ mount/mtab.c\
740+ msg/Dispatcher.h\
741+ msg/FakeMessenger.h\
742+ msg/Message.h\
743+ msg/Messenger.h\
744+ msg/SimpleMessenger.h\
745+ msg/msg_types.h\
746+ msg/tcp.cc\
747+ msg/tcp.h\
748+ objclass/objclass.h\
749+ os/btrfs_ioctl.h\
750+ os/BDBMap.h\
751+ os/Fake.h\
752+ os/FakeStoreBDBCollections.h\
753+ os/FileJournal.h\
754+ os/FileStore.h\
755+ os/Journal.h\
756+ os/JournalingObjectStore.h\
757+ os/ObjectStore.h\
758+ osbdb/OSBDB.h\
759+ osd/Ager.h\
760+ osd/OSD.h\
761+ osd/OSDCaps.h\
762+ osd/OSDMap.h\
763+ osd/ObjectVersioner.h\
764+ osd/PG.h\
765+ osd/PGLS.h\
766+ osd/RAID4PG.h\
767+ osd/ReplicatedPG.h\
768+ osd/osd_types.h\
769+ osdc/rados_bencher.h\
770+ osdc/Blinker.h\
771+ osdc/Filer.h\
772+ osdc/Journaler.h\
773+ osdc/ObjectCacher.h\
774+ osdc/Objecter.h\
775+ rgw/rgw_access.h\
776+ rgw/rgw_acl.h\
777+ rgw/rgw_fs.h\
778+ rgw/rgw_rados.h\
779+ rgw/rgw_op.h\
780+ rgw/rgw_rest.h\
781+ rgw/rgw_common.h\
782+ rgw/rgw_user.h\
783+ sample.ceph.conf
784+
785+all_sources = $(cmon_SOURCES) $(ceph_SOURCES) $(cauthtool_SOURCES) $(monmaptool_SOURCES) \
786+ $(crushtool_SOURCES) $(osdmaptool_SOURCES) $(cconf_SOURCES) $(mount_ceph_SOURCES) $(cmds_SOURCES) \
787+ $(dumpjournal_SOURCES) $(cosd_SOURCES) $(dupstore_SOURCES) $(streamtest_SOURCES) $(csyn_SOURCES) \
788+ $(testmsgr_SOURCES) $(cfuse_SOURCES) $(fakefuse_SOURCES) $(psim_SOURCES) \
789+ $(libcrush_so_a_SOURCES) $(libcommon_files) $(libcrush_a_SOURCES) \
790+ $(libmon_a_SOURCES) $(libmds_a_SOURCES) $(libos_a_SOURCES) $(libosd_a_SOURCES) \
791+ $(libosdc_a_SOURCES) $(libclient_a_SOURCES)
792
793=== modified file 'configure'
794--- configure 2011-02-25 15:17:26 +0000
795+++ configure 2011-03-28 07:08:46 +0000
796@@ -1,6 +1,10 @@
797 #! /bin/sh
798 # Guess values for system-dependent variables and create Makefiles.
799+<<<<<<< TREE
800 # Generated by GNU Autoconf 2.61 for Ceph distributed file system 0.24.3.
801+=======
802+# Generated by GNU Autoconf 2.61 for Ceph distributed file system 0.24.2.
803+>>>>>>> MERGE-SOURCE
804 #
805 # Report bugs to <Sage Weil <sage@newdream.net>>.
806 #
807@@ -728,8 +732,13 @@
808 # Identity of this package.
809 PACKAGE_NAME='Ceph distributed file system'
810 PACKAGE_TARNAME='ceph'
811+<<<<<<< TREE
812 PACKAGE_VERSION='0.24.3'
813 PACKAGE_STRING='Ceph distributed file system 0.24.3'
814+=======
815+PACKAGE_VERSION='0.24.2'
816+PACKAGE_STRING='Ceph distributed file system 0.24.2'
817+>>>>>>> MERGE-SOURCE
818 PACKAGE_BUGREPORT='Sage Weil <sage@newdream.net>'
819
820 # Factoring default headers for most tests.
821@@ -1422,7 +1431,11 @@
822 # Omit some internal or obsolete options to make the list less imposing.
823 # This message is too long to be a string in the A/UX 3.1 sh.
824 cat <<_ACEOF
825+<<<<<<< TREE
826 \`configure' configures Ceph distributed file system 0.24.3 to adapt to many kinds of systems.
827+=======
828+\`configure' configures Ceph distributed file system 0.24.2 to adapt to many kinds of systems.
829+>>>>>>> MERGE-SOURCE
830
831 Usage: $0 [OPTION]... [VAR=VALUE]...
832
833@@ -1493,7 +1506,11 @@
834
835 if test -n "$ac_init_help"; then
836 case $ac_init_help in
837+<<<<<<< TREE
838 short | recursive ) echo "Configuration of Ceph distributed file system 0.24.3:";;
839+=======
840+ short | recursive ) echo "Configuration of Ceph distributed file system 0.24.2:";;
841+>>>>>>> MERGE-SOURCE
842 esac
843 cat <<\_ACEOF
844
845@@ -1610,7 +1627,11 @@
846 test -n "$ac_init_help" && exit $ac_status
847 if $ac_init_version; then
848 cat <<\_ACEOF
849+<<<<<<< TREE
850 Ceph distributed file system configure 0.24.3
851+=======
852+Ceph distributed file system configure 0.24.2
853+>>>>>>> MERGE-SOURCE
854 generated by GNU Autoconf 2.61
855
856 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
857@@ -1624,7 +1645,11 @@
858 This file contains any messages produced by compilers while
859 running configure, to aid debugging if configure makes a mistake.
860
861+<<<<<<< TREE
862 It was created by Ceph distributed file system $as_me 0.24.3, which was
863+=======
864+It was created by Ceph distributed file system $as_me 0.24.2, which was
865+>>>>>>> MERGE-SOURCE
866 generated by GNU Autoconf 2.61. Invocation command line was
867
868 $ $0 $@
869@@ -2444,7 +2469,11 @@
870
871 # Define the identity of the package.
872 PACKAGE=ceph
873+<<<<<<< TREE
874 VERSION=0.24.3
875+=======
876+ VERSION=0.24.2
877+>>>>>>> MERGE-SOURCE
878
879
880 cat >>confdefs.h <<_ACEOF
881@@ -23646,7 +23675,11 @@
882 # report actual input values of CONFIG_FILES etc. instead of their
883 # values after options handling.
884 ac_log="
885+<<<<<<< TREE
886 This file was extended by Ceph distributed file system $as_me 0.24.3, which was
887+=======
888+This file was extended by Ceph distributed file system $as_me 0.24.2, which was
889+>>>>>>> MERGE-SOURCE
890 generated by GNU Autoconf 2.61. Invocation command line was
891
892 CONFIG_FILES = $CONFIG_FILES
893@@ -23699,7 +23732,11 @@
894 _ACEOF
895 cat >>$CONFIG_STATUS <<_ACEOF
896 ac_cs_version="\\
897+<<<<<<< TREE
898 Ceph distributed file system config.status 0.24.3
899+=======
900+Ceph distributed file system config.status 0.24.2
901+>>>>>>> MERGE-SOURCE
902 configured by $0, generated by GNU Autoconf 2.61,
903 with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
904
905
906=== modified file 'configure.ac'
907--- configure.ac 2011-02-25 15:17:26 +0000
908+++ configure.ac 2011-03-28 07:08:46 +0000
909@@ -3,7 +3,11 @@
910
911 # Autoconf
912 AC_PREREQ(2.59)
913+<<<<<<< TREE
914 AC_INIT([Ceph distributed file system], [0.24.3],
915+=======
916+AC_INIT([Ceph distributed file system], [0.24.2],
917+>>>>>>> MERGE-SOURCE
918 [Sage Weil <sage@newdream.net>],
919 [ceph])
920
921@@ -12,7 +16,11 @@
922 AC_CANONICAL_TARGET
923
924 # Automake
925+<<<<<<< TREE
926 AM_INIT_AUTOMAKE(ceph, 0.24.3)
927+=======
928+AM_INIT_AUTOMAKE(ceph, 0.24.2)
929+>>>>>>> MERGE-SOURCE
930 AM_PROG_CC_C_O
931 AM_PROG_LIBTOOL
932
933
934=== modified file 'debian/ceph.install'
935--- debian/ceph.install 2011-02-25 15:17:26 +0000
936+++ debian/ceph.install 2011-03-28 07:08:46 +0000
937@@ -1,3 +1,4 @@
938+<<<<<<< TREE
939 usr/bin/ceph
940 usr/bin/cephfs
941 usr/bin/cconf
942@@ -33,3 +34,43 @@
943 usr/share/man/man8/cclsinfo.8
944 usr/share/man/man8/cdebugpack.8
945 usr/share/ceph_tool/gui_resources/*
946+=======
947+usr/bin/ceph
948+usr/bin/cconf
949+usr/bin/cclass
950+usr/bin/cclsinfo
951+usr/bin/crushtool
952+usr/bin/monmaptool
953+usr/bin/osdmaptool
954+usr/bin/csyn
955+usr/bin/crun
956+usr/bin/cmon
957+usr/bin/cmds
958+usr/bin/cosd
959+usr/bin/cauthtool
960+usr/bin/rados
961+usr/bin/rbd
962+usr/sbin/mount.ceph sbin/mount.ceph
963+usr/sbin/mkcephfs sbin/mkcephfs
964+usr/lib/ceph/ceph_common.sh
965+usr/lib/rados-classes/*
966+usr/share/doc/ceph/sample.ceph.conf
967+usr/share/doc/ceph/sample.fetch_config
968+usr/share/man/man8/cmon.8
969+usr/share/man/man8/cmds.8
970+usr/share/man/man8/cosd.8
971+usr/share/man/man8/mkcephfs.8
972+usr/share/man/man8/crun.8
973+usr/share/man/man8/csyn.8
974+usr/share/man/man8/crushtool.8
975+usr/share/man/man8/osdmaptool.8
976+usr/share/man/man8/monmaptool.8
977+usr/share/man/man8/cconf.8
978+usr/share/man/man8/ceph.8
979+usr/share/man/man8/mount.ceph.8
980+usr/share/man/man8/cauthtool.8
981+usr/share/man/man8/rados.8
982+usr/share/man/man8/rbd.8
983+usr/share/man/man8/cclass.8
984+usr/share/man/man8/cclsinfo.8
985+>>>>>>> MERGE-SOURCE
986
987=== added file 'debian/ceph.lintian'
988--- debian/ceph.lintian 1970-01-01 00:00:00 +0000
989+++ debian/ceph.lintian 2011-03-28 07:08:46 +0000
990@@ -0,0 +1,4 @@
991+#
992+# the rados classes should NOT be stripped.
993+#
994+ceph binary: unstripped-binary-or-object ./usr/lib/rados-classes/libcls_rbd.so.1.0.0
995
996=== modified file 'debian/ceph.lintian-overrides'
997--- debian/ceph.lintian-overrides 2011-02-25 15:17:26 +0000
998+++ debian/ceph.lintian-overrides 2011-03-28 07:08:46 +0000
999@@ -1,5 +1,12 @@
1000+<<<<<<< TREE
1001 #
1002 # the rados classes should NOT be stripped.
1003 #
1004 ceph: unstripped-binary-or-object usr/lib/rados-classes/libcls_rbd.so.1.0.0
1005
1006+=======
1007+#
1008+# the rados classes should NOT be stripped.
1009+#
1010+ceph: unstripped-binary-or-object ./usr/lib/rados-classes/libcls_rbd.so.1.0.0
1011+>>>>>>> MERGE-SOURCE
1012
1013=== added file 'debian/ceph.logrotate'
1014--- debian/ceph.logrotate 1970-01-01 00:00:00 +0000
1015+++ debian/ceph.logrotate 2011-03-28 07:08:46 +0000
1016@@ -0,0 +1,9 @@
1017+/var/log/ceph/*.log /var/log/ceph/stat/*.log {
1018+ rotate 7
1019+ daily
1020+ compress
1021+ sharedscripts
1022+ postrotate
1023+ invoke-rc.d ceph reload >/dev/null || service ceph reload >/dev/null
1024+ endscript
1025+}
1026
1027=== modified file 'debian/changelog'
1028--- debian/changelog 2011-02-25 15:17:26 +0000
1029+++ debian/changelog 2011-03-28 07:08:46 +0000
1030@@ -1,3 +1,4 @@
1031+<<<<<<< TREE
1032 ceph (0.24.3-2) unstable; urgency=low
1033
1034 * Make Ceph Linux only and build on all Linux archs (closes: #614890).
1035@@ -36,3 +37,26 @@
1036 * Initial release (Closes: #506040)
1037
1038 -- Sage Weil <sage@newdream.net> Sun, 21 Nov 2010 15:22:21 -0800
1039+=======
1040+ceph (0.24.2-0ubuntu1) natty; urgency=low
1041+
1042+ [ Clint Byrum <clint@ubuntu.com> ]
1043+ * New upstream release. (LP: #658670, LP: #684011)
1044+ * debian/patches/fix-mkcephfs.patch: dropped (applied upstream)
1045+ * Removed .la files from libceph1-dev, libcrush1-dev and
1046+ librados1-dev (per Debian policy v3.9.1 10.2).
1047+ * debian/control: adding pkg-config as a build dependency
1048+ * debian/control: depend on libcrypto++-dev instead of libssl-dev
1049+ * debian/watch: added watch file
1050+
1051+ [ Micah Gersten <micahg@ubuntu.com> ]
1052+ * debian/control: add Homepage
1053+
1054+ -- Clint Byrum <clint@ubuntu.com> Sat, 12 Feb 2011 22:50:26 -0600
1055+
1056+ceph (0.21-0ubuntu1) maverick; urgency=low
1057+
1058+ * Initial release based on upstream package (LP: #607730)
1059+
1060+ -- Clint Byrum <clint@ubuntu.com> Fri, 30 Jul 2010 08:37:32 -0700
1061+>>>>>>> MERGE-SOURCE
1062
1063=== modified file 'debian/compat'
1064--- debian/compat 2011-02-25 15:17:26 +0000
1065+++ debian/compat 2011-03-28 07:08:46 +0000
1066@@ -1,1 +1,5 @@
1067+<<<<<<< TREE
1068 6
1069+=======
1070+5
1071+>>>>>>> MERGE-SOURCE
1072
1073=== modified file 'debian/control'
1074--- debian/control 2011-02-25 15:17:26 +0000
1075+++ debian/control 2011-03-28 07:08:46 +0000
1076@@ -1,3 +1,4 @@
1077+<<<<<<< TREE
1078 Source: ceph
1079 Section: admin
1080 Priority: optional
1081@@ -234,3 +235,215 @@
1082 service.
1083 .
1084 This package contains debugging symbols for radosgw.
1085+=======
1086+Source: ceph
1087+Section: admin
1088+Priority: optional
1089+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
1090+XSBC-Original-Maintainer: Sage Weil <sage@newdream.net>
1091+Build-Depends: debhelper (>= 6.0.7~), autotools-dev, autoconf, automake, cdbs, libfuse-dev, libboost-dev, libedit-dev, libcrypto++-dev, libtool, libexpat1-dev, libfcgi-dev, libatomic-ops-dev, pkg-config
1092+Standards-Version: 3.9.1
1093+Homepage: http://ceph.newdream.net/
1094+
1095+Package: ceph
1096+Architecture: any
1097+Depends: ${shlibs:Depends}, ${misc:Depends}, libedit2, hdparm, binutils
1098+Recommends: ceph-fuse, libceph1, librados1, libcrush1, btrfs-tools
1099+Description: distributed storage and file system
1100+ Ceph is a distributed storage and network file system designed to provide
1101+ excellent performance, reliability, and scalability.
1102+ .
1103+ This package contains all server daemons and management tools for creating,
1104+ running, and administering a Ceph storage cluster.
1105+
1106+Package: ceph-dbg
1107+Architecture: any
1108+Section: debug
1109+Priority: extra
1110+Depends: ceph (= ${binary:Version}), ${misc:Depends}
1111+Description: debugging symbols for ceph
1112+ Ceph is a distributed storage and network file system designed to provide
1113+ excellent performance, reliability, and scalability.
1114+ .
1115+ This package contains the debugging symbols for ceph.
1116+
1117+Package: ceph-fuse
1118+Architecture: any
1119+Depends: ${shlibs:Depends}, ${misc:Depends}, libfuse2
1120+Recommends: fuse-utils
1121+Suggests: ceph
1122+Description: FUSE-based client for the Ceph distributed file system
1123+ Ceph is a distributed network file system designed to provide
1124+ excellent performance, reliability, and scalability. This is a
1125+ FUSE-based client that allows you to mount a Ceph file system without
1126+ root privileges.
1127+ .
1128+ Because the FUSE-based client has certain inherent performance
1129+ limitations, it is recommended that the native Linux kernel client
1130+ be used if possible. If it is not practical to load a kernel module
1131+ (insufficient privileges, older kernel, etc.), then the FUSE client will
1132+ do.
1133+
1134+Package: ceph-fuse-dbg
1135+Architecture: any
1136+Section: debug
1137+Priority: extra
1138+Depends: ceph-fuse (= ${binary:Version}), ${misc:Depends}
1139+Description: debugging symbols for ceph-fuse
1140+ Ceph is a distributed network file system designed to provide
1141+ excellent performance, reliability, and scalability. This is a
1142+ FUSE-based client that allows you to mount a Ceph file system without
1143+ root privileges.
1144+ .
1145+ This package contains the debugging symbols for ceph-fuse.
1146+
1147+Package: libcrush1
1148+Conflicts: libcrush
1149+Replaces: libcrush
1150+Architecture: any
1151+Depends: ${shlibs:Depends}, ${misc:Depends}
1152+Description: CRUSH placement algorithm
1153+ CRUSH is a pseudo-random hash-like algorithm for mapping inputs to
1154+ a changing hierarchy of devices without a centralized directory. It was
1155+ originally designed for mapping data objects to storage servers, although it
1156+ may be useful in other domains. Because large systems are inherently
1157+ dynamic, CRUSH is designed to facilitate the addition and removal of devices
1158+ while minimizing unnecessary object movement. The algorithm accommodates a
1159+ wide variety of data replication and reliability mechanisms and distributes
1160+ data in terms of user-defined policies that enforce separation of replicas
1161+ across failure domains.
1162+
1163+Package: libcrush1-dbg
1164+Architecture: any
1165+Section: debug
1166+Priority: extra
1167+Depends: libcrush1 (= ${binary:Version}), ${misc:Depends}
1168+Description: debugging symbols for libcrush1
1169+ CRUSH is a pseudo-random hash-like algorithm for mapping inputs to
1170+ a changing hierarchy of devices without a centralized directory. It was
1171+ originally designed for mapping data objects to storage servesr, although it
1172+ may be useful in other domains. Because large systems are inherently
1173+ dynamic, CRUSH is designed to facilitate the addition and removal of devices
1174+ while minimizing unnecessary object movement. The algorithm accommodates a
1175+ wide variety of data replication and reliability mechanisms and distributes
1176+ data in terms of user-defined policies that enforce separation of replicas
1177+ across failure domains.
1178+ .
1179+ This package contains debugging symbols for libcrush.
1180+
1181+Package: libcrush1-dev
1182+Architecture: any
1183+Section: libdevel
1184+Depends: ${shlibs:Depends}, ${misc:Depends}, libcrush1 (= ${binary:Version})
1185+Description: CRUSH mapping algorithm (development files)
1186+ CRUSH is a pseudo-random hash-like algorithm for mapping inputs to
1187+ a changing hierarchy of devices without a centralized directory. It was
1188+ originally designed for mapping data objects to storage servesr, although it
1189+ may be useful in other domains. Because large systems are inherently
1190+ dynamic, CRUSH is designed to facilitate the addition and removal of devices
1191+ while minimizing unnecessary object movement. The algorithm accommodates a
1192+ wide variety of data replication and reliability mechanisms and distributes
1193+ data in terms of user-defined policies that enforce separation of replicas
1194+ across failure domains.
1195+ .
1196+ This package contains development files needed for building applications that
1197+ link against libcrush.
1198+
1199+Package: librados1
1200+Conflicts: librados
1201+Replaces: librados
1202+Architecture: any
1203+Depends: ${shlibs:Depends}, ${misc:Depends}, libcrush1
1204+Description: RADOS distributed object store client library
1205+ RADOS is a reliable, autonomic distributed object storage cluster
1206+ developed as part of the Ceph distributed storage system. This is a
1207+ shared library allowing applications to access the distributed object
1208+ store using a simple file-like interface.
1209+
1210+Package: librados1-dbg
1211+Architecture: any
1212+Section: debug
1213+Priority: extra
1214+Depends: librados1 (= ${binary:Version}), ${misc:Depends}
1215+Description: debugging symbols for librados1
1216+ RADOS is a reliable, autonomic distributed object storage cluster
1217+ developed as part of the Ceph distributed storage system. This is a
1218+ shared library allowing applications to access the distributed object
1219+ store using a simple file-like interface.
1220+ .
1221+ This package contains debugging symbols for librados1.
1222+
1223+Package: librados1-dev
1224+Architecture: any
1225+Section: libdevel
1226+Depends: ${shlibs:Depends}, ${misc:Depends}, librados1 (= ${binary:Version})
1227+Description: RADOS distributed object store client library (development files)
1228+ RADOS is a reliable, autonomic distributed object storage cluster
1229+ developed as part of the Ceph distributed storage system. This is a
1230+ shared library allowing applications to access the distributed object
1231+ store using a simple file-like interface.
1232+ .
1233+ This package contains development files needed for building applications that
1234+ link against librados.
1235+
1236+Package: libceph1
1237+Conflicts: libceph
1238+Replaces: libceph
1239+Architecture: any
1240+Depends: ${shlibs:Depends}, ${misc:Depends}, libcrush1
1241+Description: Ceph distributed file system client library
1242+ Ceph is a distributed network file system designed to provide
1243+ excellent performance, reliability, and scalability. This is a
1244+ shared library allowing applications to access a Ceph distributed
1245+ file system via a POSIX-like interface.
1246+
1247+Package: libceph1-dbg
1248+Architecture: any
1249+Section: debug
1250+Priority: extra
1251+Depends: libceph1 (= ${binary:Version}), ${misc:Depends}
1252+Description: debugging symbols for libceph1
1253+ Ceph is a distributed network file system designed to provide
1254+ excellent performance, reliability, and scalability. This is a
1255+ shared library allowing applications to access a Ceph distributed
1256+ file system via a POSIX-like interface.
1257+ .
1258+ This package contains debugging symbols for libceph1.
1259+
1260+Package: libceph1-dev
1261+Architecture: any
1262+Section: libdevel
1263+Depends: ${shlibs:Depends}, ${misc:Depends}, libceph1 (= ${binary:Version})
1264+Description: Ceph distributed file system client library (development files)
1265+ Ceph is a distributed network file system designed to provide
1266+ excellent performance, reliability, and scalability. This is a
1267+ shared library allowing applications to access a Ceph distributed
1268+ file system via a POSIX-like interface.
1269+ .
1270+ This package contains development files needed for building applications that
1271+ link against libceph.
1272+
1273+Package: radosgw
1274+Architecture: any
1275+Depends: ${shlibs:Depends}, ${misc:Depends}, libexpat1, librados1
1276+Description: REST gateway for RADOS distributed object store
1277+ RADOS is a distributed object store used by the Ceph distributed
1278+ storage system. This package provides a REST gateway to the
1279+ object store that aims to implement a superset of Amazon's S3
1280+ service.
1281+ .
1282+ This package contains the proxy daemon and related tools only.
1283+
1284+Package: radosgw-dbg
1285+Architecture: any
1286+Section: debug
1287+Priority: extra
1288+Depends: radosgw (= ${binary:Version}), ${misc:Depends}
1289+Description: debugging symbols for radosgw
1290+ RADOS is a distributed object store used by the Ceph distributed
1291+ storage system. This package provides a REST gateway to the
1292+ object store that aims to implement a superset of Amazon's S3
1293+ service.
1294+ .
1295+ This package contains debugging symbols for radosgw.
1296+>>>>>>> MERGE-SOURCE
1297
1298=== modified file 'debian/copyright'
1299--- debian/copyright 2011-02-25 15:17:26 +0000
1300+++ debian/copyright 2011-03-28 07:08:46 +0000
1301@@ -1,3 +1,4 @@
1302+<<<<<<< TREE
1303 Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
1304 Name: ceph
1305 Maintainer: Sage Weil <sage@newdream.net>
1306@@ -74,3 +75,71 @@
1307 Copyright (C) 2004-2009 by Sage Weil <sage@newdream.net>
1308 Copyright (C) 2010 Canonical, Ltd.
1309 Licensed under LGPL-2.1
1310+=======
1311+Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
1312+Name: ceph
1313+Maintainer: Sage Weil <sage@newdream.net>
1314+Source: http://ceph.newdream.net/
1315+
1316+Files: *
1317+Copyright: (c) 2004-2010 by Sage Weil <sage@newdream.net>
1318+License: LGPL2.1 (see /usr/share/common-licenses/LGPL-2.1)
1319+
1320+Files: src/client/fuse.cc
1321+Copyright:
1322+ Copyright (C) 2001-2005 Miklos Szeredi <miklos@szeredi.hu>
1323+ Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
1324+License: GPL
1325+
1326+Files: src/osbdb/OSBDB.h
1327+Copyright: Copyright (C) 2007 Casey Marshall <csm@soe.ucsc.edu>
1328+License: LGPL2.1
1329+
1330+Files: src/mount/canonicalize.c
1331+Copyright: Copyright (C) 1993 Rick Sladkey <jrs@world.std.com>
1332+License: LGPL2 or later
1333+
1334+Files: src/os/btrfs_ioctl.h
1335+Copyright: Copyright (C) 2007 Oracle. All rights reserved.
1336+License: GPL2
1337+
1338+Files: src/include/ceph_hash.cc
1339+Copyright: None
1340+License: Public domain
1341+
1342+Files: src/common/sctp_crc32.c:
1343+Copyright:
1344+ Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved.
1345+ Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
1346+License:
1347+ Redistribution and use in source and binary forms, with or without
1348+ modification, are permitted provided that the following conditions are met:
1349+
1350+ a) Redistributions of source code must retain the above copyright notice,
1351+ this list of conditions and the following disclaimer.
1352+
1353+ b) Redistributions in binary form must reproduce the above copyright
1354+ notice, this list of conditions and the following disclaimer in
1355+ the documentation and/or other materials provided with the distribution.
1356+
1357+ c) Neither the name of Cisco Systems, Inc. nor the names of its
1358+ contributors may be used to endorse or promote products derived
1359+ from this software without specific prior written permission.
1360+
1361+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1362+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1363+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1364+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
1365+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1366+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1367+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1368+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1369+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1370+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
1371+ THE POSSIBILITY OF SUCH DAMAGE.
1372+
1373+Packaging:
1374+ Copyright (C) 2004-2009 by Sage Weil <sage@newdream.net>
1375+ Copyright (C) 2010 Canonical, Ltd.
1376+ Licensed under LGPL-2.1
1377+>>>>>>> MERGE-SOURCE
1378
1379=== modified file 'debian/libceph1-dev.install'
1380--- debian/libceph1-dev.install 2011-02-25 15:17:26 +0000
1381+++ debian/libceph1-dev.install 2011-03-28 07:08:46 +0000
1382@@ -1,4 +1,10 @@
1383+<<<<<<< TREE
1384 usr/lib/libceph.so
1385 usr/lib/libceph.a
1386 usr/lib/libceph.la
1387 usr/include/ceph/libceph.h
1388+=======
1389+/usr/lib/libceph.so
1390+/usr/lib/libceph.a
1391+/usr/include/ceph/libceph.h
1392+>>>>>>> MERGE-SOURCE
1393
1394=== modified file 'debian/libceph1.install'
1395--- debian/libceph1.install 2011-02-25 15:17:26 +0000
1396+++ debian/libceph1.install 2011-03-28 07:08:46 +0000
1397@@ -1,2 +1,7 @@
1398+<<<<<<< TREE
1399 usr/lib/libceph.so.*
1400
1401+=======
1402+/usr/lib/libceph.so.*
1403+
1404+>>>>>>> MERGE-SOURCE
1405
1406=== modified file 'debian/libcrush1-dev.install'
1407--- debian/libcrush1-dev.install 2011-02-25 15:17:26 +0000
1408+++ debian/libcrush1-dev.install 2011-03-28 07:08:46 +0000
1409@@ -1,3 +1,4 @@
1410+<<<<<<< TREE
1411 usr/lib/libcrush.so
1412 usr/lib/libcrush.a
1413 usr/lib/libcrush.la
1414@@ -5,3 +6,11 @@
1415 usr/include/crush/types.h
1416 usr/include/crush/mapper.h
1417 usr/include/crush/crush.h
1418+=======
1419+/usr/lib/libcrush.so
1420+/usr/lib/libcrush.a
1421+/usr/include/crush/hash.h
1422+/usr/include/crush/types.h
1423+/usr/include/crush/mapper.h
1424+/usr/include/crush/crush.h
1425+>>>>>>> MERGE-SOURCE
1426
1427=== modified file 'debian/libcrush1.install'
1428--- debian/libcrush1.install 2011-02-25 15:17:26 +0000
1429+++ debian/libcrush1.install 2011-03-28 07:08:46 +0000
1430@@ -1,2 +1,7 @@
1431+<<<<<<< TREE
1432 usr/lib/libcrush.so.*
1433
1434+=======
1435+/usr/lib/libcrush.so.*
1436+
1437+>>>>>>> MERGE-SOURCE
1438
1439=== modified file 'debian/librados1-dev.install'
1440--- debian/librados1-dev.install 2011-02-25 15:17:26 +0000
1441+++ debian/librados1-dev.install 2011-03-28 07:08:46 +0000
1442@@ -1,3 +1,4 @@
1443+<<<<<<< TREE
1444 usr/lib/librados.so
1445 usr/lib/librados.a
1446 usr/lib/librados.la
1447@@ -9,3 +10,15 @@
1448 usr/include/rados/crc32c.h
1449 usr/include/rados/Spinlock.h
1450 usr/include/rados/assert.h
1451+=======
1452+/usr/lib/librados.so
1453+/usr/lib/librados.a
1454+/usr/include/rados/librados.h
1455+/usr/include/rados/librados.hpp
1456+/usr/include/rados/buffer.h
1457+/usr/include/rados/atomic.h
1458+/usr/include/rados/page.h
1459+/usr/include/rados/crc32c.h
1460+/usr/include/rados/Spinlock.h
1461+/usr/include/rados/assert.h
1462+>>>>>>> MERGE-SOURCE
1463
1464=== modified file 'debian/librados1.install'
1465--- debian/librados1.install 2011-02-25 15:17:26 +0000
1466+++ debian/librados1.install 2011-03-28 07:08:46 +0000
1467@@ -1,2 +1,7 @@
1468+<<<<<<< TREE
1469 usr/lib/librados.so.*
1470
1471+=======
1472+/usr/lib/librados.so.*
1473+
1474+>>>>>>> MERGE-SOURCE
1475
1476=== added file 'debian/move_dbg_files.sh'
1477--- debian/move_dbg_files.sh 1970-01-01 00:00:00 +0000
1478+++ debian/move_dbg_files.sh 2011-03-28 07:08:46 +0000
1479@@ -0,0 +1,8 @@
1480+#!/bin/sh
1481+
1482+for f in ceph ceph-fuse libcrush1 librados1 libceph1 radosgw
1483+do
1484+ echo moving $f unstripped binaries into $f-dbg
1485+ mkdir -p debian/$f-dbg/usr/lib
1486+ mv debian/$f/usr/lib/debug debian/$f-dbg/usr/lib
1487+done
1488
1489=== added directory 'debian/patches'
1490=== modified file 'debian/rules'
1491--- debian/rules 2011-02-25 15:17:26 +0000
1492+++ debian/rules 2011-03-28 07:08:46 +0000
1493@@ -1,3 +1,4 @@
1494+<<<<<<< TREE
1495 #!/usr/bin/make -f
1496 # -*- makefile -*-
1497 export DH_VERBOSE=1
1498@@ -86,3 +87,70 @@
1499
1500 binary: binary-indep binary-arch
1501 .PHONY: build clean binary-indep binary-arch binary install configure
1502+=======
1503+#!/usr/bin/make -f
1504+# -*- makefile -*-
1505+export DH_VERBOSE=1
1506+configure: configure-stamp
1507+configure-stamp:
1508+ dh_testdir
1509+ touch configure-stamp
1510+build: build-stamp
1511+build-stamp: configure-stamp
1512+ dh_testdir
1513+
1514+ ./autogen.sh
1515+ ./configure --prefix=/usr
1516+ $(MAKE)
1517+ cp src/init-ceph debian/ceph.init
1518+
1519+ touch $@
1520+clean:
1521+ dh_testdir
1522+ dh_testroot
1523+ rm -f build-stamp configure-stamp
1524+
1525+ test ! -f Makefile || $(MAKE) clean
1526+
1527+ dh_clean
1528+install: build
1529+ dh_testdir
1530+ dh_testroot
1531+ dh_clean -k
1532+ dh_installdirs
1533+
1534+ $(MAKE) DESTDIR=$(CURDIR) install
1535+
1536+
1537+# Add here commands to install the package into debian/testpack.
1538+# Build architecture-independent files here.
1539+binary-indep: build install
1540+# We have nothing to do by default.
1541+# Build architecture-dependent files here.
1542+binary-arch: build install
1543+ dh_testdir
1544+ dh_testroot
1545+ dh_installchangelogs
1546+ dh_installdocs
1547+ dh_installexamples
1548+ dh_install
1549+ dh_installlogrotate
1550+ dh_installinit
1551+ dh_installman
1552+ dh_lintian
1553+ dh_link
1554+
1555+ dh_strip -k --exclude=libcls_
1556+ chmod +x debian/move_dbg_files.sh && debian/move_dbg_files.sh
1557+
1558+ dh_compress
1559+ dh_fixperms
1560+ dh_makeshlibs -n # we do the postinst/postrm scripts manually
1561+ dh_installdeb
1562+ dh_shlibdeps
1563+ dh_gencontrol
1564+ dh_md5sums
1565+ dh_builddeb
1566+binary: binary-indep binary-arch
1567+.PHONY: build clean binary-indep binary-arch binary install configure
1568+>>>>>>> MERGE-SOURCE
1569
1570=== modified file 'debian/source/format'
1571--- debian/source/format 2011-02-25 15:17:26 +0000
1572+++ debian/source/format 2011-03-28 07:08:46 +0000
1573@@ -1,1 +1,5 @@
1574+<<<<<<< TREE
1575 1.0
1576+=======
1577+3.0 (quilt)
1578+>>>>>>> MERGE-SOURCE
1579
1580=== modified file 'src/.git_version'
1581--- src/.git_version 2011-02-25 15:17:26 +0000
1582+++ src/.git_version 2011-03-28 07:08:46 +0000
1583@@ -1,1 +1,5 @@
1584+<<<<<<< TREE
1585 2cd2c56dd07c4862da6a5a8b4c2febafacc37d22
1586+=======
1587+f7572de5cb87eb7157217be4975ae66d90831bb7
1588+>>>>>>> MERGE-SOURCE
1589
1590=== modified file 'src/Makefile.am'
1591=== modified file 'src/Makefile.in'
1592=== modified file 'src/client/Client.cc'
1593--- src/client/Client.cc 2011-02-25 15:17:26 +0000
1594+++ src/client/Client.cc 2011-03-28 07:08:46 +0000
1595@@ -375,6 +375,7 @@
1596 }
1597 if (truncate_seq >= in->truncate_seq &&
1598 in->truncate_size != truncate_size) {
1599+<<<<<<< TREE
1600 if (in->is_file()) {
1601 dout(10) << "truncate_size " << in->truncate_size << " -> "
1602 << truncate_size << dendl;
1603@@ -390,6 +391,23 @@
1604 } else {
1605 dout(0) << "Hmmm, truncate_seq && truncate_size changed on non-file inode!" << dendl;
1606 }
1607+=======
1608+ if (in->is_file()) {
1609+ dout(10) << "truncate_size " << in->truncate_size << " -> "
1610+ << truncate_size << dendl;
1611+ in->truncate_size = truncate_size;
1612+ in->oset.truncate_size = truncate_size;
1613+ if (g_conf.client_oc && prior_size) { //do actual truncation
1614+ vector<ObjectExtent> ls;
1615+ filer->file_to_extents(in->ino, &in->layout,
1616+ truncate_size, prior_size - truncate_size,
1617+ ls);
1618+ objectcacher->truncate_set(&in->oset, ls);
1619+ }
1620+ } else {
1621+ dout(0) << "Hmmm, truncate_seq && truncate_size changed on non-file inode!" << dendl;
1622+ }
1623+>>>>>>> MERGE-SOURCE
1624 }
1625
1626 // be careful with size, mtime, atime
1627
1628=== modified file 'src/common/signal.cc'
1629--- src/common/signal.cc 2011-02-25 15:17:26 +0000
1630+++ src/common/signal.cc 2011-03-28 07:08:46 +0000
1631@@ -1,3 +1,4 @@
1632+<<<<<<< TREE
1633 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
1634 // vim: ts=8 sw=2 smarttab
1635 /*
1636@@ -160,3 +161,165 @@
1637 if (old_sigset)
1638 sigdelset(old_sigset, SIGKILL);
1639 }
1640+=======
1641+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
1642+// vim: ts=8 sw=2 smarttab
1643+/*
1644+ * Ceph - scalable distributed file system
1645+ *
1646+ * Copyright (C) 2011 New Dream Network
1647+ *
1648+ * This is free software; you can redistribute it and/or
1649+ * modify it under the terms of the GNU Lesser General Public
1650+ * License version 2.1, as published by the Free Software
1651+ * Foundation. See file COPYING.
1652+ *
1653+ */
1654+
1655+#include "common/BackTrace.h"
1656+#include "common/Logger.h"
1657+#include "common/debug.h"
1658+#include "config.h"
1659+
1660+#include <signal.h>
1661+#include <sstream>
1662+#include <stdlib.h>
1663+#include <sys/stat.h>
1664+#include <sys/types.h>
1665+
1666+#define dout_prefix *_dout
1667+#define derr dout(0)
1668+
1669+typedef void (*signal_handler_t)(int);
1670+
1671+static void install_sighandler(int signum, signal_handler_t handler, int flags)
1672+{
1673+ int ret;
1674+ struct sigaction oldact;
1675+ struct sigaction act;
1676+ memset(&act, 0, sizeof(act));
1677+
1678+ act.sa_handler = handler;
1679+ sigemptyset(&act.sa_mask);
1680+ act.sa_flags = flags;
1681+
1682+ ret = sigaction(signum, &act, &oldact);
1683+ if (ret != 0) {
1684+ *_dout << "install_sighandler: sigaction returned " << ret << " when "
1685+ << "trying to install a signal handler for "
1686+ << sys_siglist[signum] << "\n";
1687+ exit(1);
1688+ }
1689+}
1690+
1691+static void sighup_handler(int signum)
1692+{
1693+ // All this does is set a few bits telling us to re-open our logfiles and
1694+ // restart our central logging service.
1695+ _dout_need_open = true;
1696+ logger_reopen_all();
1697+}
1698+
1699+static void handle_fatal_signal(int signum)
1700+{
1701+ // This code may itself trigger a SIGSEGV if the heap is corrupt. In that
1702+ // case, SA_RESETHAND specifies that the default signal handler--
1703+ // presumably dump core-- will handle it.
1704+ *_dout << "*** Caught signal (" << sys_siglist[signum] << ") ***"
1705+ << std::endl;
1706+ *_dout << "in thread " << std::hex << pthread_self() << std::endl;
1707+ BackTrace bt(0);
1708+ bt.print(*_dout);
1709+ _dout->flush();
1710+
1711+ // Use default handler to dump core
1712+ int ret = raise(signum);
1713+
1714+ // Normally, we won't get here. If we do, something is very weird.
1715+ if (ret) {
1716+ *_dout << "handle_fatal_signal: failed to re-raise signal " << signum
1717+ << std::endl;
1718+ }
1719+ else {
1720+ *_dout << "handle_fatal_signal: default handler for signal " << signum
1721+ << " didn't terminate the process?" << std::endl;
1722+ }
1723+ exit(1);
1724+}
1725+
1726+#include <syslog.h>
1727+
1728+std::string signal_mask_to_str()
1729+{
1730+ sigset_t old_sigset;
1731+ if (pthread_sigmask(SIG_SETMASK, NULL, &old_sigset)) {
1732+ return "(pthread_signmask failed)";
1733+ }
1734+
1735+ ostringstream oss;
1736+ oss << "show_signal_mask: { ";
1737+ string sep("");
1738+ for (int signum = 0; signum < NSIG; ++signum) {
1739+ if (sigismember(&old_sigset, signum) == 1) {
1740+ oss << sep << signum;
1741+ sep = ", ";
1742+ }
1743+ }
1744+ oss << " }";
1745+ return oss.str();
1746+}
1747+
1748+void install_standard_sighandlers(void)
1749+{
1750+ install_sighandler(SIGHUP, sighup_handler, SA_RESTART);
1751+ install_sighandler(SIGSEGV, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1752+ install_sighandler(SIGABRT, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1753+ install_sighandler(SIGBUS, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1754+ install_sighandler(SIGILL, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1755+ install_sighandler(SIGFPE, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1756+ install_sighandler(SIGXCPU, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1757+ install_sighandler(SIGXFSZ, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1758+ install_sighandler(SIGSYS, handle_fatal_signal, SA_RESETHAND | SA_NODEFER);
1759+}
1760+
1761+void block_all_signals(sigset_t *old_sigset)
1762+{
1763+ sigset_t sigset;
1764+ sigfillset(&sigset);
1765+ sigdelset(&sigset, SIGKILL);
1766+ if (pthread_sigmask(SIG_BLOCK, &sigset, old_sigset)) {
1767+ derr << "block_all_signals: sigprocmask failed" << dendl;
1768+ if (old_sigset)
1769+ sigaddset(old_sigset, SIGKILL);
1770+ return;
1771+ }
1772+ if (old_sigset)
1773+ sigdelset(old_sigset, SIGKILL);
1774+}
1775+
1776+void restore_sigset(const sigset_t *old_sigset)
1777+{
1778+ if (sigismember(old_sigset, SIGKILL) != 0) {
1779+ derr << "restore_sigset: not restoring invalid old_sigset" << dendl;
1780+ return;
1781+ }
1782+ if (pthread_sigmask(SIG_SETMASK, old_sigset, NULL)) {
1783+ derr << "restore_sigset: sigprocmask failed" << dendl;
1784+ }
1785+}
1786+
1787+void unblock_all_signals(sigset_t *old_sigset)
1788+{
1789+ sigset_t sigset;
1790+ sigfillset(&sigset);
1791+ sigdelset(&sigset, SIGKILL);
1792+ if (pthread_sigmask(SIG_UNBLOCK, &sigset, old_sigset)) {
1793+ derr << "unblock_all_signals: sigprocmask failed" << dendl;
1794+ if (old_sigset)
1795+ sigaddset(old_sigset, SIGKILL);
1796+ return;
1797+ }
1798+ if (old_sigset)
1799+ sigdelset(old_sigset, SIGKILL);
1800+}
1801+>>>>>>> MERGE-SOURCE
1802
1803=== modified file 'src/include/ceph_strings.cc'
1804--- src/include/ceph_strings.cc 2011-02-25 15:17:26 +0000
1805+++ src/include/ceph_strings.cc 2011-03-28 07:08:46 +0000
1806@@ -54,10 +54,16 @@
1807 case CEPH_OSD_OP_BALANCEREADS: return "balance-reads";
1808 case CEPH_OSD_OP_UNBALANCEREADS: return "unbalance-reads";
1809 case CEPH_OSD_OP_SCRUB: return "scrub";
1810+<<<<<<< TREE
1811 case CEPH_OSD_OP_SCRUB_RESERVE: return "scrub-reserve";
1812 case CEPH_OSD_OP_SCRUB_UNRESERVE: return "scrub-unreserve";
1813 case CEPH_OSD_OP_SCRUB_STOP: return "scrub-stop";
1814 case CEPH_OSD_OP_SCRUB_MAP: return "scrub-map";
1815+=======
1816+ case CEPH_OSD_OP_SCRUB_RESERVE: return "scrub-reserve";
1817+ case CEPH_OSD_OP_SCRUB_UNRESERVE: return "scrub-unreserve";
1818+ case CEPH_OSD_OP_SCRUB_STOP: return "scrub-stop";
1819+>>>>>>> MERGE-SOURCE
1820
1821 case CEPH_OSD_OP_WRLOCK: return "wrlock";
1822 case CEPH_OSD_OP_WRUNLOCK: return "wrunlock";
1823
1824=== modified file 'src/include/rados.h'
1825--- src/include/rados.h 2011-02-25 15:17:26 +0000
1826+++ src/include/rados.h 2011-03-28 07:08:46 +0000
1827@@ -220,6 +220,7 @@
1828 CEPH_OSD_OP_RMXATTR = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_ATTR | 4,
1829
1830 /** subop **/
1831+<<<<<<< TREE
1832 CEPH_OSD_OP_PULL = CEPH_OSD_OP_MODE_SUB | 1,
1833 CEPH_OSD_OP_PUSH = CEPH_OSD_OP_MODE_SUB | 2,
1834 CEPH_OSD_OP_BALANCEREADS = CEPH_OSD_OP_MODE_SUB | 3,
1835@@ -229,6 +230,16 @@
1836 CEPH_OSD_OP_SCRUB_UNRESERVE = CEPH_OSD_OP_MODE_SUB | 7,
1837 CEPH_OSD_OP_SCRUB_STOP = CEPH_OSD_OP_MODE_SUB | 8,
1838 CEPH_OSD_OP_SCRUB_MAP = CEPH_OSD_OP_MODE_SUB | 9,
1839+=======
1840+ CEPH_OSD_OP_PULL = CEPH_OSD_OP_MODE_SUB | 1,
1841+ CEPH_OSD_OP_PUSH = CEPH_OSD_OP_MODE_SUB | 2,
1842+ CEPH_OSD_OP_BALANCEREADS = CEPH_OSD_OP_MODE_SUB | 3,
1843+ CEPH_OSD_OP_UNBALANCEREADS = CEPH_OSD_OP_MODE_SUB | 4,
1844+ CEPH_OSD_OP_SCRUB = CEPH_OSD_OP_MODE_SUB | 5,
1845+ CEPH_OSD_OP_SCRUB_RESERVE = CEPH_OSD_OP_MODE_SUB | 6,
1846+ CEPH_OSD_OP_SCRUB_UNRESERVE = CEPH_OSD_OP_MODE_SUB | 7,
1847+ CEPH_OSD_OP_SCRUB_STOP = CEPH_OSD_OP_MODE_SUB | 8,
1848+>>>>>>> MERGE-SOURCE
1849
1850 /** lock **/
1851 CEPH_OSD_OP_WRLOCK = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_LOCK | 1,
1852
1853=== modified file 'src/mds/Locker.cc'
1854=== modified file 'src/mds/MDS.cc'
1855--- src/mds/MDS.cc 2011-02-25 15:17:26 +0000
1856+++ src/mds/MDS.cc 2011-03-28 07:08:46 +0000
1857@@ -924,10 +924,16 @@
1858 oldmap->get_mds_set(oldresolve, MDSMap::STATE_RESOLVE);
1859 mdsmap->get_mds_set(resolve, MDSMap::STATE_RESOLVE);
1860 if (oldresolve != resolve) {
1861+<<<<<<< TREE
1862 dout(10) << " resolve set is " << resolve << ", was " << oldresolve << dendl;
1863 calc_recovery_set();
1864 if (!mdsmap->is_any_failed())
1865 mdcache->send_resolves();
1866+=======
1867+ dout(10) << " resolve set is " << resolve << ", was " << oldresolve << dendl;
1868+ calc_recovery_set();
1869+ mdcache->send_resolves();
1870+>>>>>>> MERGE-SOURCE
1871 }
1872 }
1873
1874
1875=== modified file 'src/mds/MDSMap.h'
1876=== modified file 'src/mon/MDSMonitor.cc'
1877--- src/mon/MDSMonitor.cc 2011-02-25 15:17:26 +0000
1878+++ src/mon/MDSMonitor.cc 2011-03-28 07:08:46 +0000
1879@@ -182,6 +182,7 @@
1880 << " " << m->get_compat()
1881 << dendl;
1882
1883+<<<<<<< TREE
1884 // make sure the address has a port
1885 if (m->get_orig_source_addr().get_port() == 0) {
1886 dout(1) << " ignoring boot message without a port" << dendl;
1887@@ -194,6 +195,14 @@
1888 goto out;
1889 }
1890
1891+=======
1892+ // check compat
1893+ if (!m->get_compat().writeable(mdsmap.compat)) {
1894+ dout(1) << " mds " << m->get_source_inst() << " can't write to mdsmap " << mdsmap.compat << dendl;
1895+ goto out;
1896+ }
1897+
1898+>>>>>>> MERGE-SOURCE
1899 // fw to leader?
1900 if (!mon->is_leader())
1901 return false;
1902
1903=== modified file 'src/mount/mount.ceph.c'
1904=== modified file 'src/msg/Message.cc'
1905--- src/msg/Message.cc 2011-02-25 15:17:26 +0000
1906+++ src/msg/Message.cc 2011-03-28 07:08:46 +0000
1907@@ -315,12 +315,18 @@
1908 case MSG_REMOVE_SNAPS:
1909 m = new MRemoveSnaps;
1910 break;
1911+<<<<<<< TREE
1912 case MSG_OSD_PG_MISSING:
1913 m = new MOSDPGMissing;
1914 break;
1915 case MSG_OSD_REP_SCRUB:
1916 m = new MOSDRepScrub;
1917 break;
1918+=======
1919+ case MSG_OSD_PG_MISSING:
1920+ m = new MOSDPGMissing;
1921+ break;
1922+>>>>>>> MERGE-SOURCE
1923 // auth
1924 case CEPH_MSG_AUTH:
1925 m = new MAuth;
1926
1927=== modified file 'src/msg/Message.h'
1928--- src/msg/Message.h 2011-02-25 15:17:26 +0000
1929+++ src/msg/Message.h 2011-03-28 07:08:46 +0000
1930@@ -73,8 +73,12 @@
1931 #define MSG_REMOVE_SNAPS 90
1932
1933 #define MSG_OSD_SCRUB 91
1934+<<<<<<< TREE
1935 #define MSG_OSD_PG_MISSING 92
1936 #define MSG_OSD_REP_SCRUB 93
1937+=======
1938+#define MSG_OSD_PG_MISSING 92
1939+>>>>>>> MERGE-SOURCE
1940
1941
1942
1943
1944=== modified file 'src/os/FileStore.cc'
1945--- src/os/FileStore.cc 2011-02-25 15:17:26 +0000
1946+++ src/os/FileStore.cc 2011-03-28 07:08:46 +0000
1947@@ -1048,6 +1048,7 @@
1948 dout(0) << "mount WARNING: not btrfs, store may be in inconsistent state" << dendl;
1949 } else {
1950 uint64_t cp = snaps.back();
1951+<<<<<<< TREE
1952 uint64_t curr_seq;
1953
1954 int curr_fd = read_op_seq(current_op_seq_fn, &curr_seq);
1955@@ -1079,6 +1080,38 @@
1956 cerr << TEXT_YELLOW
1957 << " ** WARNING: forcing the use of stale snapshot data\n" << TEXT_NORMAL;
1958 }
1959+=======
1960+ uint64_t curr_seq;
1961+
1962+ int curr_fd = read_op_seq(current_op_seq_fn, &curr_seq);
1963+ assert(curr_fd >= 0);
1964+ close(curr_fd);
1965+ dout(10) << "*** curr_seq=" << curr_seq << " cp=" << cp << dendl;
1966+
1967+ if (cp != curr_seq && !g_conf.osd_use_stale_snap) {
1968+ dout(0) << "\n"
1969+ << " ** ERROR: current volume data version is not equal to snapshotted version\n"
1970+ << " which can lead to data inconsistency. \n"
1971+ << " Current version=" << curr_seq << " snapshot version=" << cp << "\n"
1972+ << " Startup with snapshotted version can be forced using the\n"
1973+ <<" 'osd use stale snap = true' config option.\n"
1974+ << dendl;
1975+ cerr << TEXT_RED
1976+ << " ** ERROR: current volume data version is not equal to snapshotted version\n"
1977+ << " which can lead to data inconsistency. \n"
1978+ << " Current version=" << curr_seq << " snapshot version=" << cp << "\n"
1979+ << " Startup with snapshotted version can be forced using the\n"
1980+ <<" 'osd use stale snap = true' config option.\n"
1981+ << TEXT_NORMAL;
1982+ exit(1);
1983+ }
1984+
1985+ if (cp != curr_seq) {
1986+ dout(0) << "WARNING: user forced start with data sequence mismatch: curr=" << curr_seq << " snap_seq=" << cp << dendl;
1987+ cerr << TEXT_YELLOW
1988+ << " ** WARNING: forcing the use of stale snapshot data\n" << TEXT_NORMAL;
1989+ }
1990+>>>>>>> MERGE-SOURCE
1991
1992 // drop current
1993 btrfs_ioctl_vol_args vol_args;
1994@@ -1109,6 +1142,7 @@
1995 ::close(vol_args.fd);
1996 dout(10) << "mount rolled back to consistent snap " << cp << dendl;
1997 snaps.pop_back();
1998+<<<<<<< TREE
1999
2000 if (cp != curr_seq) {
2001 curr_fd = read_op_seq(current_op_seq_fn, &curr_seq);
2002@@ -1117,6 +1151,17 @@
2003 write_op_seq(curr_fd, curr_seq);
2004 ::close(curr_fd);
2005 }
2006+=======
2007+
2008+ assert(curr_fd >= 0);
2009+ if (cp != curr_seq) {
2010+ curr_fd = read_op_seq(current_op_seq_fn, &curr_seq);
2011+ /* we'll use the higher version from now on */
2012+ curr_seq = cp;
2013+ write_op_seq(curr_fd, curr_seq);
2014+ }
2015+ close(curr_fd);
2016+>>>>>>> MERGE-SOURCE
2017 }
2018 }
2019
2020
2021=== modified file 'src/osd/OSD.cc'
2022--- src/osd/OSD.cc 2011-02-25 15:17:26 +0000
2023+++ src/osd/OSD.cc 2011-03-28 07:08:46 +0000
2024@@ -2056,6 +2056,7 @@
2025 {
2026 // lock!
2027 osd_lock.Lock();
2028+<<<<<<< TREE
2029 while (dispatch_running) {
2030 dout(10) << "ms_dispatch waiting for other dispatch thread to complete" << dendl;
2031 dispatch_cond.Wait(osd_lock);
2032@@ -2063,7 +2064,11 @@
2033 dispatch_running = true;
2034
2035 do_waiters();
2036+=======
2037+ ++dispatch_running;
2038+>>>>>>> MERGE-SOURCE
2039 _dispatch(m);
2040+<<<<<<< TREE
2041 do_waiters();
2042
2043 dispatch_running = false;
2044@@ -2071,6 +2076,10 @@
2045 // no need to signal here, since tick() doesn't wait.
2046 //dispatch_cond.Signal();
2047
2048+=======
2049+ --dispatch_running;
2050+ do_waiters();
2051+>>>>>>> MERGE-SOURCE
2052 osd_lock.Unlock();
2053 return true;
2054 }
2055@@ -2279,6 +2288,7 @@
2056 }
2057 }
2058 }
2059+<<<<<<< TREE
2060
2061 logger->set(l_osd_buf, buffer_total_alloc.read());
2062
2063@@ -2289,6 +2299,13 @@
2064 dout(10) << "queueing MOSDRepScrub " << *m << dendl;
2065 rep_scrub_wq.queue(m);
2066 }
2067+=======
2068+
2069+ logger->set(l_osd_buf, buffer_total_alloc.read());
2070+
2071+}
2072+
2073+>>>>>>> MERGE-SOURCE
2074
2075 void OSD::handle_scrub(MOSDScrub *m)
2076 {
2077@@ -2769,9 +2786,14 @@
2078 pg->write_info(t);
2079 }
2080
2081+<<<<<<< TREE
2082 bool do_shutdown = false;
2083 bool do_restart = false;
2084+=======
2085+ bool do_shutdown = false;
2086+>>>>>>> MERGE-SOURCE
2087 if (osdmap->get_epoch() > 0 &&
2088+<<<<<<< TREE
2089 state == STATE_ACTIVE) {
2090 if (!osdmap->exists(whoami)) {
2091 dout(0) << "map says i do not exist. shutting down." << dendl;
2092@@ -2812,6 +2834,34 @@
2093
2094 reset_heartbeat_peers();
2095 }
2096+=======
2097+ state == STATE_ACTIVE) {
2098+ if (!osdmap->exists(whoami)) {
2099+ dout(0) << "map says i do not exist. shutting down." << dendl;
2100+ do_shutdown = true; // don't call shutdown() while we have everything paused
2101+ } else if (!osdmap->is_up(whoami) ||
2102+ osdmap->get_addr(whoami) != client_messenger->get_myaddr()) {
2103+ stringstream ss;
2104+ ss << "map e" << osdmap->get_epoch() << " wrongly marked me down";
2105+ logclient.log(LOG_WARN, ss);
2106+
2107+ state = STATE_BOOTING;
2108+ up_epoch = 0;
2109+
2110+ int cport = cluster_messenger->get_myaddr().get_port();
2111+ int hbport = heartbeat_messenger->get_myaddr().get_port();
2112+
2113+ int r = cluster_messenger->rebind(hbport);
2114+ if (r != 0)
2115+ do_shutdown = true; // FIXME: do_restart?
2116+
2117+ r = heartbeat_messenger->rebind(cport);
2118+ if (r != 0)
2119+ do_shutdown = true; // FIXME: do_restart?
2120+
2121+ reset_heartbeat_peers();
2122+ }
2123+>>>>>>> MERGE-SOURCE
2124 }
2125
2126 // note in the superblock that we were clean thru the prior epoch
2127
2128=== modified file 'src/osd/OSD.h'
2129--- src/osd/OSD.h 2011-02-25 15:17:26 +0000
2130+++ src/osd/OSD.h 2011-03-28 07:08:46 +0000
2131@@ -133,8 +133,12 @@
2132 }
2133 };
2134
2135+<<<<<<< TREE
2136 Cond dispatch_cond;
2137 int dispatch_running;
2138+=======
2139+ int dispatch_running;
2140+>>>>>>> MERGE-SOURCE
2141
2142 void open_logger();
2143 void start_logger();
2144
2145=== modified file 'src/osd/PG.cc'
2146--- src/osd/PG.cc 2011-02-25 15:17:26 +0000
2147+++ src/osd/PG.cc 2011-03-28 07:08:46 +0000
2148@@ -2742,70 +2742,175 @@
2149 // ==========================================================================================
2150 // SCRUB
2151
2152-/*
2153- * when holding pg and sched_scrub_lock, then the states are:
2154- * scheduling:
2155- * scrub_reserved = true
2156- * scrub_rserved_peers includes whoami
2157- * osd->scrub_pending++
2158- * scheduling, replica declined:
2159- * scrub_reserved = true
2160- * scrub_reserved_peers includes -1
2161- * osd->scrub_pending++
2162- * pending:
2163- * scrub_reserved = true
2164- * scrub_reserved_peers.size() == acting.size();
2165- * pg on scrub_wq
2166- * osd->scrub_pending++
2167- * scrubbing:
2168- * scrub_reserved = false;
2169- * scrub_reserved_peers empty
2170- * osd->scrub_active++
2171- */
2172-
2173-// returns false if waiting for a reply
2174-bool PG::sched_scrub()
2175-{
2176- assert(_lock.is_locked());
2177- if (!(is_primary() && is_active() && is_clean() && !is_scrubbing())) {
2178- return true;
2179- }
2180-
2181- // just scrubbed?
2182- if (info.history.last_scrub_stamp + g_conf.osd_scrub_min_interval > g_clock.now()) {
2183- dout(20) << "sched_scrub: just scrubbed, skipping" << dendl;
2184- return true;
2185- }
2186-
2187- bool ret = false;
2188- if (!scrub_reserved) {
2189- assert(scrub_reserved_peers.empty());
2190- if (osd->inc_scrubs_pending()) {
2191- dout(20) << "sched_scrub: reserved locally, reserving replicas" << dendl;
2192- scrub_reserved = true;
2193- scrub_reserved_peers.insert(osd->whoami);
2194- scrub_reserve_replicas();
2195- } else {
2196- dout(20) << "sched_scrub: failed to reserve locally" << dendl;
2197- }
2198- }
2199- if (scrub_reserved) {
2200- if (scrub_reserve_failed) {
2201- dout(20) << "sched_scrub: failed, a peer declined" << dendl;
2202- clear_scrub_reserved();
2203- scrub_unreserve_replicas();
2204- ret = true;
2205- } else if (scrub_reserved_peers.size() == acting.size()) {
2206- dout(20) << "sched_scrub: success, reserved self and replicas" << dendl;
2207- osd->scrub_wq.queue(this);
2208- ret = true;
2209- } else {
2210- // none declined, since scrub_reserved is set
2211- dout(20) << "sched_scrub: reserved " << scrub_reserved_peers << ", waiting for replicas" << dendl;
2212- }
2213- }
2214-
2215- return ret;
2216+<<<<<<< TREE
2217+/*
2218+ * when holding pg and sched_scrub_lock, then the states are:
2219+ * scheduling:
2220+ * scrub_reserved = true
2221+ * scrub_rserved_peers includes whoami
2222+ * osd->scrub_pending++
2223+ * scheduling, replica declined:
2224+ * scrub_reserved = true
2225+ * scrub_reserved_peers includes -1
2226+ * osd->scrub_pending++
2227+ * pending:
2228+ * scrub_reserved = true
2229+ * scrub_reserved_peers.size() == acting.size();
2230+ * pg on scrub_wq
2231+ * osd->scrub_pending++
2232+ * scrubbing:
2233+ * scrub_reserved = false;
2234+ * scrub_reserved_peers empty
2235+ * osd->scrub_active++
2236+ */
2237+
2238+// returns false if waiting for a reply
2239+bool PG::sched_scrub()
2240+=======
2241+/*
2242+ * when holding pg and sched_scrub_lock, then the states are:
2243+ * scheduling:
2244+ * scrub_reserved = true
2245+ * scrub_rserved_peers includes whoami
2246+ * osd->scrub_pending++
2247+ * scheduling, replica declined:
2248+ * scrub_reserved = true
2249+ * scrub_reserved_peers includes -1
2250+ * osd->scrub_pending++
2251+ * pending:
2252+ * scrub_reserved = true
2253+ * scrub_reserved_peers.size() == acting.size();
2254+ * pg on scrub_wq
2255+ * osd->scrub_pending++
2256+ * scrubbing:
2257+ * scrub_reserved = false;
2258+ * scrub_reserved_peers empty
2259+ * osd->scrub_active++
2260+ */
2261+
2262+// returns false if waiting for a reply
2263+bool PG::sched_scrub()
2264+{
2265+ assert(_lock.is_locked());
2266+ if (!(is_primary() && is_active() && is_clean() && !is_scrubbing())) {
2267+ return true;
2268+ }
2269+
2270+ // just scrubbed?
2271+ if (info.history.last_scrub_stamp + g_conf.osd_scrub_min_interval > g_clock.now()) {
2272+ dout(20) << "sched_scrub: just scrubbed, skipping" << dendl;
2273+ return true;
2274+ }
2275+
2276+ bool ret = false;
2277+ if (!scrub_reserved) {
2278+ assert(scrub_reserved_peers.empty());
2279+ if (osd->inc_scrubs_pending()) {
2280+ dout(20) << "sched_scrub: reserved locally, reserving replicas" << dendl;
2281+ scrub_reserved = true;
2282+ scrub_reserved_peers.insert(osd->whoami);
2283+ scrub_reserve_replicas();
2284+ } else {
2285+ dout(20) << "sched_scrub: failed to reserve locally" << dendl;
2286+ }
2287+ }
2288+ if (scrub_reserved) {
2289+ if (scrub_reserve_failed) {
2290+ dout(20) << "sched_scrub: failed, a peer declined" << dendl;
2291+ clear_scrub_reserved();
2292+ scrub_unreserve_replicas();
2293+ ret = true;
2294+ } else if (scrub_reserved_peers.size() == acting.size()) {
2295+ dout(20) << "sched_scrub: success, reserved self and replicas" << dendl;
2296+ osd->scrub_wq.queue(this);
2297+ ret = true;
2298+ } else {
2299+ // none declined, since scrub_reserved is set
2300+ dout(20) << "sched_scrub: reserved " << scrub_reserved_peers << ", waiting for replicas" << dendl;
2301+ }
2302+ }
2303+
2304+ return ret;
2305+}
2306+
2307+void PG::sub_op_scrub(MOSDSubOp *op)
2308+>>>>>>> MERGE-SOURCE
2309+{
2310+<<<<<<< TREE
2311+ assert(_lock.is_locked());
2312+ if (!(is_primary() && is_active() && is_clean() && !is_scrubbing())) {
2313+ return true;
2314+ }
2315+
2316+ // just scrubbed?
2317+ if (info.history.last_scrub_stamp + g_conf.osd_scrub_min_interval > g_clock.now()) {
2318+ dout(20) << "sched_scrub: just scrubbed, skipping" << dendl;
2319+ return true;
2320+ }
2321+
2322+ bool ret = false;
2323+ if (!scrub_reserved) {
2324+ assert(scrub_reserved_peers.empty());
2325+ if (osd->inc_scrubs_pending()) {
2326+ dout(20) << "sched_scrub: reserved locally, reserving replicas" << dendl;
2327+ scrub_reserved = true;
2328+ scrub_reserved_peers.insert(osd->whoami);
2329+ scrub_reserve_replicas();
2330+ } else {
2331+ dout(20) << "sched_scrub: failed to reserve locally" << dendl;
2332+ }
2333+ }
2334+ if (scrub_reserved) {
2335+ if (scrub_reserve_failed) {
2336+ dout(20) << "sched_scrub: failed, a peer declined" << dendl;
2337+ clear_scrub_reserved();
2338+ scrub_unreserve_replicas();
2339+ ret = true;
2340+ } else if (scrub_reserved_peers.size() == acting.size()) {
2341+ dout(20) << "sched_scrub: success, reserved self and replicas" << dendl;
2342+ osd->scrub_wq.queue(this);
2343+ ret = true;
2344+ } else {
2345+ // none declined, since scrub_reserved is set
2346+ dout(20) << "sched_scrub: reserved " << scrub_reserved_peers << ", waiting for replicas" << dendl;
2347+ }
2348+ }
2349+
2350+ return ret;
2351+=======
2352+ dout(7) << "sub_op_scrub" << dendl;
2353+
2354+ if (op->map_epoch < info.history.same_acting_since) {
2355+ dout(10) << "sub_op_scrub discarding old sub_op from "
2356+ << op->map_epoch << " < " << info.history.same_acting_since << dendl;
2357+ op->put();
2358+ return;
2359+ }
2360+
2361+ ScrubMap map;
2362+ if (op->version > eversion_t()) {
2363+ epoch_t epoch = info.history.same_acting_since;
2364+ finalizing_scrub = 1;
2365+ while (last_update_applied != info.last_update) {
2366+ wait();
2367+ if (epoch != info.history.same_acting_since ||
2368+ osd->is_stopping()) {
2369+ dout(10) << "scrub pg changed, aborting" << dendl;
2370+ return;
2371+ }
2372+ }
2373+ build_inc_scrub_map(map, op->version);
2374+ finalizing_scrub = 0;
2375+ } else {
2376+ build_scrub_map(map);
2377+ }
2378+
2379+ MOSDSubOpReply *reply = new MOSDSubOpReply(op, 0, osd->osdmap->get_epoch(), CEPH_OSD_FLAG_ACK);
2380+ ::encode(map, reply->get_data());
2381+ osd->cluster_messenger->send_message(reply, op->get_connection());
2382+
2383+ op->put();
2384+>>>>>>> MERGE-SOURCE
2385 }
2386
2387
2388@@ -2834,6 +2939,7 @@
2389 op->put();
2390 }
2391
2392+<<<<<<< TREE
2393 /*
2394 * pg lock may or may not be held
2395 */
2396@@ -2984,6 +3090,164 @@
2397 osd->cluster_messenger->send_message(subop, osd->osdmap->get_cluster_inst(acting[i]));
2398 }
2399 }
2400+=======
2401+/*
2402+ * pg lock may or may not be held
2403+ */
2404+void PG::_scan_list(ScrubMap &map, vector<sobject_t> &ls)
2405+{
2406+ dout(10) << "_scan_list scanning " << ls.size() << " objects" << dendl;
2407+ int i = 0;
2408+ for (vector<sobject_t>::iterator p = ls.begin();
2409+ p != ls.end();
2410+ p++, i++) {
2411+ sobject_t poid = *p;
2412+
2413+ struct stat st;
2414+ int r = osd->store->stat(coll, poid, &st);
2415+ if (r == 0) {
2416+ ScrubMap::object &o = map.objects[poid];
2417+ o.size = st.st_size;
2418+ osd->store->getattrs(coll, poid, o.attrs);
2419+ dout(25) << "_scan_list " << poid << dendl;
2420+ } else {
2421+ dout(25) << "_scan_list " << poid << " got " << r << ", skipping" << dendl;
2422+ }
2423+ }
2424+}
2425+
2426+void PG::_request_scrub_map(int replica, eversion_t version)
2427+{
2428+ dout(10) << "scrub requesting scrubmap from osd" << replica << dendl;
2429+ vector<OSDOp> scrub(1);
2430+ scrub[0].op.op = CEPH_OSD_OP_SCRUB;
2431+ sobject_t poid;
2432+ eversion_t v = version;
2433+ osd_reqid_t reqid;
2434+ MOSDSubOp *subop = new MOSDSubOp(reqid, info.pgid, poid, false, 0,
2435+ osd->osdmap->get_epoch(), osd->get_tid(), v);
2436+ subop->ops = scrub;
2437+ osd->cluster_messenger->send_message(subop, //new MOSDPGScrub(info.pgid, osd->osdmap->get_epoch()),
2438+ osd->osdmap->get_cluster_inst(replica));
2439+}
2440+
2441+void PG::sub_op_scrub_reserve(MOSDSubOp *op)
2442+{
2443+ dout(7) << "sub_op_scrub_reserve" << dendl;
2444+
2445+ if (scrub_reserved) {
2446+ dout(10) << "Ignoring reserve request: Already reserved" << dendl;
2447+ op->put();
2448+ return;
2449+ }
2450+
2451+ scrub_reserved = osd->inc_scrubs_pending();
2452+
2453+ MOSDSubOpReply *reply = new MOSDSubOpReply(op, 0, osd->osdmap->get_epoch(), CEPH_OSD_FLAG_ACK);
2454+ ::encode(scrub_reserved, reply->get_data());
2455+ osd->cluster_messenger->send_message(reply, op->get_connection());
2456+
2457+ op->put();
2458+}
2459+
2460+void PG::sub_op_scrub_reserve_reply(MOSDSubOpReply *op)
2461+{
2462+ dout(7) << "sub_op_scrub_reserve_reply" << dendl;
2463+
2464+ if (!scrub_reserved) {
2465+ dout(10) << "ignoring obsolete scrub reserve reply" << dendl;
2466+ op->put();
2467+ return;
2468+ }
2469+
2470+ int from = op->get_source().num();
2471+ bufferlist::iterator p = op->get_data().begin();
2472+ bool reserved;
2473+ ::decode(reserved, p);
2474+
2475+ if (scrub_reserved_peers.find(from) != scrub_reserved_peers.end()) {
2476+ dout(10) << " already had osd" << from << " reserved" << dendl;
2477+ } else {
2478+ if (reserved) {
2479+ dout(10) << " osd" << from << " scrub reserve = success" << dendl;
2480+ scrub_reserved_peers.insert(from);
2481+ } else {
2482+ /* One decline stops this pg from being scheduled for scrubbing. */
2483+ dout(10) << " osd" << from << " scrub reserve = fail" << dendl;
2484+ scrub_reserve_failed = true;
2485+ }
2486+ sched_scrub();
2487+ }
2488+
2489+ op->put();
2490+}
2491+
2492+void PG::sub_op_scrub_unreserve(MOSDSubOp *op)
2493+{
2494+ dout(7) << "sub_op_scrub_unreserve" << dendl;
2495+
2496+ clear_scrub_reserved();
2497+
2498+ op->put();
2499+}
2500+
2501+void PG::sub_op_scrub_stop(MOSDSubOp *op)
2502+{
2503+ dout(7) << "sub_op_scrub_stop" << dendl;
2504+
2505+ // see comment in sub_op_scrub_reserve
2506+ scrub_reserved = false;
2507+
2508+ MOSDSubOpReply *reply = new MOSDSubOpReply(op, 0, osd->osdmap->get_epoch(), CEPH_OSD_FLAG_ACK);
2509+ osd->cluster_messenger->send_message(reply, op->get_connection());
2510+
2511+ op->put();
2512+}
2513+
2514+void PG::clear_scrub_reserved()
2515+{
2516+ osd->scrub_wq.dequeue(this);
2517+ scrub_reserved_peers.clear();
2518+ scrub_reserve_failed = false;
2519+
2520+ if (scrub_reserved) {
2521+ scrub_reserved = false;
2522+ osd->dec_scrubs_pending();
2523+ }
2524+}
2525+
2526+void PG::scrub_reserve_replicas()
2527+{
2528+ for (unsigned i=1; i<acting.size(); i++) {
2529+ dout(10) << "scrub requesting reserve from osd" << acting[i] << dendl;
2530+ vector<OSDOp> scrub(1);
2531+ scrub[0].op.op = CEPH_OSD_OP_SCRUB_RESERVE;
2532+ sobject_t poid;
2533+ eversion_t v;
2534+ osd_reqid_t reqid;
2535+ MOSDSubOp *subop = new MOSDSubOp(reqid, info.pgid, poid, false, 0,
2536+ osd->osdmap->get_epoch(), osd->get_tid(), v);
2537+ subop->ops = scrub;
2538+ osd->cluster_messenger->send_message(subop, osd->osdmap->get_cluster_inst(acting[i]));
2539+ }
2540+}
2541+
2542+void PG::scrub_unreserve_replicas()
2543+{
2544+ for (unsigned i=1; i<acting.size(); i++) {
2545+ dout(10) << "scrub requesting unreserve from osd" << acting[i] << dendl;
2546+ vector<OSDOp> scrub(1);
2547+ scrub[0].op.op = CEPH_OSD_OP_SCRUB_UNRESERVE;
2548+ sobject_t poid;
2549+ eversion_t v;
2550+ osd_reqid_t reqid;
2551+ MOSDSubOp *subop = new MOSDSubOp(reqid, info.pgid, poid, false, 0,
2552+ osd->osdmap->get_epoch(), osd->get_tid(), v);
2553+ subop->ops = scrub;
2554+ osd->cluster_messenger->send_message(subop, osd->osdmap->get_cluster_inst(acting[i]));
2555+ }
2556+}
2557+>>>>>>> MERGE-SOURCE
2558
2559 /*
2560 * build a (sorted) summary of pg content for purposes of scrubbing
2561
2562=== modified file 'src/osd/PG.h'
2563--- src/osd/PG.h 2011-02-25 15:17:26 +0000
2564+++ src/osd/PG.h 2011-03-28 07:08:46 +0000
2565@@ -904,6 +904,7 @@
2566 void build_scrub_map(ScrubMap &map);
2567 void build_inc_scrub_map(ScrubMap &map, eversion_t v);
2568 virtual int _scrub(ScrubMap &map, int& errors, int& fixed) { return 0; }
2569+<<<<<<< TREE
2570 void clear_scrub_reserved();
2571 void scrub_reserve_replicas();
2572 void scrub_unreserve_replicas();
2573@@ -916,6 +917,20 @@
2574 void sub_op_scrub_reserve_reply(class MOSDSubOpReply *op);
2575 void sub_op_scrub_unreserve(class MOSDSubOp *op);
2576 void sub_op_scrub_stop(class MOSDSubOp *op);
2577+=======
2578+ void clear_scrub_reserved();
2579+ void scrub_reserve_replicas();
2580+ void scrub_unreserve_replicas();
2581+ bool scrub_all_replicas_reserved() const;
2582+ bool sched_scrub();
2583+
2584+ void sub_op_scrub(class MOSDSubOp *op);
2585+ void sub_op_scrub_reply(class MOSDSubOpReply *op);
2586+ void sub_op_scrub_reserve(class MOSDSubOp *op);
2587+ void sub_op_scrub_reserve_reply(class MOSDSubOpReply *op);
2588+ void sub_op_scrub_unreserve(class MOSDSubOp *op);
2589+ void sub_op_scrub_stop(class MOSDSubOp *op);
2590+>>>>>>> MERGE-SOURCE
2591
2592 public:
2593 PG(OSD *o, PGPool *_pool, pg_t p, const sobject_t& loid, const sobject_t& ioid) :
2594
2595=== modified file 'src/osd/ReplicatedPG.cc'
2596--- src/osd/ReplicatedPG.cc 2011-02-25 15:17:26 +0000
2597+++ src/osd/ReplicatedPG.cc 2011-03-28 07:08:46 +0000
2598@@ -493,6 +493,15 @@
2599 case CEPH_OSD_OP_SCRUB_MAP:
2600 sub_op_scrub_map(op);
2601 return;
2602+ case CEPH_OSD_OP_SCRUB_RESERVE:
2603+ sub_op_scrub_reserve(op);
2604+ return;
2605+ case CEPH_OSD_OP_SCRUB_UNRESERVE:
2606+ sub_op_scrub_unreserve(op);
2607+ return;
2608+ case CEPH_OSD_OP_SCRUB_STOP:
2609+ sub_op_scrub_stop(op);
2610+ return;
2611 }
2612 }
2613
2614@@ -508,6 +517,16 @@
2615 // continue peer recovery
2616 sub_op_push_reply(r);
2617 return;
2618+<<<<<<< TREE
2619+
2620+ case CEPH_OSD_OP_SCRUB_RESERVE:
2621+ sub_op_scrub_reserve_reply(r);
2622+=======
2623+
2624+ case CEPH_OSD_OP_SCRUB:
2625+ sub_op_scrub_reply(r);
2626+>>>>>>> MERGE-SOURCE
2627+ return;
2628
2629 case CEPH_OSD_OP_SCRUB_RESERVE:
2630 sub_op_scrub_reserve_reply(r);
2631@@ -521,6 +540,7 @@
2632
2633 bool ReplicatedPG::snap_trimmer()
2634 {
2635+ assert(is_primary() && is_clean());
2636 lock();
2637 if (!(is_primary() && is_clean() && is_active())) {
2638 unlock();
2639@@ -1654,8 +1674,14 @@
2640 assert(0);
2641 }
2642 } else { //we got our context, let's use it to do the rollback!
2643+<<<<<<< TREE
2644 sobject_t& rollback_to_sobject = rollback_to->obs.oi.soid;
2645 if (ctx->clone_obc && *ctx->clone_obc->obs.oi.snaps.rbegin() <= snapid) {
2646+=======
2647+ sobject_t& rollback_to_sobject = rollback_to->obs.oi.soid;
2648+ if (ctx->clone_obc &&
2649+ (ctx->clone_obc->obs.oi.soid.snap == snapid)) {
2650+>>>>>>> MERGE-SOURCE
2651 //just cloned the rollback target, we don't need to do anything!
2652 } else {
2653 /* 1) Delete current head

Subscribers

People subscribed via source and target branches

to all changes: