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

+21 -4
+5 -1
arch/ia64/include/asm/unistd.h
··· 315 #define __NR_fanotify_init 1323 316 #define __NR_fanotify_mark 1324 317 #define __NR_prlimit64 1325 318 319 #ifdef __KERNEL__ 320 321 322 - #define NR_syscalls 302 /* length of syscall table */ 323 324 /* 325 * The following defines stop scripts/checksyscalls.sh from complaining about
··· 315 #define __NR_fanotify_init 1323 316 #define __NR_fanotify_mark 1324 317 #define __NR_prlimit64 1325 318 + #define __NR_name_to_handle_at 1326 319 + #define __NR_open_by_handle_at 1327 320 + #define __NR_clock_adjtime 1328 321 + #define __NR_syncfs 1329 322 323 #ifdef __KERNEL__ 324 325 326 + #define NR_syscalls 306 /* length of syscall table */ 327 328 /* 329 * The following defines stop scripts/checksyscalls.sh from complaining about
+4
arch/ia64/kernel/entry.S
··· 1771 data8 sys_fanotify_init 1772 data8 sys_fanotify_mark 1773 data8 sys_prlimit64 // 1325 1774 1775 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls 1776 #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
··· 1771 data8 sys_fanotify_init 1772 data8 sys_fanotify_mark 1773 data8 sys_prlimit64 // 1325 1774 + data8 sys_name_to_handle_at 1775 + data8 sys_open_by_handle_at 1776 + data8 sys_clock_adjtime 1777 + data8 sys_syncfs 1778 1779 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls 1780 #endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
+12 -3
fs/pstore/platform.c
··· 48 /* Tag each group of saved records with a sequence number */ 49 static int oopscount; 50 51 /* 52 * callback from kmsg_dump. (s2,l2) has the most recently 53 * written bytes, older bytes are in (s1,l1). Save as much ··· 65 unsigned long s1_start, s2_start; 66 unsigned long l1_cpy, l2_cpy; 67 unsigned long size, total = 0; 68 - char *dst; 69 u64 id; 70 int hsize, part = 1; 71 72 mutex_lock(&psinfo->buf_mutex); 73 oopscount++; 74 while (total < kmsg_bytes) { 75 dst = psinfo->buf; 76 - hsize = sprintf(dst, "Oops#%d Part%d\n", oopscount, part++); 77 size = psinfo->bufsize - hsize; 78 dst += hsize; 79 ··· 95 memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); 96 97 id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy); 98 - if (pstore_is_mounted()) 99 pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id, 100 psinfo->buf, hsize + l1_cpy + l2_cpy, 101 CURRENT_TIME, psinfo->erase);
··· 48 /* Tag each group of saved records with a sequence number */ 49 static int oopscount; 50 51 + static char *reason_str[] = { 52 + "Oops", "Panic", "Kexec", "Restart", "Halt", "Poweroff", "Emergency" 53 + }; 54 + 55 /* 56 * callback from kmsg_dump. (s2,l2) has the most recently 57 * written bytes, older bytes are in (s1,l1). Save as much ··· 61 unsigned long s1_start, s2_start; 62 unsigned long l1_cpy, l2_cpy; 63 unsigned long size, total = 0; 64 + char *dst, *why; 65 u64 id; 66 int hsize, part = 1; 67 + 68 + if (reason < ARRAY_SIZE(reason_str)) 69 + why = reason_str[reason]; 70 + else 71 + why = "Unknown"; 72 73 mutex_lock(&psinfo->buf_mutex); 74 oopscount++; 75 while (total < kmsg_bytes) { 76 dst = psinfo->buf; 77 + hsize = sprintf(dst, "%s#%d Part%d\n", why, oopscount, part++); 78 size = psinfo->bufsize - hsize; 79 dst += hsize; 80 ··· 86 memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy); 87 88 id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy); 89 + if (reason == KMSG_DUMP_OOPS && pstore_is_mounted()) 90 pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id, 91 psinfo->buf, hsize + l1_cpy + l2_cpy, 92 CURRENT_TIME, psinfo->erase);