Finally rename entries to inodes

This commit is contained in:
Marcus Holland-Moritz 2021-03-17 18:05:23 +01:00
parent 95d4c36ab6
commit 2e94b1bce8
6 changed files with 30 additions and 31 deletions

View File

@ -259,7 +259,7 @@ void dir::pack_entry(thrift::metadata::metadata& mv2,
auto& de = mv2.dir_entries_ref()->emplace_back();
de.name_index = has_parent() ? data.get_name_index(name()) : 0;
de.inode_num = DWARFS_NOTHROW(inode_num().value());
entry::pack(DWARFS_NOTHROW(mv2.entries.at(de.inode_num)), data);
entry::pack(DWARFS_NOTHROW(mv2.inodes.at(de.inode_num)), data);
}
void dir::pack(thrift::metadata::metadata& mv2,
@ -281,7 +281,7 @@ void dir::pack(thrift::metadata::metadata& mv2,
auto& de = mv2.dir_entries_ref()->emplace_back();
de.name_index = data.get_name_index(e->name());
de.inode_num = DWARFS_NOTHROW(e->inode_num().value());
e->pack(DWARFS_NOTHROW(mv2.entries.at(de.inode_num)), data);
e->pack(DWARFS_NOTHROW(mv2.inodes.at(de.inode_num)), data);
}
}

View File

