libprocessgroup: fix reset of file_v2_name
ProfileAttribute::Reset does not reset file_v2_name, fix that. Also
provide ProfileAttribute::file_name() to consolidate the code.
Bug: 292636609
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I5b33ca47b4fa5cabf582c8804bd13f72f6e58411
Merged-In: I5b33ca47b4fa5cabf582c8804bd13f72f6e58411
(cherry picked from commit 2ffbeaef3a
)
This commit is contained in:
parent
be392fc693
commit
72254810d9
3 changed files with 21 additions and 16 deletions
|
@ -114,9 +114,16 @@ bool FdCacheHelper::IsAppDependentPath(const std::string& path) {
|
|||
|
||||
IProfileAttribute::~IProfileAttribute() = default;
|
||||
|
||||
void ProfileAttribute::Reset(const CgroupController& controller, const std::string& file_name) {
|
||||
const std::string& ProfileAttribute::file_name() const {
|
||||
if (controller()->version() == 2 && !file_v2_name_.empty()) return file_v2_name_;
|
||||
return file_name_;
|
||||
}
|
||||
|
||||
void ProfileAttribute::Reset(const CgroupController& controller, const std::string& file_name,
|
||||
const std::string& file_v2_name) {
|
||||
controller_ = controller;
|
||||
file_name_ = file_name;
|
||||
file_v2_name_ = file_v2_name;
|
||||
}
|
||||
|
||||
bool ProfileAttribute::GetPathForTask(int tid, std::string* path) const {
|
||||
|
@ -129,12 +136,11 @@ bool ProfileAttribute::GetPathForTask(int tid, std::string* path) const {
|
|||
return true;
|
||||
}
|
||||
|
||||
const std::string& file_name =
|
||||
controller()->version() == 2 && !file_v2_name_.empty() ? file_v2_name_ : file_name_;
|
||||
if (subgroup.empty()) {
|
||||
*path = StringPrintf("%s/%s", controller()->path(), file_name.c_str());
|
||||
*path = StringPrintf("%s/%s", controller()->path(), file_name().c_str());
|
||||
} else {
|
||||
*path = StringPrintf("%s/%s/%s", controller()->path(), subgroup.c_str(), file_name.c_str());
|
||||
*path = StringPrintf("%s/%s/%s", controller()->path(), subgroup.c_str(),
|
||||
file_name().c_str());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -144,9 +150,7 @@ bool ProfileAttribute::GetPathForUID(uid_t uid, std::string* path) const {
|
|||
return true;
|
||||
}
|
||||
|
||||
const std::string& file_name =
|
||||
controller()->version() == 2 && !file_v2_name_.empty() ? file_v2_name_ : file_name_;
|
||||
*path = StringPrintf("%s/uid_%d/%s", controller()->path(), uid, file_name.c_str());
|
||||
*path = StringPrintf("%s/uid_%u/%s", controller()->path(), uid, file_name().c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -816,7 +820,7 @@ bool TaskProfiles::Load(const CgroupMap& cg_map, const std::string& file_name) {
|
|||
attributes_[name] =
|
||||
std::make_unique<ProfileAttribute>(controller, file_attr, file_v2_attr);
|
||||
} else {
|
||||
iter->second->Reset(controller, file_attr);
|
||||
iter->second->Reset(controller, file_attr, file_v2_attr);
|
||||
}
|
||||
} else {
|
||||
LOG(WARNING) << "Controller " << controller_name << " is not found";
|
||||
|
|
|
@ -32,7 +32,8 @@
|
|||
class IProfileAttribute {
|
||||
public:
|
||||
virtual ~IProfileAttribute() = 0;
|
||||
virtual void Reset(const CgroupController& controller, const std::string& file_name) = 0;
|
||||
virtual void Reset(const CgroupController& controller, const std::string& file_name,
|
||||
const std::string& file_v2_name) = 0;
|
||||
virtual const CgroupController* controller() const = 0;
|
||||
virtual const std::string& file_name() const = 0;
|
||||
virtual bool GetPathForTask(int tid, std::string* path) const = 0;
|
||||
|
@ -50,8 +51,9 @@ class ProfileAttribute : public IProfileAttribute {
|
|||
~ProfileAttribute() = default;
|
||||
|
||||
const CgroupController* controller() const override { return &controller_; }
|
||||
const std::string& file_name() const override { return file_name_; }
|
||||
void Reset(const CgroupController& controller, const std::string& file_name) override;
|
||||
const std::string& file_name() const override;
|
||||
void Reset(const CgroupController& controller, const std::string& file_name,
|
||||
const std::string& file_v2_name) override;
|
||||
|
||||
bool GetPathForTask(int tid, std::string* path) const override;
|
||||
bool GetPathForUID(uid_t uid, std::string* path) const override;
|
||||
|
|
|
@ -102,7 +102,8 @@ class ProfileAttributeMock : public IProfileAttribute {
|
|||
public:
|
||||
ProfileAttributeMock(const std::string& file_name) : file_name_(file_name) {}
|
||||
~ProfileAttributeMock() override = default;
|
||||
void Reset(const CgroupController& controller, const std::string& file_name) override {
|
||||
void Reset(const CgroupController& controller, const std::string& file_name,
|
||||
const std::string& file_v2_name) override {
|
||||
CHECK(false);
|
||||
}
|
||||
const CgroupController* controller() const override {
|
||||
|
@ -125,9 +126,7 @@ class ProfileAttributeMock : public IProfileAttribute {
|
|||
return true;
|
||||
};
|
||||
|
||||
bool GetPathForUID(uid_t, std::string*) const override {
|
||||
return false;
|
||||
}
|
||||
bool GetPathForUID(uid_t, std::string*) const override { return false; }
|
||||
|
||||
private:
|
||||
const std::string file_name_;
|
||||
|
|
Loading…
Reference in a new issue