From 55cc3f7d7d27837bfe64ee46444358c0e45d16f6 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 5 Aug 2020 16:04:30 +0800 Subject: [PATCH] mds: disallow hardlink across subvolume Signed-off-by: "Yan, Zheng" --- src/mds/Server.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 0655da9d1b3..cd2319e3eb8 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -6336,6 +6336,16 @@ void Server::handle_client_link(MDRequestRef& mdr) return; } + CInode* target_pin = targeti->get_projected_parent_dir()->inode; + SnapRealm *target_realm = target_pin->find_snaprealm(); + if (target_pin != dir->inode && + target_realm->get_subvolume_ino() != + dir->inode->find_snaprealm()->get_subvolume_ino()) { + dout(7) << "target is in different subvolume, failing..." << dendl; + respond_to_request(mdr, -EXDEV); + return; + } + // go! ceph_assert(g_conf()->mds_kill_link_at != 1); -- 2.39.5