[PATCH] pacct: add pacct_struct to fix some pacct bugs.
The pacct facility need an i/o operation when an accounting record is generated. There is a possibility to wake OOM killer up. If OOM killer is activated, it kills some processes to make them release process memory regions. But acct_process() is called in the killed processes context before calling exit_mm(), so those processes cannot release own memory. In the results, any processes stop in this point and it finally cause a system stall.
This commit is contained in:

committed by
Linus Torvalds

parent
6bc392741d
commit
0e4648141a
@@ -121,12 +121,16 @@ struct vfsmount;
|
||||
struct super_block;
|
||||
extern void acct_auto_close_mnt(struct vfsmount *m);
|
||||
extern void acct_auto_close(struct super_block *sb);
|
||||
extern void acct_init_pacct(struct pacct_struct *pacct);
|
||||
extern void acct_collect();
|
||||
extern void acct_process(long exitcode);
|
||||
extern void acct_update_integrals(struct task_struct *tsk);
|
||||
extern void acct_clear_integrals(struct task_struct *tsk);
|
||||
#else
|
||||
#define acct_auto_close_mnt(x) do { } while (0)
|
||||
#define acct_auto_close(x) do { } while (0)
|
||||
#define acct_init_pacct(x) do { } while (0)
|
||||
#define acct_collect() do { } while (0)
|
||||
#define acct_process(x) do { } while (0)
|
||||
#define acct_update_integrals(x) do { } while (0)
|
||||
#define acct_clear_integrals(task) do { } while (0)
|
||||
|
Reference in New Issue
Block a user