From: John Spray Date: Tue, 28 Jul 2015 11:43:33 +0000 (+0100) Subject: tools/cephfs: respect mds_root_ino_[gid|uid] X-Git-Tag: v9.1.0~456^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=34cb85e784193b1a611e6fdabfbf305d593f8568;p=ceph.git tools/cephfs: respect mds_root_ino_[gid|uid] ...while injecting inodes. So that if you're a cephfs admin but not uid=0 on the client, you can get things injected as your choice of uid/gid. Definitely useful for dev/test, potentially useful elsewhere too. Signed-off-by: John Spray --- diff --git a/src/tools/cephfs/DataScan.cc b/src/tools/cephfs/DataScan.cc index 8e6bc68ffb96..c6fc64dfbcc9 100644 --- a/src/tools/cephfs/DataScan.cc +++ b/src/tools/cephfs/DataScan.cc @@ -245,6 +245,8 @@ int MetadataDriver::inject_unlinked_inode( inode.inode.nlink = 1; inode.inode.truncate_size = -1ull; inode.inode.truncate_seq = 1; + inode.inode.uid = g_conf->mds_root_ino_uid; + inode.inode.gid = g_conf->mds_root_ino_gid; // Force layout to default: should we let users override this so that // they don't have to mount the filesystem to correct it? @@ -676,6 +678,8 @@ int MetadataDriver::inject_lost_and_found(inodeno_t ino, uint64_t file_size, lf_ino.inode.ino = CEPH_INO_LOST_AND_FOUND; lf_ino.inode.version = 1; lf_ino.inode.backtrace_version = 1; + lf_ino.inode.uid = g_conf->mds_root_ino_uid; + lf_ino.inode.gid = g_conf->mds_root_ino_gid; r = inject_linkage(CEPH_INO_ROOT, "lost+found", frag_t(), lf_ino); if (r < 0) { return r; @@ -716,6 +720,8 @@ int MetadataDriver::inject_lost_and_found(inodeno_t ino, uint64_t file_size, recovered_ino.inode.ino = ino; recovered_ino.inode.version = 1; recovered_ino.inode.backtrace_version = 1; + recovered_ino.inode.uid = g_conf->mds_root_ino_uid; + recovered_ino.inode.gid = g_conf->mds_root_ino_gid; const std::string dname = lost_found_dname(ino); @@ -987,6 +993,8 @@ int MetadataDriver::inject_with_backtrace( } dentry.inode.nlink = 1; dentry.inode.ino = ino; + dentry.inode.uid = g_conf->mds_root_ino_uid; + dentry.inode.gid = g_conf->mds_root_ino_gid; dentry.inode.version = 1; dentry.inode.backtrace_version = 1; r = inject_linkage(parent_ino, dname, fragment, dentry);