Skip to content

L2ARC restore sometime fails #15202

Closed
Closed
@shodanshok

Description

@shodanshok

System information

Type Version/Name
Distribution Name Debian
Distribution Version 12.1
Kernel Version 6.1.0-11-amd64
Architecture x86-64
OpenZFS Version 2.1.11

Describe the problem you're observing

Sometimes, L2ARC restore fails without apparent reason. /proc/spl/kstat/zfs/dbgmsg simply shows L2ARC rebuild no valid log blocks. See below for an example.

# L2ARC populated
root@debian12:~/zfs/zfs-2.1.11# zpool iostat -v
                     capacity     operations     bandwidth
pool               alloc   free   read  write   read  write
-----------------  -----  -----  -----  -----  -----  -----
tank                299M  15.2G      1      0  32.5K  5.98K
  vdb               299M  15.2G      1      0  32.5K  5.98K
  indirect-1           -      -      0      0      0      0
cache                  -      -      -      -      -      -
  /root/l2arc.img  6.37M  3.99G      0      0    399  5.54K
-----------------  -----  -----  -----  -----  -----  -----

# exporting and reimporting pool, L2ARC is empty now
root@debian12:~/zfs/zfs-2.1.11# zpool export tank; zpool import tank
root@debian12:~/zfs/zfs-2.1.11# zpool iostat -v
                     capacity     operations     bandwidth
pool               alloc   free   read  write   read  write
-----------------  -----  -----  -----  -----  -----  -----
tank                299M  15.2G     48     78   998K   956K
  vdb               299M  15.2G     48     78   998K   956K
  indirect-1           -      -      0      0      0      0
cache                  -      -      -      -      -      -
  /root/l2arc.img      0  4.00G      5      2   296K  15.4K
-----------------  -----  -----  -----  -----  -----  -----

# no valid log blocks
root@debian12:~/zfs/zfs-2.1.11# tail /proc/spl/kstat/zfs/dbgmsg
1692828434   spa_history.c:307:spa_history_log_sync(): txg 21334 L2ARC rebuild no valid log blocks
1692828434   spa_history.c:294:spa_history_log_sync(): command: zpool import tank

# create some new metadata L2ARC cache
root@debian12:~/zfs/zfs-2.1.11# time find /tank/test/fsmark/ -exec stat {} \+ > /dev/null
root@debian12:~/zfs/zfs-2.1.11# zpool iostat -v
                     capacity     operations     bandwidth
pool               alloc   free   read  write   read  write
-----------------  -----  -----  -----  -----  -----  -----
tank                299M  15.2G     51      6  1.07M  76.8K
  vdb               299M  15.2G     51      6  1.07M  76.8K
  indirect-1           -      -      0      0      0      0
cache                  -      -      -      -      -      -
  /root/l2arc.img  4.83M  3.99G      0      2  13.2K   139K
-----------------  -----  -----  -----  -----  -----  -----

# exporting and reimporting pool, L2ARC was preserved this time.
root@debian12:~/zfs/zfs-2.1.11# zpool iostat -v
                     capacity     operations     bandwidth
pool               alloc   free   read  write   read  write
-----------------  -----  -----  -----  -----  -----  -----
tank                299M  15.2G     37     47   605K   592K
  vdb               299M  15.2G     37     47   605K   592K
  indirect-1           -      -      0      0      0      0
cache                  -      -      -      -      -      -
  /root/l2arc.img  6.42M  3.99G      7      1   187K  8.87K
-----------------  -----  -----  -----  -----  -----  -----

# log blocks restored
root@debian12:~/zfs/zfs-2.1.11# tail /proc/spl/kstat/zfs/dbgmsg
1692828904   spa_history.c:307:spa_history_log_sync(): txg 21482 L2ARC rebuild successful, restored 4 blocks
1692828904   spa_history.c:294:spa_history_log_sync(): command: zpool import tank

Describe how to reproduce the problem

No specific reproduced yet, it simply happens.

Include any warning/errors/backtraces from the system logs

None.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: DefectIncorrect behavior (e.g. crash, hang)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions