• Linus Torvalds's avatar
    Merge tag 'gfs2-4.7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 · b403f230
    Linus Torvalds authored
    Pull gfs2 updates from Bob Peterson:
     "We've got ten patches this time, half of which are related to a
      plethora of nasty outcomes when inodes are transitioned from the
      unlinked state to the free state.  Small file systems are particularly
      vulnerable to these problems, and it can manifest as mainly hangs, but
      also file system corruption.  The patches have been tested for
      literally many weeks, with a very gruelling test, so I have a high
      level of confidence.
    
       - Andreas Gruenbacher wrote a series of five patches for various
         lockups during the transition of inodes from unlinked to free.
    
         The main patch is titled "Fix gfs2_lookup_by_inum lock inversion"
         and the other four are support and cleanup patches related to that.
    
       - Ben Marzinski contributed two patches with regard to a recreatable
         problem when gfs2 tries to write a page to a file that is being
         truncated, resulting in a BUG() in gfs2_remove_from_journal.
    
         Note that Ben had to export vfs function __block_write_full_page to
         get this to work properly.  It's been posted a long time and he
         talked to various VFS people about it, and nobody seemed to mind.
    
       - I contributed 3 patches:
           o The first one fixes a memory corruptor: a race in which one
             process can overwrite the gl_object pointer set by another
             process, causing kernel panic and other symptoms.
           o The second patch fixes another race that resulted in a
             false-positive BUG_ON.  This occurred when resource group
             reservations were freed by one process while another process
             was trying to grab a new reservation in the same resource
             group.
           o The third patch fixes a problem with doing journal replay when
             the journals are not all the same size"
    
    * tag 'gfs2-4.7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
      GFS2: Fix gfs2_replay_incr_blk for multiple journal sizes
      GFS2: Check rs_free with rd_rsspin protection
      gfs2: writeout truncated pages
      fs: export __block_write_full_page
      gfs2: Lock holder cleanup
      gfs2: Large-filesystem fix for 32-bit systems
      gfs2: Get rid of gfs2_ilookup
      gfs2: Fix gfs2_lookup_by_inum lock inversion
      gfs2: Initialize iopen glock holder for new inodes
      GFS2: don't set rgrp gl_object until it's inserted into rgrp tree
    b403f230
dir.c 52.1 KB