[Crash-utility] [PATCH] Fix mount command to appropriately display the mount dumps
lijiang
lijiang at redhat.com
Wed Dec 21 06:14:39 UTC 2022
Thank you for the comment, Kazu.
On Wed, Dec 21, 2022 at 1:48 PM HAGIO KAZUHITO(萩尾 一仁)
<k-hagio-ab at nec.com> wrote:
>
> On 2022/12/21 14:22, HAGIO KAZUHITO(萩尾 一仁) wrote:
> > On 2022/12/20 12:16, Lianbo Jiang wrote:
> >> Recently the following failure has been observed on some vmcores when
> >> using the mount command:
> >>
> >> crash> mount
> >> MOUNT SUPERBLK TYPE DEVNAME DIRNAME
> >> ffff97a4818a3480 ffff979500013800 rootfs none /
> >> ffff97e4846ca700 ffff97e484653000 sysfs sysfs /sys
> >> ...
> >> ffff97b484753420 0 mount: invalid kernel virtual address: 0 type: "super_block buffer"
> >
> > Thank you for the fix.
> >
> > Just out of curiosity, do you see why the vfsmount.mnt_sb is zero?
> > That panic occurred during mounting or unmounting?
>
I didn't reproduce this issue, but I got several vmcores from
customers and did the debugging.
Maybe the super block has been released, but the data has not been
completely synced. I guess.
> I think, it might be more helpful to print the MOUNT and SUPERBLK values
> in the list even if it's zero or invalid, rather than skip it completely.
> What do you think? e.g. continue here:
>
Sounds good.
> @@ -1500,6 +1500,11 @@ show_mounts(ulong one_vfsmount, int flags, struct task_context *namespace_contex
> mkstring(buf2, VADDR_PRLEN, RJUST|LONG_HEX,
> MKSTR(sbp)));
>
> + if (!IS_KVADDR(sbp)) {
> + error(INFO, "cannot get super_block\n");
+ error(INFO, "cannot get super_block from
vfsmnt: 0x%lx\n", *vfsmnt);
If we would like to print the information, also try to output the vfs
mount address, looks better?
Thanks.
Lianbo
> + continue;
> + }
> +
> readmem(sbp, KVADDR, super_block_buf, SIZE(super_block),
> "super_block buffer", FAULT_ON_ERROR);
> type = ULONG(super_block_buf + OFFSET(super_block_s_type));
>
> Thanks,
> Kazu
>
> >
> > Thanks,
> > Kazu
> >
> >>
> >> The kernel virtual address of the super_block is zero when the mount
> >> command fails at the address 0xffff97b484753420. And the remaining
> >> dumping information will be discarded. That is not expected.
> >>
> >> Check the address and skip it, if this is an invalid kernel virtual
> >> address, that can avoid truncating the remaining mount dumps.
> >>
> >> Reported-by: Dave Wysochanski <dwysocha at redhat.com>
> >> Signed-off-by: Lianbo Jiang <lijiang at redhat.com>
> >> ---
> >> filesys.c | 2 ++
> >> 1 file changed, 2 insertions(+)
> >>
> >> diff --git a/filesys.c b/filesys.c
> >> index c2ea78de821d..8c2d4e316208 100644
> >> --- a/filesys.c
> >> +++ b/filesys.c
> >> @@ -1491,6 +1491,8 @@ show_mounts(ulong one_vfsmount, int flags, struct task_context *namespace_contex
> >> }
> >>
> >> sbp = ULONG(vfsmount_buf + OFFSET(vfsmount_mnt_sb));
> >> + if (!IS_KVADDR(sbp))
> >> + continue;
> >>
> >> if (flags)
> >> fprintf(fp, "%s", mount_hdr);
> > --
> > Crash-utility mailing list
> > Crash-utility at redhat.com
> > https://listman.redhat.com/mailman/listinfo/crash-utility
> > Contribution Guidelines: https://github.com/crash-utility/crash/wiki
More information about the Crash-utility
mailing list