• Michael Paquier's avatar
    Address set of issues with errno handling · 6cb33724
    Michael Paquier authored
    System calls mixed up in error code paths are causing two issues which
    several code paths have not correctly handled:
    1) For write() calls, sometimes the system may return less bytes than
    what has been written without errno being set.  Some paths were careful
    enough to consider that case, and assumed that errno should be set to
    ENOSPC, other calls missed that.
    2) errno generated by a system call is overwritten by other system calls
    which may succeed once an error code path is taken, causing what is
    reported to the user to be incorrect.
    
    This patch uses the brute-force approach of correcting all those code
    paths.  Some refactoring could happen in the future, but this is let as
    future work, which is not targeted for back-branches anyway.
    
    Author: Michael Paquier
    Reviewed-by: Ashutosh Sharma
    Discussion: https://postgr.es/m/20180622061535.GD5215@paquier.xyz
    6cb33724
slot.c 41.2 KB