HomeFreeBSD

Fixes for procfs files backed by linked lists

Description

Fixes for procfs files backed by linked lists

There are some issues with the way the seq_file interface is implemented
for kstats backed by linked lists (zfs_dbgmsgs and certain per-pool
debugging info):

  • We don't account for the fact that seq_file sometimes visits a node multiple times, which results in missing messages when read through procfs.
  • We don't keep separate state for each reader of a file, so concurrent readers will receive incorrect results.
  • We don't account for the fact that entries may have been removed from the list between read syscalls, so reading from these files in procfs can cause the system to crash.

This change fixes these issues and adds procfs_list, a wrapper around a
linked list which abstracts away the details of implementing the
seq_file interface for a list and exposing the contents of the list
through procfs.

Reviewed by: Don Brady <don.brady@delphix.com>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed by: Brad Lewis <brad.lewis@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: John Gallagher <john.gallagher@delphix.com>
External-issue: LX-1211
Closes #7819

Details

Provenance
John Gallagher <jgallag88@gmail.com>Authored on Sep 26 2018, 6:08 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Sep 26 2018, 6:08 PM
Parents
rG3ed2fbcc1ce3: Fix flake 8 style warnings
Branches
Unknown
Tags
Unknown