From 3c3d56fbbad08af536c293217377b6b50f755287 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Wed, 30 Oct 2024 20:39:32 -0400 Subject: [PATCH] client: add DentryRef Signed-off-by: Patrick Donnelly Fixes: https://tracker.ceph.com/issues/66373 --- src/client/Dentry.cc | 10 ++++++++++ src/client/DentryRef.h | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/client/DentryRef.h diff --git a/src/client/Dentry.cc b/src/client/Dentry.cc index f8741050a4436..70675599210ab 100644 --- a/src/client/Dentry.cc +++ b/src/client/Dentry.cc @@ -31,3 +31,13 @@ std::ostream &operator<<(std::ostream &oss, const Dentry &dn) { return oss << dn.dir->parent_inode->vino() << "[\"" << dn.name << "\"]"; } + +void intrusive_ptr_add_ref(Dentry* dn) +{ + dn->get(); +} + +void intrusive_ptr_release(Dentry* dn) +{ + dn->put(); +} diff --git a/src/client/DentryRef.h b/src/client/DentryRef.h new file mode 100644 index 0000000000000..3ef209a4148e2 --- /dev/null +++ b/src/client/DentryRef.h @@ -0,0 +1,23 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* + * Ceph - scalable distributed file system + * + * Copyright (C) 2024 IBM, Inc. + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. + * + */ + +#ifndef CEPH_CLIENT_DENTRYREF_H +#define CEPH_CLIENT_DENTRYREF_H + +#include +class Dentry; +void intrusive_ptr_add_ref(Dentry *in); +void intrusive_ptr_release(Dentry *in); +typedef boost::intrusive_ptr DentryRef; +#endif -- 2.39.5