• J
    [SCSI] iterate over devices individually for /proc/scsi/scsi · e37c4913
    Jeff Mahoney 提交于
    On systems with very large numbers (> 1600 or so) of SCSI devices,
    cat /proc/scsi/scsi ends up failing with -ENOMEM. This is due to
    the show routine simply iterating over all of the devices with
    bus_for_each_dev(), and trying to dump all of them into the buffer
    at the same time. On my test system (using scsi_debug with 4064 devices),
    the output ends up being ~ 632k, far more than kmalloc will typically allow.
    
    This patch defines its own seq_file opreations to iterate over the scsi
    devices.The result is that each show() operation only dumps ~ 180 bytes
    into the buffer at a time so we don't run out of memory.
    
    If the "Attached devices" header isn't required, we can dump the
    sfile->private bit completely.
    Signed-off-by: NJeff Mahoney <jeffm@suse.com>
    Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
    e37c4913
scsi_proc.c 11.6 KB