MCPcopy Create free account
hub / github.com/ceph/ceph / for_each_readdir_snapdiff

Method for_each_readdir_snapdiff

src/test/libcephfs/snapdiff.cc:322–359  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

320 return r;
321 }
322 int for_each_readdir_snapdiff(const char* relpath,
323 const char* snap1,
324 const char* snap2,
325 std::function<bool(const dirent*, uint64_t)> fn)
326 {
327 auto s1 = make_snap_name(snap1);
328 auto s2 = make_snap_name(snap2);
329 ceph_snapdiff_info info;
330 ceph_snapdiff_entry_t res_entry;
331 int r = ceph_open_snapdiff(cmount,
332 dir_path,
333 relpath,
334 s1.c_str(),
335 s2.c_str(),
336 &info);
337 if (r != 0) {
338 std::cerr << " Failed to open snapdiff, ret:" << r << std::endl;
339 return r;
340 }
341 while (0 < (r = ceph_readdir_snapdiff(&info,
342 &res_entry))) {
343 if (strcmp(res_entry.dir_entry.d_name, ".") == 0 ||
344 strcmp(res_entry.dir_entry.d_name, "..") == 0) {
345 continue;
346 }
347 if (!fn(&res_entry.dir_entry, res_entry.snapid)) {
348 r = -EINTR;
349 break;
350 }
351 }
352 ceph_assert(0 == ceph_close_snapdiff(&info));
353 if (r != 0) {
354 std::cerr << " Failed to readdir snapdiff, ret:" << r
355 << " " << relpath << ", " << snap1 << " vs. " << snap2
356 << std::endl;
357 }
358 return r;
359 }
360 int readdir_snapdiff_and_compare(const char* relpath,
361 const char* snap1,
362 const char* snap2,

Callers 1

TESTFunction · 0.80

Calls 4

ceph_open_snapdiffFunction · 0.85
ceph_readdir_snapdiffFunction · 0.85
ceph_close_snapdiffFunction · 0.85
c_strMethod · 0.45

Tested by

no test coverage detected