]>
Commit | Line | Data |
---|---|---|
9f95a23c TL |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab ft=cpp | |
3 | ||
4 | #include "rgw_gc_log.h" | |
5 | ||
6 | #include "cls/rgw/cls_rgw_client.h" | |
7 | #include "cls/rgw_gc/cls_rgw_gc_client.h" | |
8 | #include "cls/version/cls_version_client.h" | |
9 | ||
10 | ||
11 | void gc_log_init2(librados::ObjectWriteOperation& op, | |
12 | uint64_t max_size, uint64_t max_deferred) | |
13 | { | |
14 | obj_version objv; // objv.ver = 0 | |
15 | cls_version_check(op, objv, VER_COND_EQ); | |
16 | cls_rgw_gc_queue_init(op, max_size, max_deferred); | |
17 | objv.ver = 1; | |
18 | cls_version_set(op, objv); | |
19 | } | |
20 | ||
21 | void gc_log_enqueue1(librados::ObjectWriteOperation& op, | |
22 | uint32_t expiration, cls_rgw_gc_obj_info& info) | |
23 | { | |
24 | obj_version objv; // objv.ver = 0 | |
25 | cls_version_check(op, objv, VER_COND_EQ); | |
26 | cls_rgw_gc_set_entry(op, expiration, info); | |
27 | } | |
28 | ||
29 | void gc_log_enqueue2(librados::ObjectWriteOperation& op, | |
30 | uint32_t expiration, const cls_rgw_gc_obj_info& info) | |
31 | { | |
32 | obj_version objv; | |
33 | objv.ver = 1; | |
34 | cls_version_check(op, objv, VER_COND_EQ); | |
35 | cls_rgw_gc_queue_enqueue(op, expiration, info); | |
36 | } | |
37 | ||
38 | void gc_log_defer1(librados::ObjectWriteOperation& op, | |
39 | uint32_t expiration, const cls_rgw_gc_obj_info& info) | |
40 | { | |
41 | obj_version objv; // objv.ver = 0 | |
42 | cls_version_check(op, objv, VER_COND_EQ); | |
43 | cls_rgw_gc_defer_entry(op, expiration, info.tag); | |
44 | } | |
45 | ||
46 | void gc_log_defer2(librados::ObjectWriteOperation& op, | |
47 | uint32_t expiration, const cls_rgw_gc_obj_info& info) | |
48 | { | |
49 | obj_version objv; | |
50 | objv.ver = 1; | |
51 | cls_version_check(op, objv, VER_COND_EQ); | |
52 | cls_rgw_gc_queue_defer_entry(op, expiration, info); | |
53 | // TODO: conditional on whether omap is known to be empty | |
54 | cls_rgw_gc_remove(op, {info.tag}); | |
55 | } |