On Wed, Dec 21, 2022 at 3:06 PM HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab(a)nec.com>
wrote:
 On 2022/12/21 15:14, lijiang wrote:
 > Thank you for the comment, Kazu.
 >
 > On Wed, Dec 21, 2022 at 1:48 PM HAGIO KAZUHITO(萩尾 一仁)
 > <k-hagio-ab(a)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.
 OK.
 >
 >> 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?
 ah, your example already has it and mnt_sb, so I didn't put them in the
 error message.
 >>>>      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"
            ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
 but printing it again may be better, and WARNING may be better
 in this case.  Please play around for good output and can I have
 an example output?
 
With the warning as below:
+                       error(WARNING, "cannot get super_block from vfsmnt:
0x%lx\n", *vfsmnt);
The output looks like this:
crash> mount
     MOUNT           SUPERBLK     TYPE   DEVNAME   DIRNAME
ffff97a4818a3480 ffff979500013800 rootfs none      /
ffff97e4846ca700 ffff97e484653000 sysfs  sysfs     /sys
ffff97e4846cab80 ffff979500017000 proc   proc      /proc
...
ffff97f482966e80 ffff97f4824e7800 ext4   /dev/sda1 /boot
...
ffff9804839e4480 ffff9804842b5800 autofs auto.hwlnx.ah /tnet/agoura/hwnet
ffff9804839e5680 ffff98048343c000 autofs auto.hwlnx.odc /tnet/odc/hwnet
ffff9804839e6700 ffff9804f55a9800 autofs auto.hwlnx.mun /tnet/mun/hwnet
ffff97a501d57a80 ffff97b484c2a800 autofs auto.hwlnx.mdc /tnet/mdc/hwnet
mount: WARNING: cannot get super_block from vfsmnt: 0xffff97b484753420
...
ffff97f514bec600 ffff9806d74ab800 mvfs   /dev/mvfs /vobs/matrix_fpga
crash>
Thanks.
Lianbo
 Thanks,
 Kazu