• E
    sysfs: Simplify readdir. · 3efa65b9
    Eric W. Biederman 提交于
    At some point someone wrote sysfs_readdir to insert a cursor
    into the list of sysfs_dirents to ensure that sysfs_readdir would
    restart properly.  That works but it is complex code and tends
    to be expensive.
    
    The same effect can be achieved by keeping the sysfs_dirents in
    inode order and using the inode number as the f_pos.  Then
    when we restart we just have to find the first dirent whose inode
    number is equal or greater then the last sysfs_dirent we attempted
    to return.
    
    Removing the sysfs directory cursor also allows the remove of
    all of the mysterious checks for sysfs_type(sd) != 0.   Which
    were nonbovious checks to see if a cursor was in a directory list.
    
    tj: offset marker for EOF is changed from UINT_MAX to INT_MAX to avoid
        overflow in case offset is 32bit.
    Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: NTejun Heo <htejun@gmail.com>
    Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
    3efa65b9
dir.c 23.7 KB