• C
    Btrfs: fix readdir on 32 bit machines · 89f135d8
    Chris Mason 提交于
    After btrfs_readdir has gone through all the directory items, it
    sets the directory f_pos to the largest possible int.  This way
    applications that mix readdir with creating new files don't
    end up in an endless loop finding the new directory items as they go.
    
    It was a workaround for a bug in git, but the assumption was that if git
    could make this looping mistake than it would be a common problem.
    
    The largest possible int chosen was INT_LIMIT(typeof(file->f_pos),
    and it is possible for that to be a larger number than 32 bit glibc
    expects to come out of readdir.
    
    This patches switches that to INT_LIMIT(off_t), which should keep
    applications happy on 32 and 64 bit machines.
    Signed-off-by: NChris Mason <chris.mason@oracle.com>
    89f135d8
inode.c 134.3 KB