@ -50,7 +50,7 @@ std::string_view dir_entry_view::name() const {
inode_view dir_entry_view::inode() const {
return std::visit(overloaded{
[this](DirEntryView const& dev) {
return inode_view(meta_->entries()[dev.inode_num()],
return inode_view(meta_->inodes()[dev.inode_num()],
dev.inode_num(), meta_);
},
[this](InodeView const& iv) {
@ -87,11 +87,10 @@ dir_entry_view::from_dir_entry_index(uint32_t self_index, uint32_t parent_index,
return dir_entry_view(dev, self_index, parent_index, meta);
}
DWARFS_CHECK(self_index < meta->entries().size(), "self_index out of range");
DWARFS_CHECK(parent_index < meta->entries().size(),
"self_index out of range");
DWARFS_CHECK(self_index < meta->inodes().size(), "self_index out of range");
DWARFS_CHECK(parent_index < meta->inodes().size(), "self_index out of range");
auto iv = meta->entries()[self_index];
auto iv = meta->inodes()[self_index];
return dir_entry_view(iv, self_index, parent_index, meta);
}
@ -108,8 +107,8 @@ dir_entry_view::from_dir_entry_index(uint32_t self_index, Meta const* meta) {
meta);
}
DWARFS_CHECK(self_index < meta->entries().size(), "self_index out of range");
auto iv = meta->entries()[self_index];
DWARFS_CHECK(self_index < meta->inodes().size(), "self_index out of range");
auto iv = meta->inodes()[self_index];
DWARFS_CHECK(iv.inode_v2_2() < meta->directories().size(),
"parent_index out of range");
@ -135,8 +134,8 @@ std::string_view dir_entry_view::name(uint32_t index, Meta const* meta) {
return meta->names()[dev.name_index()];
}
DWARFS_CHECK(index < meta->entries().size(), "index out of range");
auto iv = meta->entries()[index];
DWARFS_CHECK(index < meta->inodes().size(), "index out of range");
auto iv = meta->inodes()[index];
return meta->names()[iv.name_index_v2_2()];
}
@ -144,11 +143,11 @@ inode_view dir_entry_view::inode(uint32_t index, Meta const* meta) {
if (auto de = meta->dir_entries()) {
DWARFS_CHECK(index < de->size(), "index out of range");
auto dev = (*de)[index];
return inode_view(meta->entries()[dev.inode_num()], dev.inode_num(), meta);
return inode_view(meta->inodes()[dev.inode_num()], dev.inode_num(), meta);
}
DWARFS_CHECK(index < meta->entries().size(), "index out of range");
auto iv = meta->entries()[index];
DWARFS_CHECK(index < meta->inodes().size(), "index out of range");
auto iv = meta->inodes()[index];
return inode_view(iv, iv.inode_v2_2(), meta);
}

View File

@ -121,7 +121,7 @@ class metadata_ final : public metadata_v2::impl {
, symlink_table_offset_(find_index_offset(inode_rank::INO_LNK))
, file_index_offset_(find_index_offset(inode_rank::INO_REG))
, dev_index_offset_(find_index_offset(inode_rank::INO_DEV))
, inode_count_(meta_.dir_entries() ? meta_.entries().size()
, inode_count_(meta_.dir_entries() ? meta_.inodes().size()
: meta_.entry_table_v2_2().size())
, nlinks_(build_nlinks(options))
, shared_files_(decompress_shared_files())
@ -242,7 +242,7 @@ class metadata_ final : public metadata_v2::impl {
// TODO: move compatibility details to metadata_types
uint32_t index =
meta_.dir_entries() ? inode : meta_.entry_table_v2_2()[inode];
return inode_view(meta_.entries()[index], inode, &meta_);
return inode_view(meta_.inodes()[index], inode, &meta_);
}
dir_entry_view
@ -251,7 +251,7 @@ class metadata_ final : public metadata_v2::impl {
&meta_);
}
// This represents the order in which inodes are stored in entries
// This represents the order in which inodes are stored in inodes
// (or entry_table_v2_2 for older file systems)
enum class inode_rank {
INO_DIR,
@ -305,11 +305,11 @@ class metadata_ final : public metadata_v2::impl {
size_t find_index_offset(inode_rank rank) const {
if (meta_.dir_entries()) {
auto range = boost::irange(size_t(0), meta_.entries().size());
auto range = boost::irange(size_t(0), meta_.inodes().size());
auto it = std::lower_bound(
range.begin(), range.end(), rank, [&](auto inode, inode_rank r) {
auto mode = meta_.modes()[meta_.entries()[inode].mode_index()];
auto mode = meta_.modes()[meta_.inodes()[inode].mode_index()];
return get_inode_rank(mode) < r;
});
@ -478,7 +478,7 @@ class metadata_ final : public metadata_v2::impl {
}
}
} else {
for (auto e : meta_.entries()) {
for (auto e : meta_.inodes()) {
int index = int(e.inode_v2_2()) - file_index_offset_;
if (index >= 0 && index < int(nlinks.size())) {
++nlinks[index];
@ -591,7 +591,7 @@ void metadata_<LoggerPolicy>::dump(
if (detail_level > 1) {
os << "chunks: " << meta_.chunks().size() << std::endl;
os << "directories: " << meta_.directories().size() << std::endl;
os << "entries: " << meta_.entries().size() << std::endl;
os << "inodes: " << meta_.inodes().size() << std::endl;
os << "chunk_table: " << meta_.chunk_table().size() << std::endl;
os << "entry_table_v2_2: " << meta_.entry_table_v2_2().size() << std::endl;
os << "symlink_table: " << meta_.symlink_table().size() << std::endl;
@ -665,7 +665,7 @@ folly::dynamic metadata_<LoggerPolicy>::as_dynamic(dir_entry_view entry) const {
obj["size"] = file_size(inode_data, mode);
} else if (S_ISDIR(mode)) {
obj["type"] = "directory";
obj["entries"] = as_dynamic(make_directory_view(inode_data), entry);
obj["inodes"] = as_dynamic(make_directory_view(inode_data), entry);
} else if (S_ISLNK(mode)) {
obj["type"] = "link";
obj["target"] = std::string(link_value(inode_data));
@ -808,8 +808,8 @@ void metadata_<LoggerPolicy>::walk_data_order_impl(
} else {
std::sort(entries.begin(), entries.end(),
[this](auto const& a, auto const& b) {
return meta_.entries()[a.first].inode_v2_2() <
meta_.entries()[b.first].inode_v2_2();
return meta_.inodes()[a.first].inode_v2_2() <
meta_.inodes()[b.first].inode_v2_2();
});
}

View File

@ -698,7 +698,7 @@ void scanner_<LoggerPolicy>::scan(filesystem_writer& fsw,
LOG_INFO << "saving directories...";
mv2.set_dir_entries(std::vector<thrift::metadata::dir_entry>());
mv2.entries.resize(last_inode);
mv2.inodes.resize(last_inode);
mv2.directories.reserve(first_link_inode + 1);
save_directories_visitor sdv(first_link_inode);
root->accept(sdv);

View File

@ -51,7 +51,7 @@ namespace {
char const* reference = R"(
{
"root": {
"entries": [
"inodes": [
{
"inode": 11,
"mode": 33188,
@ -61,7 +61,7 @@ char const* reference = R"(
"type": "file"
},
{
"entries": [],
"inodes": [],
"inode": 1,
"mode": 16877,
"modestring": "---drwxr-xr-x",
@ -69,9 +69,9 @@ char const* reference = R"(
"type": "directory"
},
{
"entries": [
"inodes": [
{
"entries": [],
"inodes": [],
"inode": 3,
"mode": 16877,
"modestring": "---drwxr-xr-x",
@ -86,7 +86,7 @@ char const* reference = R"(
"type": "directory"
},
{
"entries": [
"inodes": [
{
"inode": 5,
"mode": 41471,

View File

@ -143,7 +143,7 @@ struct metadata {
* directory through `first_entry`, where the entries will be between
* `directories[n].first_entry` and `directories[n+1].first_entry`.
*/
3: required list<inode_data> entries,
3: required list<inode_data> inodes,
/**
* Chunk lookup table, indexed by (inode - chunk_index_offset).