Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: pstore: cleanups to pstore_dump() [IA64] New syscalls for 2.6.39
This commit is contained in:
Коммит
6d1e9a42e7
|
@ -315,11 +315,15 @@
|
||||||
#define __NR_fanotify_init 1323
|
#define __NR_fanotify_init 1323
|
||||||
#define __NR_fanotify_mark 1324
|
#define __NR_fanotify_mark 1324
|
||||||
#define __NR_prlimit64 1325
|
#define __NR_prlimit64 1325
|
||||||
|
#define __NR_name_to_handle_at 1326
|
||||||
|
#define __NR_open_by_handle_at 1327
|
||||||
|
#define __NR_clock_adjtime 1328
|
||||||
|
#define __NR_syncfs 1329
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
|
|
||||||
#define NR_syscalls 302 /* length of syscall table */
|
#define NR_syscalls 306 /* length of syscall table */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following defines stop scripts/checksyscalls.sh from complaining about
|
* The following defines stop scripts/checksyscalls.sh from complaining about
|
||||||
|
|
|
@ -1771,6 +1771,10 @@ sys_call_table:
|
||||||
data8 sys_fanotify_init
|
data8 sys_fanotify_init
|
||||||
data8 sys_fanotify_mark
|
data8 sys_fanotify_mark
|
||||||
data8 sys_prlimit64 // 1325
|
data8 sys_prlimit64 // 1325
|
||||||
|
data8 sys_name_to_handle_at
|
||||||
|
data8 sys_open_by_handle_at
|
||||||
|
data8 sys_clock_adjtime
|
||||||
|
data8 sys_syncfs
|
||||||
|
|
||||||
.org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
|
.org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
|
||||||
#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
|
#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
|
||||||
|
|
|
@ -48,6 +48,10 @@ void pstore_set_kmsg_bytes(int bytes)
|
||||||
/* Tag each group of saved records with a sequence number */
|
/* Tag each group of saved records with a sequence number */
|
||||||
static int oopscount;
|
static int oopscount;
|
||||||
|
|
||||||
|
static char *reason_str[] = {
|
||||||
|
"Oops", "Panic", "Kexec", "Restart", "Halt", "Poweroff", "Emergency"
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* callback from kmsg_dump. (s2,l2) has the most recently
|
* callback from kmsg_dump. (s2,l2) has the most recently
|
||||||
* written bytes, older bytes are in (s1,l1). Save as much
|
* written bytes, older bytes are in (s1,l1). Save as much
|
||||||
|
@ -61,15 +65,20 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
||||||
unsigned long s1_start, s2_start;
|
unsigned long s1_start, s2_start;
|
||||||
unsigned long l1_cpy, l2_cpy;
|
unsigned long l1_cpy, l2_cpy;
|
||||||
unsigned long size, total = 0;
|
unsigned long size, total = 0;
|
||||||
char *dst;
|
char *dst, *why;
|
||||||
u64 id;
|
u64 id;
|
||||||
int hsize, part = 1;
|
int hsize, part = 1;
|
||||||
|
|
||||||
|
if (reason < ARRAY_SIZE(reason_str))
|
||||||
|
why = reason_str[reason];
|
||||||
|
else
|
||||||
|
why = "Unknown";
|
||||||
|
|
||||||
mutex_lock(&psinfo->buf_mutex);
|
mutex_lock(&psinfo->buf_mutex);
|
||||||
oopscount++;
|
oopscount++;
|
||||||
while (total < kmsg_bytes) {
|
while (total < kmsg_bytes) {
|
||||||
dst = psinfo->buf;
|
dst = psinfo->buf;
|
||||||
hsize = sprintf(dst, "Oops#%d Part%d\n", oopscount, part++);
|
hsize = sprintf(dst, "%s#%d Part%d\n", why, oopscount, part++);
|
||||||
size = psinfo->bufsize - hsize;
|
size = psinfo->bufsize - hsize;
|
||||||
dst += hsize;
|
dst += hsize;
|
||||||
|
|
||||||
|
@ -86,7 +95,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
|
||||||
memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy);
|
memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy);
|
||||||
|
|
||||||
id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy);
|
id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy);
|
||||||
if (pstore_is_mounted())
|
if (reason == KMSG_DUMP_OOPS && pstore_is_mounted())
|
||||||
pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id,
|
pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id,
|
||||||
psinfo->buf, hsize + l1_cpy + l2_cpy,
|
psinfo->buf, hsize + l1_cpy + l2_cpy,
|
||||||
CURRENT_TIME, psinfo->erase);
|
CURRENT_TIME, psinfo->erase);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче