• Steven Whitehouse's avatar
    GFS2: Double check link count under glock · d192a8e5
    Steven Whitehouse authored
    To avoid any possible races relating to the link count, we need to
    recheck it under the inode's glock in all cases where it matters.
    Also to ensure we never get any nasty surprises, this patch also
    ensures that once the link count has hit zero it can never be
    elevated by rereading in data from disk.
    
    The only place we cannot provide a proper solution is in rename
    in the case where we are removing a target inode and we discover
    that the target inode has been already unlinked on another node.
    The race window is very small, and we return EAGAIN in this case
    to indicate what has happened. The proper solution would be to move
    the lookup parts of rename from the vfs into library calls which
    the fs could call directly, but that is potentially a very big job
    and this fix should cover most cases for now.
    Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
    d192a8e5
ops_inode.c 30 KB