mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-10 04:50:31 -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();
|
auto& de = mv2.dir_entries_ref()->emplace_back();
|
||||||
de.name_index = has_parent() ? data.get_name_index(name()) : 0;
|
de.name_index = has_parent() ? data.get_name_index(name()) : 0;
|
||||||
de.inode_num = DWARFS_NOTHROW(inode_num().value());
|
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,
|
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();
|
auto& de = mv2.dir_entries_ref()->emplace_back();
|
||||||
de.name_index = data.get_name_index(e->name());
|
de.name_index = data.get_name_index(e->name());
|
||||||
de.inode_num = DWARFS_NOTHROW(e->inode_num().value());
|
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 {
|
inode_view dir_entry_view::inode() const {
|
||||||
return std::visit(overloaded{
|
return std::visit(overloaded{
|
||||||
[this](DirEntryView const& dev) {
|
[this](DirEntryView const& dev) {
|
||||||
return inode_view(meta_->entries()[dev.inode_num()],
|
return inode_view(meta_->inodes()[dev.inode_num()],
|
||||||
dev.inode_num(), meta_);
|
dev.inode_num(), meta_);
|
||||||
},
|
},
|
||||||
[this](InodeView const& iv) {
|
[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);
|
return dir_entry_view(dev, self_index, parent_index, meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
DWARFS_CHECK(self_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->entries().size(),
|
DWARFS_CHECK(parent_index < meta->inodes().size(), "self_index out of range");
|
||||||
"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);
|
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);
|
meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
DWARFS_CHECK(self_index < meta->entries().size(), "self_index out of range");
|
DWARFS_CHECK(self_index < meta->inodes().size(), "self_index out of range");
|
||||||
auto iv = meta->entries()[self_index];
|
auto iv = meta->inodes()[self_index];
|
||||||
|
|
||||||
DWARFS_CHECK(iv.inode_v2_2() < meta->directories().size(),
|
DWARFS_CHECK(iv.inode_v2_2() < meta->directories().size(),
|
||||||
"parent_index out of range");
|
"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()];
|
return meta->names()[dev.name_index()];
|
||||||
}
|
}
|
||||||
|
|
||||||
DWARFS_CHECK(index < meta->entries().size(), "index out of range");
|
DWARFS_CHECK(index < meta->inodes().size(), "index out of range");
|
||||||
auto iv = meta->entries()[index];
|
auto iv = meta->inodes()[index];
|
||||||
return meta->names()[iv.name_index_v2_2()];
|
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()) {
|
if (auto de = meta->dir_entries()) {
|
||||||
DWARFS_CHECK(index < de->size(), "index out of range");
|
DWARFS_CHECK(index < de->size(), "index out of range");
|
||||||
auto dev = (*de)[index];
|
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");
|
DWARFS_CHECK(index < meta->inodes().size(), "index out of range");
|
||||||
auto iv = meta->entries()[index];
|
auto iv = meta->inodes()[index];
|
||||||
return inode_view(iv, iv.inode_v2_2(), meta);
|
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))
|
, symlink_table_offset_(find_index_offset(inode_rank::INO_LNK))
|
||||||
, file_index_offset_(find_index_offset(inode_rank::INO_REG))
|
, file_index_offset_(find_index_offset(inode_rank::INO_REG))
|
||||||
, dev_index_offset_(find_index_offset(inode_rank::INO_DEV))
|
, 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())
|
: meta_.entry_table_v2_2().size())
|
||||||
, nlinks_(build_nlinks(options))
|
, nlinks_(build_nlinks(options))
|
||||||
, shared_files_(decompress_shared_files())
|
, shared_files_(decompress_shared_files())
|
||||||
@ -242,7 +242,7 @@ class metadata_ final : public metadata_v2::impl {
|
|||||||
// TODO: move compatibility details to metadata_types
|
// TODO: move compatibility details to metadata_types
|
||||||
uint32_t index =
|
uint32_t index =
|
||||||
meta_.dir_entries() ? inode : meta_.entry_table_v2_2()[inode];
|
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
|
dir_entry_view
|
||||||
@ -251,7 +251,7 @@ class metadata_ final : public metadata_v2::impl {
|
|||||||
&meta_);
|
&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)
|
// (or entry_table_v2_2 for older file systems)
|
||||||
enum class inode_rank {
|
enum class inode_rank {
|
||||||
INO_DIR,
|
INO_DIR,
|
||||||
@ -305,11 +305,11 @@ class metadata_ final : public metadata_v2::impl {
|
|||||||
|
|
||||||
size_t find_index_offset(inode_rank rank) const {
|
size_t find_index_offset(inode_rank rank) const {
|
||||||
if (meta_.dir_entries()) {
|
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(
|
auto it = std::lower_bound(
|
||||||
range.begin(), range.end(), rank, [&](auto inode, inode_rank r) {
|
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;
|
return get_inode_rank(mode) < r;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -478,7 +478,7 @@ class metadata_ final : public metadata_v2::impl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (auto e : meta_.entries()) {
|
for (auto e : meta_.inodes()) {
|
||||||
int index = int(e.inode_v2_2()) - file_index_offset_;
|
int index = int(e.inode_v2_2()) - file_index_offset_;
|
||||||
if (index >= 0 && index < int(nlinks.size())) {
|
if (index >= 0 && index < int(nlinks.size())) {
|
||||||
++nlinks[index];
|
++nlinks[index];
|
||||||
@ -591,7 +591,7 @@ void metadata_<LoggerPolicy>::dump(
|
|||||||
if (detail_level > 1) {
|
if (detail_level > 1) {
|
||||||
os << "chunks: " << meta_.chunks().size() << std::endl;
|
os << "chunks: " << meta_.chunks().size() << std::endl;
|
||||||
os << "directories: " << meta_.directories().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 << "chunk_table: " << meta_.chunk_table().size() << std::endl;
|
||||||
os << "entry_table_v2_2: " << meta_.entry_table_v2_2().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;
|
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);
|
obj["size"] = file_size(inode_data, mode);
|
||||||
} else if (S_ISDIR(mode)) {
|
} else if (S_ISDIR(mode)) {
|
||||||
obj["type"] = "directory";
|
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)) {
|
} else if (S_ISLNK(mode)) {
|
||||||
obj["type"] = "link";
|
obj["type"] = "link";
|
||||||
obj["target"] = std::string(link_value(inode_data));
|
obj["target"] = std::string(link_value(inode_data));
|
||||||
@ -808,8 +808,8 @@ void metadata_<LoggerPolicy>::walk_data_order_impl(
|
|||||||
} else {
|
} else {
|
||||||
std::sort(entries.begin(), entries.end(),
|
std::sort(entries.begin(), entries.end(),
|
||||||
[this](auto const& a, auto const& b) {
|
[this](auto const& a, auto const& b) {
|
||||||
return meta_.entries()[a.first].inode_v2_2() <
|
return meta_.inodes()[a.first].inode_v2_2() <
|
||||||
meta_.entries()[b.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...";
|
LOG_INFO << "saving directories...";
|
||||||
mv2.set_dir_entries(std::vector<thrift::metadata::dir_entry>());
|
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);
|
mv2.directories.reserve(first_link_inode + 1);
|
||||||
save_directories_visitor sdv(first_link_inode);
|
save_directories_visitor sdv(first_link_inode);
|
||||||
root->accept(sdv);
|
root->accept(sdv);
|
||||||
|
@ -51,7 +51,7 @@ namespace {
|
|||||||
char const* reference = R"(
|
char const* reference = R"(
|
||||||
{
|
{
|
||||||
"root": {
|
"root": {
|
||||||
"entries": [
|
"inodes": [
|
||||||
{
|
{
|
||||||
"inode": 11,
|
"inode": 11,
|
||||||
"mode": 33188,
|
"mode": 33188,
|
||||||
@ -61,7 +61,7 @@ char const* reference = R"(
|
|||||||
"type": "file"
|
"type": "file"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entries": [],
|
"inodes": [],
|
||||||
"inode": 1,
|
"inode": 1,
|
||||||
"mode": 16877,
|
"mode": 16877,
|
||||||
"modestring": "---drwxr-xr-x",
|
"modestring": "---drwxr-xr-x",
|
||||||
@ -69,9 +69,9 @@ char const* reference = R"(
|
|||||||
"type": "directory"
|
"type": "directory"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entries": [
|
"inodes": [
|
||||||
{
|
{
|
||||||
"entries": [],
|
"inodes": [],
|
||||||
"inode": 3,
|
"inode": 3,
|
||||||
"mode": 16877,
|
"mode": 16877,
|
||||||
"modestring": "---drwxr-xr-x",
|
"modestring": "---drwxr-xr-x",
|
||||||
@ -86,7 +86,7 @@ char const* reference = R"(
|
|||||||
"type": "directory"
|
"type": "directory"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entries": [
|
"inodes": [
|
||||||
{
|
{
|
||||||
"inode": 5,
|
"inode": 5,
|
||||||
"mode": 41471,
|
"mode": 41471,
|
||||||
|
@ -143,7 +143,7 @@ struct metadata {
|
|||||||
* directory through `first_entry`, where the entries will be between
|
* directory through `first_entry`, where the entries will be between
|
||||||
* `directories[n].first_entry` and `directories[n+1].first_entry`.
|
* `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).
|
* Chunk lookup table, indexed by (inode - chunk_index_offset).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user