10 leastRecentlyAccessedBlock(0),
11 leastRecentlyReleasedBlock(0) {
18 auto& hint = fcntl.
buffer.add<gpfsFreeRange_t>(GPFS_FREE_RANGE);
41 path,
"parallel read",
42 "blocks scattered to far, ", index,
" blocks difference");
51 "can't set gpfs attributes for", castHandle->path);
57 attrData->fill(*
this);
60 attrData->xattrs.remove_if([](
const decltype(attrData->xattrs)::value_type & item) {
61 return item.first.find(
"system.") == 0;
66 sizeof(attrData->buffer),
68 "can't get gpfs attributes for ",
path);
70 if (attrData->size > 0 && !attrData->xattrs.empty()) {
71 return std::unique_ptr<ioHandle::attrDataType>(attrData.release());
84 const std::string& aPath) {
86 acl->entries.reserve(gpfsAcl.
size());
93 "incompatible flag bit maps between gpfs and rich acl");
112 "incompatible mask bit maps between gpfs and rich acl");
115 "incompatible ace type bit maps between gpfs and rich acl");
122 for (
const auto gpfs_ace : gpfsAcl) {
123 acl->entries.emplace_back();
124 auto& rich_ace =
acl->entries.back();
132 rich_ace.setType(gpfs_ace.aceType & (ACE4_TYPE_ALLOW |
134 rich_ace.setFlags(gpfs_ace.aceFlags & (ACE4_FLAG_FILE_INHERIT |
135 ACE4_FLAG_DIR_INHERIT |
136 ACE4_FLAG_NO_PROPAGATE |
137 ACE4_FLAG_INHERIT_ONLY |
139 ACE4_FLAG_INHERITED));
140 rich_ace.setMask(gpfs_ace.aceMask);
141 if (gpfs_ace.aceIFlags & ACE4_IFLAG_SPECIAL_ID) {
142 switch (gpfs_ace.aceWho) {
143 case ACE4_SPECIAL_OWNER:
144 rich_ace.e_id = acl::list::entryType::specialIdType::owner_special_id;
146 case ACE4_SPECIAL_GROUP:
147 rich_ace.e_id = acl::list::entryType::specialIdType::group_special_id;
149 case ACE4_SPECIAL_EVERYONE:
150 rich_ace.e_id = acl::list::entryType::specialIdType::everyone_special_id;
153 throw std::runtime_error(
"unknon special acl id on " + aPath);
157 rich_ace.e_id = gpfs_ace.aceWho;