Hi Dave, On 5/21/2019 2:58 PM, Dave Anderson wrote: > > Hi Kazu, > > Your patch that exports the get_mount_list() and get_dump_level() functions has > been queued for crash-7.2.7: > > https://github.com/crash-utility/crash/commit/3370ae03edf3d815bfffe556ffddc43619420674 > > Also, the CRASHDEBUG(0) in do_xarray_dump_cb() was a leftover from when I was debugging > the initial XArray support patch-set. As you noted, it should be set to CRASHDEBUG(1): > > https://github.com/crash-utility/crash/commit/1f6b1ce5678224dd5085020e45259ea8c057e4a1 Thank you for merging and fixing. > > With respect to your extension module, do you want to post an updated version? Yes. I will post a github link when I finish preparing. Thanks! Kazu > > Thanks, > Dave > > > > ----- Original Message ----- >> Hi Dave, >> >> I've written "cacheutils" crash extension module that lists dentry caches and >> dumps page caches associated with a specified file path. I think this module >> would be helpful for support folks to find and see config/log files in >> vmcore. >> >> For example: >> $ make extensions >> >> crash> extend cacheutils.so >> ./cacheutils.so: shared object loaded >> crash> extend >> SHARED OBJECT COMMANDS >> ./cacheutils.so ccat cls >> crash> cls /var/log >> DENTRY INODE I_MAPPING NRPAGES % PATH >> ffff9c0c3eabe300 ffff9c0c3e875b78 ffff9c0c3e875ce8 0 0 ./ >> ffff9c0c16a22900 ffff9c0c16ada2f8 ffff9c0c16ada468 0 0 anaconda/ >> ffff9c0c37611000 ffff9c0c3759f5b8 ffff9c0c3759f728 0 0 audit/ >> ffff9c0c375ccc00 ffff9c0c3761c8b8 ffff9c0c3761ca28 1 100 btmp >> ffff9c0c28fda240 ffff9c0c22c713f8 ffff9c0c22c71568 6 100 cron >> ffff9c0c3eb7f180 ffff9c0bfd402a78 ffff9c0bfd402be8 36 7 >> dnf.librepo.log >> ... >> crash> ccat /var/log/messages | tail >> Nov 28 16:43:57 fedora systemd[27015]: Reached target Basic System. >> Nov 28 16:43:57 fedora systemd[27015]: Reached target Default. >> Nov 28 16:43:57 fedora systemd[1]: Started User Manager for UID 0. >> Nov 28 16:43:57 fedora systemd[27015]: Startup finished in 61ms. >> >> It tested OK from RHEL5 (x86_64) to kernel 5.1, which has XArray, >> and a recent x86 Fedora. >> >> >> I have three questions (requests) related to this, and I would appreciate it >> if you would take a look at them after your vacation :) >> >> * Is it possible to export the get_mount_list() and get_dump_level() >> functions >> to extension modules? (The patch at the end exports these two functions.) >> >> Now the get_mount_list() is copied from crash/filesys.c to this module. >> And I'd like to call the get_dump_level() to inform users whether the "ccat" >> command is available or not with their vmcore when the module is loaded. >> If they are exported, I will remove the "#define NOT_EXPORTED" and #ifdef >> sections in it. >> >> * Is the CRASHDEBUG(0) in do_xarray_dump_cb() function on purpose? >> >> This module uses the function and it sometimes prints the following messages >> without crash -d option. The similar message for radix tree is suppressed by >> CRASHDEBUG(1), but this has CRASHDEBUG(0), so I'm wondering about it. >> >> crash> ccat /var/log/messages >> ccat: entry has XARRAY_TAG_MASK bits set: 239ab0024001 >> ccat: entry has XARRAY_TAG_MASK bits set: 239ae0024001 >> ccat: entry has XARRAY_TAG_MASK bits set: 239af0024001 >> >> static void do_xarray_dump_cb(ulong node, ulong slot, const char *path, >> ulong index, void *private) >> { >> ... >> if (!cb(slot)) { >> if (slot & XARRAY_TAG_MASK) { >> if (CRASHDEBUG(0)) >> error(INFO, "entry has XARRAY_TAG_MASK bits >> set: %lx\n", slot); >> return; >> >> * Is it possible to add this module to your crash extension modules page? >> I'm planning to put it on GitHub, so I'd like you to add the link to the >> page. >> >> Thanks, >> Kazu >> >> Signed-off-by: Kazuhito Hagio <k-hagio@xxxxxxxxxxxxx> >> --- >> defs.h | 2 ++ >> diskdump.c | 3 +-- >> filesys.c | 3 +-- >> 3 files changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/defs.h b/defs.h >> index 912037fcc762..42e381e6d9c1 100644 >> --- a/defs.h >> +++ b/defs.h >> @@ -5298,6 +5298,7 @@ void set_tmpfile2(FILE *); >> void close_tmpfile2(void); >> void open_files_dump(ulong, int, struct reference *); >> void get_pathname(ulong, char *, int, int, ulong); >> +ulong *get_mount_list(int *, struct task_context *); >> char *vfsmount_devname(ulong, char *, int); >> ulong file_to_dentry(ulong); >> ulong file_to_vfsmnt(ulong); >> @@ -6440,6 +6441,7 @@ int diskdump_phys_base(unsigned long *); >> int diskdump_set_phys_base(unsigned long); >> ulong *diskdump_flags; >> int is_partial_diskdump(void); >> +int get_dump_level(void); >> int dumpfile_is_split(void); >> void show_split_dumpfiles(void); >> void x86_process_elf_notes(void *, unsigned long); >> diff --git a/diskdump.c b/diskdump.c >> index 694339fbb713..e88243e616cc 100644 >> --- a/diskdump.c >> +++ b/diskdump.c >> @@ -80,7 +80,6 @@ struct diskdump_data { >> >> static struct diskdump_data diskdump_data = { 0 }; >> static struct diskdump_data *dd = &diskdump_data; >> -static int get_dump_level(void); >> >> ulong *diskdump_flags = &diskdump_data.flags; >> >> @@ -2114,7 +2113,7 @@ get_diskdump_switch_stack(ulong task) >> * Version 1 and later compressed kdump dumpfiles contain the dump level >> * in an additional field of the sub_header_kdump structure. >> */ >> -static int >> +int >> get_dump_level(void) >> { >> int dump_level; >> diff --git a/filesys.c b/filesys.c >> index 037704126840..d88ea28ebe7a 100644 >> --- a/filesys.c >> +++ b/filesys.c >> @@ -37,7 +37,6 @@ static int mount_point(char *); >> static int open_file_reference(struct reference *); >> static void memory_source_init(void); >> static int get_pathname_component(ulong, ulong, int, char *, char *); >> -static ulong *get_mount_list(int *, struct task_context *); >> char *inode_type(char *, char *); >> static void match_proc_version(void); >> static void get_live_memory_source(void); >> @@ -1600,7 +1599,7 @@ show_mounts(ulong one_vfsmount, int flags, struct >> task_context *namespace_contex >> /* >> * Allocate and fill a list of the currently-mounted vfsmount pointers. >> */ >> -static ulong * >> +ulong * >> get_mount_list(int *cntptr, struct task_context *namespace_context) >> { >> struct list_data list_data, *ld; >> -- >> 2.18.1 >> > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility