self.verify_snapshot('d2', 'snap0')
self.disable_mirroring(self.primary_fs_name, self.primary_fs_id)
+
+ def test_local_and_remote_dir_root_mode(self):
+ log.debug('reconfigure client auth caps')
+ cid = self.mount_b.client_id
+ data_pool = self.backup_fs.get_data_pool_name()
+ self.mds_cluster.mon_manager.raw_cluster_cmd_result(
+ 'auth', 'caps', f"client.{cid}",
+ 'mds', 'allow rw',
+ 'mon', 'allow r',
+ 'osd', f"allow rw pool={data_pool}, allow rw pool={data_pool}")
+
+ log.debug(f'mounting filesystem {self.secondary_fs_name}')
+ self.mount_b.umount_wait()
+ self.mount_b.mount_wait(cephfs_name=self.secondary_fs_name)
+
+ self.mount_a.run_shell(["mkdir", "l1"])
+ self.mount_a.run_shell(["mkdir", "l1/.snap/snap0"])
+ self.mount_a.run_shell(["chmod", "go-rwx", "l1"])
+
+ self.enable_mirroring(self.primary_fs_name, self.primary_fs_id)
+ self.add_directory(self.primary_fs_name, self.primary_fs_id, '/l1')
+ self.peer_add(self.primary_fs_name, self.primary_fs_id, "client.mirror_remote@ceph", self.secondary_fs_name)
+
+ time.sleep(60)
+ self.check_peer_status(self.primary_fs_name, self.primary_fs_id,
+ "client.mirror_remote@ceph", '/l1', 'snap0', 1)
+
+ mode_local = self.mount_a.run_shell(["stat", "--format=%A", "l1"]).stdout.getvalue().strip()
+ mode_remote = self.mount_b.run_shell(["stat", "--format=%A", "l1"]).stdout.getvalue().strip()
+
+ self.assertTrue(mode_local == mode_remote, f"mode mismatch, local mode: {mode_local}, remote mode: {mode_remote}")
+
+ self.disable_mirroring(self.primary_fs_name, self.primary_fs_id)
+ self.mount_a.run_shell(["rmdir", "l1/.snap/snap0"])
+ self.mount_a.run_shell(["rmdir", "l1"])