mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-08 11:59:48 -04:00
Finally rename entries to inodes
This commit is contained in:
parent
95d4c36ab6
commit
2e94b1bce8
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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).
|
||||
|
Loading…
x
Reference in New Issue
Block a user