Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fs: Improve eventpoll logging to stop indicting timerfd #1891

Merged
merged 1 commit into from Jan 24, 2019

Conversation

ix5
Copy link

@ix5 ix5 commented Jan 24, 2019

cherry-picked from https://review.lineageos.org/c/LineageOS/android_kernel_xiaomi_jason/+/236442

timerfd doesn't create any wakelocks; eventpoll can, and is creating the wakelocks we see called "[timerfd]". eventpoll creates two kinds of wakelocks: a single top-level lock associated with the eventpoll fd itself, and one additional lock for each fd it is polling that needs such a lock (e.g. those using EPOLLWAKEUP).
Current code names the per-fd locks using the undecorated names of the fds' associated files (hence "[timerfd]"), and is naming the top-level lock after the PID of the caller and the name of the file behind the first fd for which a per-fd lock is created.
To make things clearer, the top-level lock is now named using the caller PID and an "epollfd" designation, while the per-fd locks are also named with the caller's PID (to associate them with the top-level lock) and their respective fds' file names.

@kholk
Copy link
Contributor

@kholk kholk commented Jan 24, 2019

Harmless and makes debugging life easier.

MERGE

@ix5
Copy link
Author

@ix5 ix5 commented Jan 24, 2019

NOOOO
I haven't even compiled this yet!

fs/timerfd.c Outdated
@@ -387,6 +389,10 @@ SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
{
int ufd;
struct timerfd_ctx *ctx;
enum alarmtimer_type type;
Copy link
Contributor

@kholk kholk Jan 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type: unused variable

@kholk
Copy link
Contributor

@kholk kholk commented Jan 24, 2019

There's only an unused variable issue to solve, then it's fine.

timerfd doesn't create any wakelocks; eventpoll can, and is creating the
wakelocks we see called "[timerfd]".  eventpoll creates two kinds of
wakelocks: a single top-level lock associated with the eventpoll fd
itself, and one additional lock for each fd it is polling that needs such
a lock (e.g. those using EPOLLWAKEUP).  Current code names the per-fd
locks using the undecorated names of the fds' associated files (hence
"[timerfd]"), and is naming the top-level lock after the PID of the caller
and the name of the file behind the first fd for which a per-fd lock is
created.  To make things clearer, the top-level lock is now named using
the caller PID and an "epollfd" designation, while the per-fd locks are
also named with the caller's PID (to associate them with the top-level
lock) and their respective fds' file names.

Bug: 63622255
Bug: 38042165
Test: Ran on device and observed new wakelock naming in bugreport, dumpsys
batterystats, /d/tracing/trace, and d/wakeup_reasons.
Change-Id: I32bfe5fe6766bb569329a450cc7163d52d59ed34
Signed-off-by: Kelly Rossmoyer <krossmo@google.com>
Signed-off-by: ix5 <ix5@users.noreply.github.com>
@ix5
Copy link
Author

@ix5 ix5 commented Jan 24, 2019

Fixed unused var, compiled, booted, works.

@ix5 ix5 changed the title [DONOTMERGE] fs: Improve eventpoll logging to stop indicting timerfd fs: Improve eventpoll logging to stop indicting timerfd Jan 24, 2019
@kholk
Copy link
Contributor

@kholk kholk commented Jan 24, 2019

Now there's no excuse for not merging it :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants