Merge tag 'gfs2-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 10 Nov 2015 02:01:23 +0000 (18:01 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 10 Nov 2015 02:01:23 +0000 (18:01 -0800)
Pull gfs2 updates from Bob Peterson:
 "Here is a list of patches we've accumulated for GFS2 for the current
  upstream merge window.  There are only six patches this time:

   1. A cleanup patch from Andreas to remove the gl_spin #define in favor
      of its value for the sake of clarity.
   2. A fix from Andy Price to mark the inode dirty during fallocate.
   3. A fix from Andy Price to set s_mode on mount failures to prevent a
      stack trace.
   4  A patch from me to prevent a kernel BUG() in trans_add_meta/trans_add_data
      due to uninitialized storage.
   5. A patch from me to protecting our freeing of the in-core directory
      hash table to prevent double-free.
   6. A fix for a page/block rounding problem that resulted in a metadata
      coherency problem when the block size != page size"

  I've got a lot more patches in various stages of review and testing,
  but I'm afraid they'll have to wait until the next merge window.  So
  next time we're likely to have a lot more"

* tag 'gfs2-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
  GFS2: Fix rgrp end rounding problem for bsize < page size
  GFS2: Protect freeing directory hash table with i_lock spin_lock
  gfs2: Remove gl_spin define
  gfs2: Add missing else in trans_add_meta/data
  GFS2: Set s_mode before parsing mount options
  GFS2: fallocate: do not rely on file_update_time to mark the inode dirty

1  2 
fs/gfs2/file.c

diff --combined fs/gfs2/file.c
index 9287a2d17b8c3f6cdfe220f7f1717dc23e753a6b,71cd138c0676e9602fd146cbe5c36922a32be913..5e425469f0c2659b0475535b18c634e487b15e12
@@@ -897,8 -897,8 +897,8 @@@ static long __gfs2_fallocate(struct fil
  
        if (!(mode & FALLOC_FL_KEEP_SIZE) && (pos + count) > inode->i_size) {
                i_size_write(inode, pos + count);
-               /* Marks the inode as dirty */
                file_update_time(file);
+               mark_inode_dirty(inode);
        }
  
        return generic_write_sync(file, pos, count);
@@@ -1000,7 -1000,7 +1000,7 @@@ static int gfs2_lock(struct file *file
        }
        if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) {
                if (fl->fl_type == F_UNLCK)
 -                      posix_lock_file_wait(file, fl);
 +                      locks_lock_file_wait(file, fl);
                return -EIO;
        }
        if (IS_GETLK(cmd))
@@@ -1031,7 -1031,7 +1031,7 @@@ static int do_flock(struct file *file, 
        if (gl) {
                if (fl_gh->gh_state == state)
                        goto out;
 -              flock_lock_file_wait(file,
 +              locks_lock_file_wait(file,
                                     &(struct file_lock){.fl_type = F_UNLCK});
                gfs2_glock_dq(fl_gh);
                gfs2_holder_reinit(state, flags, fl_gh);
                if (error == GLR_TRYFAILED)
                        error = -EAGAIN;
        } else {
 -              error = flock_lock_file_wait(file, fl);
 +              error = locks_lock_file_wait(file, fl);
                gfs2_assert_warn(GFS2_SB(&ip->i_inode), !error);
        }
  
@@@ -1071,7 -1071,7 +1071,7 @@@ static void do_unflock(struct file *fil
        struct gfs2_holder *fl_gh = &fp->f_fl_gh;
  
        mutex_lock(&fp->f_fl_mutex);
 -      flock_lock_file_wait(file, fl);
 +      locks_lock_file_wait(file, fl);
        if (fl_gh->gh_gl) {
                gfs2_glock_dq(fl_gh);
                gfs2_holder_uninit(fl_gh);