Merge branch 'pnfs_generic'
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 4 Jan 2016 18:19:55 +0000 (13:19 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 4 Jan 2016 18:19:55 +0000 (13:19 -0500)
* pnfs_generic:
  NFSv4.1/pNFS: Cleanup constify struct pnfs_layout_range arguments
  NFSv4.1/pnfs: Cleanup copying of pnfs_layout_range structures
  NFSv4.1/pNFS: Cleanup pnfs_mark_matching_lsegs_invalid()
  NFSv4.1/pNFS: Fix a race in initiate_file_draining()
  NFSv4.1/pNFS: pnfs_error_mark_layout_for_return() must always return layout
  NFSv4.1/pNFS: pnfs_mark_matching_lsegs_return() should set the iomode
  NFSv4.1/pNFS: Use nfs4_stateid_copy for copying stateids
  NFSv4.1/pNFS: Don't pass stateids by value to pnfs_send_layoutreturn()
  NFS: Relax requirements in nfs_flush_incompatible
  NFSv4.1/pNFS: Don't queue up a new commit if the layout segment is invalid
  NFS: Allow multiple commit requests in flight per file
  NFS/pNFS: Fix up pNFS write reschedule layering violations and bugs
  NFSv4: List stateid information in the callback tracepoints
  NFSv4.1/pNFS: Don't return NFS4ERR_DELAY unnecessarily in CB_LAYOUTRECALL
  NFSv4.1/pNFS: Ensure we enforce RFC5661 Section 12.5.5.2.1
  pNFS: If we have to delay the layout callback, mark the layout for return
  NFSv4.1/pNFS: Add a helper to mark the layout as returned
  pNFS: Ensure nfs4_layoutget_prepare returns the correct error

1  2 
fs/nfs/direct.c
fs/nfs/file.c
fs/nfs/flexfilelayout/flexfilelayout.c
fs/nfs/internal.h
fs/nfs/nfs4proc.c
fs/nfs/pagelist.c
fs/nfs/pnfs.c
fs/nfs/pnfs.h
fs/nfs/write.c
include/linux/nfs_fs.h
include/linux/nfs_xdr.h

diff --cc fs/nfs/direct.c
Simple merge
diff --cc fs/nfs/file.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/nfs/pnfs.c
index 113c3b327e24ef7dc65322137d55fc9c0f790961,04db6d951b997bca6fdef210258ee47bfc2c80c2..a3592cc34a20b76341c9c9b9af3378bdddebd477
@@@ -1769,12 -1811,12 +1788,10 @@@ void pnfs_error_mark_layout_for_return(
                .length = NFS4_MAX_UINT64,
        };
        LIST_HEAD(free_me);
+       bool return_now = false;
  
        spin_lock(&inode->i_lock);
-       if (lo->plh_return_iomode == 0)
-               lo->plh_return_iomode = range.iomode;
-       else if (lo->plh_return_iomode != range.iomode)
-               lo->plh_return_iomode = IOMODE_ANY;
 -      /* set failure bit so that pnfs path will be retried later */
 -      pnfs_layout_set_fail_bit(lo, iomode);
+       pnfs_set_plh_return_iomode(lo, range.iomode);
        /*
         * mark all matching lsegs so that we are sure to have no live
         * segments at hand when sending layoutreturn. See pnfs_put_lseg()
diff --cc fs/nfs/pnfs.h
Simple merge
diff --cc fs/nfs/write.c
Simple merge
Simple merge
Simple merge