[PATCH] Fix for "help -r/-D" to display register values and notes[]
by Lianbo Jiang
Currently, when executing the "help -r" command on the aarch64
architecture, only the register values of crashing cpu are displayed,
but the register values of other cpus are not shown with the following
messages:
crash> help -r
CPU 0:
help: registers not collected for cpu 0
CPU 1:
X0: 4000000000000000 X1: ffffc8c40d453d30 X2: ffff37436ecd0000
X3: ffffc8c40d475340 X4: 00000000000968a4 X5: 4000000000000000
X6: 4000000000000000 X7: 7fffffffffffffff X8: 0000016f2a240000
X9: ffffc8c40b0c64fc X10: 0000000000001000 X11: 00000000000000c0
X12: 0000000000000000 X13: 0000000000000072 X14: 0000000000000072
X15: 0000aaab0f98a320 X16: 0000000000000000 X17: 0000000000000000
X18: 0000000000000000 X19: 0000000000000000 X20: 0000000000000000
X21: ffffc8c40d475340 X22: ffffc8c40d460b80 X23: 00000000000000c0
X24: 00000007bf68b1b0 X25: 00000007b9284000 X26: 00000007bf68b1a8
X27: 00000007bbc95a40 X28: 00000007bbc6805a X29: ffffc8c40d453d80
LR: ffffc8c40bebd5d8 SP: ffffc8c40d453d80 PC: ffffc8c40bebd5e8
PSTATE: 60400005 FPVALID: 00000000
CPU 2:
help: registers not collected for cpu 2
CPU 3:
help: registers not collected for cpu 3
crash> help -D
...
num_prstatus_notes: 4
notes[0]: 0
notes[1]: dafa380 (NT_PRSTATUS)
si.signo: 0 si.code: 0 si.errno: 0
cursig: 0 sigpend: 0 sighold: 0
pid: 0 ppid: 0 pgrp: 0 sid:0
utime: 0.000000 stime: 0.000000
cutime: 0.000000 cstime: 0.000000
X0: 4000000000000000 X1: ffffc8c40d453d30 X2: ffff37436ecd0000
X3: ffffc8c40d475340 X4: 00000000000968a4 X5: 4000000000000000
X6: 4000000000000000 X7: 7fffffffffffffff X8: 0000016f2a240000
X9: ffffc8c40b0c64fc X10: 0000000000001000 X11: 00000000000000c0
X12: 0000000000000000 X13: 0000000000000072 X14: 0000000000000072
X15: 0000aaab0f98a320 X16: 0000000000000000 X17: 0000000000000000
X18: 0000000000000000 X19: 0000000000000000 X20: 0000000000000000
X21: ffffc8c40d475340 X22: ffffc8c40d460b80 X23: 00000000000000c0
X24: 00000007bf68b1b0 X25: 00000007b9284000 X26: 00000007bf68b1a8
X27: 00000007bbc95a40 X28: 00000007bbc6805a X29: ffffc8c40d453d80
LR: ffffc8c40bebd5d8 SP: ffffc8c40d453d80 PC: ffffc8c40bebd5e8
PSTATE: 60400005 FPVALID: 00000000
notes[2]: 0
notes[3]: 0
...
To fix the current issue, let's map to present cpus instead of online
cpus.
Signed-off-by: Lianbo Jiang <lijiang(a)redhat.com>
---
diskdump.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/diskdump.c b/diskdump.c
index 0ff87822732a..6c81c52e58b6 100644
--- a/diskdump.c
+++ b/diskdump.c
@@ -181,12 +181,12 @@ map_cpus_to_prstatus_kdump_cmprs(void)
BZERO(dd->nt_prstatus_percpu, size);
/*
- * Re-populate the array with the notes mapping to online cpus
+ * Re-populate the array with the notes mapping to present cpus
*/
nrcpus = (kt->kernel_NR_CPUS ? kt->kernel_NR_CPUS : NR_CPUS);
for (i = 0, j = 0; i < nrcpus; i++) {
- if (in_cpu_map(ONLINE_MAP, i) && machdep->is_cpu_prstatus_valid(i)) {
+ if (in_cpu_map(PRESENT_MAP, i) && machdep->is_cpu_prstatus_valid(i)) {
dd->nt_prstatus_percpu[i] = nt_ptr[j++];
dd->num_prstatus_notes =
MAX(dd->num_prstatus_notes, i+1);
--
2.51.1
1 day, 11 hours
[PATCH v2] memory: Handle crash failure in linux-next caused by struct kmem_cache changes
by Mikhail Zaslonko
Since kernel commit cf338283652f ("slab: remove struct kmem_cache_cpu")
in linux-next there is no more 'cpu_slab' member in struct kmem_cache.
Pick 'cpu_sheaves' as an alternative kmem_cache member for kernel-next to
identify the SLUB case.
Without the patch, crash fails to start on kernel-next with the error
message:
crash: invalid structure member offset: kmem_cache_s_num
FILE: memory.c LINE: 9988 FUNCTION: kmem_cache_init()
This fix:
- allows the crash to start with no errors for kernel-next.
- make the 'kmap -s' command working again for kernel-next.
- throws an error message on 'kmem -S' command if no 'cpu_slab' member
presents in struct kmem_cache:
kmem: -S not supported for this kernel
Signed-off-by: Mikhail Zaslonko <zaslonko(a)linux.ibm.com>
---
memory.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/memory.c b/memory.c
index cbc8d2f..17423a5 100644
--- a/memory.c
+++ b/memory.c
@@ -672,6 +672,7 @@ vm_init(void)
} else if (!VALID_STRUCT(kmem_slab_s) &&
!VALID_STRUCT(slab_s) &&
!MEMBER_EXISTS("kmem_cache", "cpu_slab") &&
+ !MEMBER_EXISTS("kmem_cache", "cpu_sheaves") &&
(VALID_STRUCT(slab) || (vt->flags & SLAB_OVERLOAD_PAGE))) {
vt->flags |= PERCPU_KMALLOC_V2;
@@ -816,7 +817,7 @@ vm_init(void)
if (INVALID_MEMBER(page_first_page))
ANON_MEMBER_OFFSET_INIT(page_first_page, "page", "first_page");
- } else if (MEMBER_EXISTS("kmem_cache", "cpu_slab") &&
+ } else if ((MEMBER_EXISTS("kmem_cache", "cpu_slab") || MEMBER_EXISTS("kmem_cache", "cpu_sheaves")) &&
STRUCT_EXISTS("kmem_cache_node")) {
vt->flags |= KMALLOC_SLUB;
@@ -5270,6 +5271,9 @@ cmd_kmem(void)
if (sflag || Sflag || rflag || !(vt->flags & KMEM_CACHE_INIT))
kmem_cache_init();
+ if (Sflag && !MEMBER_EXISTS("kmem_cache", "cpu_slab"))
+ error(FATAL, "-S not supported for this kernel\n");
+
while (args[optind]) {
if (hexadecimal(args[optind], 0)) {
value[spec_addr++] =
@@ -20401,7 +20405,6 @@ get_cpu_slab_ptr(struct meminfo *si, int cpu, ulong *cpu_freelist)
default:
cpu_slab_ptr = 0;
- error(FATAL, "cannot determine location of kmem_cache.cpu_slab page\n");
}
return cpu_slab_ptr;
--
2.52.0
4 days, 8 hours
[PATCH] Reapply "vmcoreinfo: read vmcoreinfo using 'vmcoreinfo_data' when unavailable in elf note"
by Shivang Upadhyay
Commit 7636c13 ("vmcoreinfo: read vmcoreinfo using 'vmcoreinfo_data'
when unavailable in elf note") moved the vmcoreinfo reading to always
read from memory instead of relying on diskdump/netdump's local
handlers. This was later reverted to fix regression in X86_64 kslar
images.
Reintroduce the `vmcoreinfo_read_from_memory` as fallback to
diskdump/netdump vmcores.
This reverts commit 72e2776caf1ca41dffcc8aba11c55c636565725b.
Cc: Aditya Gupta <adityag(a)linux.ibm.com>
Cc: Tao Liu <ltao(a)redhat.com>
Signed-off-by: Shivang Upadhyay <shivangu(a)linux.ibm.com>
---
defs.h | 1 +
diskdump.c | 3 +++
kernel.c | 17 ++++++++++++-----
netdump.c | 2 ++
4 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/defs.h b/defs.h
index ceed3a9..e5d38c2 100644
--- a/defs.h
+++ b/defs.h
@@ -6235,6 +6235,7 @@ void dump_kernel_table(int);
void dump_bt_info(struct bt_info *, char *where);
void dump_log(int);
void parse_kernel_version(char *);
+char *vmcoreinfo_read_from_memory(const char *);
#define LOG_LEVEL(v) ((v) & 0x07)
#define SHOW_LOG_LEVEL (0x1)
diff --git a/diskdump.c b/diskdump.c
index 0ff8782..c16e7b9 100644
--- a/diskdump.c
+++ b/diskdump.c
@@ -2434,6 +2434,9 @@ err:
if (buf)
free(buf);
+ if (value_string == NULL)
+ return vmcoreinfo_read_from_memory(key);
+
return value_string;
}
diff --git a/kernel.c b/kernel.c
index bb148d0..ec287bb 100644
--- a/kernel.c
+++ b/kernel.c
@@ -100,7 +100,6 @@ static ulong dump_audit_skb_queue(ulong);
static ulong __dump_audit(char *);
static void dump_audit(void);
static void dump_printk_safe_seq_buf(int);
-static char *vmcoreinfo_read_string(const char *);
static void check_vmcoreinfo(void);
static int is_pvops_xen(void);
static int get_linux_banner_from_vmlinux(char *, size_t);
@@ -11960,8 +11959,8 @@ dump_printk_safe_seq_buf(int msg_flags)
* Returns a string (that has to be freed by the caller) that contains the
* value for key or NULL if the key has not been found.
*/
-static char *
-vmcoreinfo_read_string(const char *key)
+char *
+vmcoreinfo_read_from_memory(const char *key)
{
char *buf, *value_string, *p1, *p2;
size_t value_length;
@@ -11971,6 +11970,14 @@ vmcoreinfo_read_string(const char *key)
buf = value_string = NULL;
+ if (!(pc->flags & GDB_INIT)) {
+ /*
+ * GDB interface hasn't been initialised yet, so can't
+ * access vmcoreinfo_data
+ */
+ return NULL;
+ }
+
switch (get_symbol_type("vmcoreinfo_data", NULL, NULL))
{
case TYPE_CODE_PTR:
@@ -12026,10 +12033,10 @@ check_vmcoreinfo(void)
switch (get_symbol_type("vmcoreinfo_data", NULL, NULL))
{
case TYPE_CODE_PTR:
- pc->read_vmcoreinfo = vmcoreinfo_read_string;
+ pc->read_vmcoreinfo = vmcoreinfo_read_from_memory;
break;
case TYPE_CODE_ARRAY:
- pc->read_vmcoreinfo = vmcoreinfo_read_string;
+ pc->read_vmcoreinfo = vmcoreinfo_read_from_memory;
break;
}
}
diff --git a/netdump.c b/netdump.c
index ba1c6c4..fd0d545 100644
--- a/netdump.c
+++ b/netdump.c
@@ -2020,6 +2020,8 @@ vmcoreinfo_read_string(const char *key)
}
}
+ if (value == NULL)
+ return vmcoreinfo_read_from_memory(key);
return value;
}
--
2.52.0
4 days, 8 hours
[PATCH] Fix pipe parsing to correctly handle quotes
by neilfsun
When parsing command lines with pipes, the previous logic incorrectly
handled nested quote types. The string detection used a simple
boolean toggle that would flip state for ANY quote character (single or
double), causing pipes inside quoted strings to be incorrectly recognized
as command separators. Without the fix, the following commands will stuck:
crash> help -t | awk '/panic_processor/{print "p cpu_info:"$2" | grep phys_proc_id"}'
Signed-off-by: neilfsun <neilfsun(a)tencent.com>
Signed-off-by: Feng Sun <loyou85(a)gmail.com>
---
cmdline.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/cmdline.c b/cmdline.c
index e9fe92a..43af77c 100644
--- a/cmdline.c
+++ b/cmdline.c
@@ -486,7 +486,7 @@ setup_redirect(int origin)
char *p, which;
int append;
int expression;
- int string;
+ char string;
int ret ATTRIBUTE_UNUSED;
FILE *pipe;
FILE *ofile;
@@ -506,7 +506,7 @@ setup_redirect(int origin)
pc->redirect |= REDIRECT_SHELL_COMMAND;
expression = 0;
- string = FALSE;
+ string = 0;
while (*p) {
if (*p == '(')
@@ -514,10 +514,12 @@ setup_redirect(int origin)
if (*p == ')')
expression--;
- if ((*p == '"') || (*p == '\''))
- string = !string;
+ if (*p == '\'' && string != '"')
+ string = (string == '\'') ? 0 : '\'';
+ else if (*p == '"' && string != '\'')
+ string = (string == '"') ? 0 : '"';
- if (!(expression || string) &&
+ if (!(expression || string) &&
((*p == '|') || (*p == '!'))) {
which = *p;
*p = NULLCHAR;
@@ -674,16 +676,18 @@ int
multiple_pipes(char **input)
{
char *p, *found;
- int quote;
+ char quote;
found = NULL;
- quote = FALSE;
+ quote = 0;
for (p = *input; *p; p++) {
- if ((*p == '\'') || (*p == '"')) {
- quote = !quote;
- continue;
- } else if (quote)
+ if (*p == '\'' && quote != '"')
+ quote = (quote == '\'') ? 0 : '\'';
+ else if (*p == '"' && quote != '\'')
+ quote = (quote == '"') ? 0 : '"';
+
+ if (quote)
continue;
if (*p == '|') {
--
2.52.0
5 days, 11 hours
[PATCH] Fix file redirection not working for external commands in input files
by neilfsun
When executing external commands (echo, cat, etc.) from input files
with file redirection (>), the output was not properly redirected to
the file but instead printed to stdout.
crash> cat crashrc
echo hi > 1
cat 1
crash> <crashrc
crash> echo hi > 1
hi
crash> cat 1
crash>
When file redirection was used, the code fell through to system() which
outputs to stdout instead of using the global fp that was correctly set
by setup_redirect().
Signed-off-by: neilfsun <neilfsun(a)tencent.com>
Signed-off-by: Feng Sun <loyou85(a)gmail.com>
---
main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/main.c b/main.c
index 95d455a..2427768 100644
--- a/main.c
+++ b/main.c
@@ -1060,7 +1060,7 @@ is_external_command(void)
strcat(command, args[i]);
}
- if (pc->redirect & REDIRECT_TO_PIPE) {
+ if (pc->redirect & (REDIRECT_TO_PIPE|REDIRECT_TO_FILE)) {
if ((pipe = popen(command, "r")) == NULL) {
error(INFO, "cannot execute: %s\n", command);
return TRUE;
--
2.52.0
5 days, 12 hours
[PATCH v2] Fix dis -lr xxx+0x1 not showing target address instruction
by neilfsun
When using "dis -lr xxx+0x1", it is not correctly shown, for example:
crash> dis -lr rb_next+0x1
/kernel/lib/rbtree.c: 445
0xffffffff8133ff60 <rb_next>: push %rbp
However, dis -lr rb+next+0x4 is correctly shown,
crash> dis -lr rb_next+0x4
/kernel/lib/rbtree.c: 445
0xffffffff8133ff60 <rb_next>: push %rbp
/kernel/lib/rbtree.c: 448
0xffffffff8133ff61 <rb_next+0x1>: mov (%rdi),%rdx
/kernel/lib/rbtree.c: 445
0xffffffff8133ff64 <rb_next+0x4>: mov %rsp,%rbp
The reverse mode only disassembled (target - function_start) bytes, which
was insufficient to reach the target instruction.
Signed-off-by: neilfsun <neilfsun(a)tencent.com>
Signed-off-by: Feng Sun <loyou85(a)gmail.com>
---
kernel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel.c b/kernel.c
index bb148d0..72d7559 100644
--- a/kernel.c
+++ b/kernel.c
@@ -2120,7 +2120,7 @@ cmd_dis(void)
if (reverse)
sprintf(buf5, "x/%ldi 0x%lx",
- (target - req->addr) ? target - req->addr : 1,
+ req->flags & GNU_FUNCTION_ONLY ? 1: req->addr2 - req->addr,
req->addr);
else
sprintf(buf5, "x/%ldi 0x%lx",
--
2.52.0
5 days, 12 hours
[PATCH] memory: Handle crash failure in linux-next caused by struct kmem_cache changes
by Mikhail Zaslonko
Since kernel commit cf338283652f ("slab: remove struct kmem_cache_cpu")
in linux-next we have no more 'cpu_slab' member in struct kmem_cache.
Pick 'cpu_sheaves' as an alternative kmem_cache member for kernel-next to
identify the SLUB case.
Without the patch, crash fails to start on kernel-next with the error
message:
crash: invalid structure member offset: kmem_cache_s_num
FILE: memory.c LINE: 9988 FUNCTION: kmem_cache_init()
This fix allows the crash to start with no errors. But kmap -s is no
longer working for kernel-next since kmem_cache_cpu array is completely
missing.
Signed-off-by: Mikhail Zaslonko <zaslonko(a)linux.ibm.com>
---
memory.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/memory.c b/memory.c
index cbc8d2f..3373fdb 100644
--- a/memory.c
+++ b/memory.c
@@ -672,6 +672,7 @@ vm_init(void)
} else if (!VALID_STRUCT(kmem_slab_s) &&
!VALID_STRUCT(slab_s) &&
!MEMBER_EXISTS("kmem_cache", "cpu_slab") &&
+ !MEMBER_EXISTS("kmem_cache", "cpu_sheaves") &&
(VALID_STRUCT(slab) || (vt->flags & SLAB_OVERLOAD_PAGE))) {
vt->flags |= PERCPU_KMALLOC_V2;
@@ -816,7 +817,7 @@ vm_init(void)
if (INVALID_MEMBER(page_first_page))
ANON_MEMBER_OFFSET_INIT(page_first_page, "page", "first_page");
- } else if (MEMBER_EXISTS("kmem_cache", "cpu_slab") &&
+ } else if ((MEMBER_EXISTS("kmem_cache", "cpu_slab") || MEMBER_EXISTS("kmem_cache", "cpu_sheaves")) &&
STRUCT_EXISTS("kmem_cache_node")) {
vt->flags |= KMALLOC_SLUB;
--
2.52.0
5 days, 12 hours
Re: [PATCH] Fix dis -lr xxx+0x1 not showing target address instruction
by Lianbo Jiang
On 1/28/26 9:42 AM, devel-request(a)lists.crash-utility.osci.io wrote:
> Date: Mon, 15 Dec 2025 17:15:15 +0800
> From: neilfsun<loyou85(a)gmail.com>
> Subject: [Crash-utility] [PATCH] Fix dis -lr xxx+0x1 not showing
> target address instruction
> To:devel@lists.crash-utility.osci.io
> Cc: neilfsun<neilfsun(a)tencent.com>, Feng Sun<loyou85(a)gmail.com>
> Message-ID:<20251215091515.36428-1-neilfsun(a)tencent.com>
>
> When using "dis -lr xxx+0x1", it is not correctly shown, for example:
> crash> dis -lr rb_next+0x1
> /kernel/lib/rbtree.c: 445
> 0xffffffff8133ff60 <rb_next>: push %rbp
>
> However, dis -lr rb+next+0x4 is correctly shown,
> crash> dis -lr rb_next+0x4
> /kernel/lib/rbtree.c: 445
> 0xffffffff8133ff60 <rb_next>: push %rbp
> /kernel/lib/rbtree.c: 448
> 0xffffffff8133ff61 <rb_next+0x1>: mov (%rdi),%rdx
> /kernel/lib/rbtree.c: 445
> 0xffffffff8133ff64 <rb_next+0x4>: mov %rsp,%rbp
>
> The reverse mode only disassembled (target - function_start) bytes, which
> was insufficient to reach the target instruction.
>
> Signed-off-by: neilfsun<neilfsun(a)tencent.com>
> Signed-off-by: Feng Sun<loyou85(a)gmail.com>
> ---
> kernel.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel.c b/kernel.c
> index bb148d0..93ea7a6 100644
> --- a/kernel.c
> +++ b/kernel.c
> @@ -2120,7 +2120,7 @@ cmd_dis(void)
>
> if (reverse)
> sprintf(buf5, "x/%ldi 0x%lx",
> - (target - req->addr) ? target - req->addr : 1,
> + req->addr2 - req->addr,
This will always ask gdb to disassemble a lot of asm instructions, can
you help try this one?
diff --git a/kernel.c b/kernel.c
index ccc4b3d..550f61a 100644
--- a/kernel.c
+++ b/kernel.c
@@ -2124,8 +2124,7 @@ cmd_dis(void)
open_tmpfile();
if (reverse)
- sprintf(buf5, "x/%ldi 0x%lx",
- (target - req->addr) ? target -
req->addr : 1,
+ sprintf(buf5, "x/%ldi 0x%lx", roundup(abs(target
- req->addr), 2),
req->addr);
else
sprintf(buf5, "x/%ldi 0x%lx",
Thanks
Lianbo
> req->addr);
> else
> sprintf(buf5, "x/%ldi 0x%lx",
> -- 2.50.1
5 days, 12 hours
[PATCH] Fix dis -lr xxx+0x1 not showing target address instruction
by neilfsun
When using "dis -lr xxx+0x1", it is not correctly shown, for example:
crash> dis -lr rb_next+0x1
/kernel/lib/rbtree.c: 445
0xffffffff8133ff60 <rb_next>: push %rbp
However, dis -lr rb+next+0x4 is correctly shown,
crash> dis -lr rb_next+0x4
/kernel/lib/rbtree.c: 445
0xffffffff8133ff60 <rb_next>: push %rbp
/kernel/lib/rbtree.c: 448
0xffffffff8133ff61 <rb_next+0x1>: mov (%rdi),%rdx
/kernel/lib/rbtree.c: 445
0xffffffff8133ff64 <rb_next+0x4>: mov %rsp,%rbp
The reverse mode only disassembled (target - function_start) bytes, which
was insufficient to reach the target instruction.
Signed-off-by: neilfsun <neilfsun(a)tencent.com>
Signed-off-by: Feng Sun <loyou85(a)gmail.com>
---
kernel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel.c b/kernel.c
index bb148d0..93ea7a6 100644
--- a/kernel.c
+++ b/kernel.c
@@ -2120,7 +2120,7 @@ cmd_dis(void)
if (reverse)
sprintf(buf5, "x/%ldi 0x%lx",
- (target - req->addr) ? target - req->addr : 1,
+ req->addr2 - req->addr,
req->addr);
else
sprintf(buf5, "x/%ldi 0x%lx",
--
2.50.1
1 week, 1 day
[PATCH v2 0/4] xarray: add large folio support
by Huang Shijie
The linux kernel supports the large folio for page cache by default.
But the current CRASH does not support the large folio.
So we may meet the errors when we detected the large folio sometimes,
such as in the email:
https://www.spinics.net/linux/fedora/redhat-crash-utility/msg11238.html
------------------------------
files: page_to_nid: invalid page: 0
files: page_to_nid: invalid page: 0
files: page_to_nid: invalid page: 0
files: page_to_nid: invalid page: 10
files: page_to_nid: invalid page: 10
files: page_to_nid: invalid page: 10
files: page_to_nid: invalid page: 20
files: page_to_nid: invalid page: 20
files: page_to_nid: invalid page: 20
files: page_to_nid: invalid page: 30
files: page_to_nid: invalid page: 30
files: page_to_nid: invalid page: 30
files: page_to_nid: invalid page: 40
files: page_to_nid: invalid page: 40
files: page_to_nid: invalid page: 40
files: page_to_nid: invalid page: 50
files: page_to_nid: invalid page: 50
files: page_to_nid: invalid page: 50
files: page_to_nid: invalid page: 60
files: page_to_nid: invalid page: 60
------------------------------
The first 3 patches are used to add large folio support for CRASH.
The last patch is newly version of an old patch:
it add "files -n" command.
v1-->v2:
1.) Rebase the kernel to later 7.0-rc1(merge window)
2.) Fixed a bug in the patch 3, the latest kernel supports folios
whose page order is bigger then 5:
"xarray: add large folio support"
Huang Shijie (4):
xarray: add a new parameter for do_xarray
add folio_order function
xarray: add large folio support
add "files -n" command for an inode
bpf.c | 8 +++---
defs.h | 10 ++++++-
dev.c | 4 +--
diskdump.c | 10 +++++--
filesys.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++--------
help.c | 24 ++++++++++++++++-
ipcs.c | 4 +--
kernel.c | 4 +--
memory.c | 26 ++++++++++++++++--
symbols.c | 2 ++
task.c | 4 +--
tools.c | 16 +++++++++---
12 files changed, 157 insertions(+), 32 deletions(-)
--
2.43.0
1 week, 1 day