summaryrefslogtreecommitdiffstats
path: root/include/linux/acct.h
diff options
context:
space:
mode:
authorPavel Emelyanov2008-07-25 10:48:47 +0200
committerLinus Torvalds2008-07-25 19:53:47 +0200
commit0b6b030fc30d169bb406b34b4fc60d99dde4a9c6 (patch)
tree2bf5160ccfe22107937ddc03a1acd4fc9b1ccaf2 /include/linux/acct.h
parentbsdacct: make internal code work with passed bsd_acct_struct, not global (diff)
downloadkernel-qcow2-linux-0b6b030fc30d169bb406b34b4fc60d99dde4a9c6.tar.gz
kernel-qcow2-linux-0b6b030fc30d169bb406b34b4fc60d99dde4a9c6.tar.xz
kernel-qcow2-linux-0b6b030fc30d169bb406b34b4fc60d99dde4a9c6.zip
bsdacct: switch from global bsd_acct_struct instance to per-pidns one
Allocate the structure on the first call to sys_acct(). After this each namespace, that ordered the accounting, will live with this structure till its own death. Two notes - routines, that close the accounting on fs umount time use the init_pid_ns's acct by now; - accounting routine accounts to dying task's namespace (also by now). Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Cc: Balbir Singh <balbir@in.ibm.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/acct.h')
-rw-r--r--include/linux/acct.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/acct.h b/include/linux/acct.h
index e8cae54e8d88..882dc7248766 100644
--- a/include/linux/acct.h
+++ b/include/linux/acct.h
@@ -120,17 +120,20 @@ struct acct_v3
struct vfsmount;
struct super_block;
struct pacct_struct;
+struct pid_namespace;
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(long exitcode, int group_dead);
extern void acct_process(void);
+extern void acct_exit_ns(struct pid_namespace *);
#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(x,y) do { } while (0)
#define acct_process() do { } while (0)
+#define acct_exit_ns(ns) do { } while (0)
#endif
/*