From: Yan, Zheng Date: Wed, 5 Aug 2020 08:04:30 +0000 (+0800) Subject: mds: disallow hardlink across subvolume X-Git-Tag: v15.2.9~110^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6c387384c7c91a7c1166fac742aa17f14dd055f1;p=ceph.git mds: disallow hardlink across subvolume Signed-off-by: "Yan, Zheng" (cherry picked from commit 55cc3f7d7d27837bfe64ee46444358c0e45d16f6) --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 3093e7dfeef1..2a510b6a045c 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -6340,6 +6340,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);