From 7d6d542885bd29b71214f9ca52bd26e9183c5d01 Mon Sep 17 00:00:00 2001 From: John Spray Date: Wed, 29 Mar 2017 19:38:37 +0100 Subject: [PATCH] tools/cephfs: set dir_layout when injecting inodes When we left this as zero, the MDS would interpret it was HASH_LINUX rather than the default HASH_RJENKINS. Potentially that could cause problems if there perhaps were already dirfrags in the metadata pool that were set up using rjenkins. Mainly it just seems more appropriate to explicitly set this field rather than hit the fallback behaviour. Related: http://tracker.ceph.com/issues/19406 Signed-off-by: John Spray --- src/tools/cephfs/DataScan.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tools/cephfs/DataScan.cc b/src/tools/cephfs/DataScan.cc index 29214d32c80..f788ecb4dd9 100644 --- a/src/tools/cephfs/DataScan.cc +++ b/src/tools/cephfs/DataScan.cc @@ -358,6 +358,7 @@ int MetadataDriver::inject_unlinked_inode( // they don't have to mount the filesystem to correct it? inode.inode.layout = file_layout_t::get_default(); inode.inode.layout.pool_id = data_pool_id; + inode.inode.dir_layout.dl_dir_hash = g_conf->mds_default_dir_hash; // Assume that we will get our stats wrong, and that we may // be ignoring dirfrags that exist @@ -1636,6 +1637,8 @@ int MetadataDriver::inject_with_backtrace( // accurate, but it should avoid functional issues. ancestor_dentry.inode.dirstat.nfiles = 1; + ancestor_dentry.inode.dir_layout.dl_dir_hash = + g_conf->mds_default_dir_hash; ancestor_dentry.inode.nlink = 1; ancestor_dentry.inode.ino = ino; @@ -1982,6 +1985,7 @@ void MetadataTool::build_dir_dentry( out->inode.ctime.tv.tv_sec = fragstat.mtime; out->inode.layout = layout; + out->inode.dir_layout.dl_dir_hash = g_conf->mds_default_dir_hash; out->inode.truncate_seq = 1; out->inode.truncate_size = -1ull;