1. 29 9月, 2012 14 次提交
  2. 03 8月, 2012 1 次提交
    • I
      pnfs: defer release of pages in layoutget · 8554116e
      Idan Kedar 提交于
      we have encountered a bug whereby reading a lot of files (copying
      fedora's /bin) from a pNFS mount and hitting Ctrl+C in the middle caused
      a general protection fault in xdr_shrink_bufhead. this function is
      called when decoding the response from LAYOUTGET. the decoding is done
      by a worker thread, and the caller of LAYOUTGET waits for the worker
      thread to complete.
      
      hitting Ctrl+C caused the synchronous wait to end and the next thing the
      caller does is to free the pages, so when the worker thread calls
      xdr_shrink_bufhead, the pages are gone. therefore, the cleanup of these
      pages has been moved to nfs4_layoutget_release.
      Signed-off-by: NIdan Kedar <idank@tonian.com>
      Signed-off-by: NBenny Halevy <bhalevy@tonian.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      8554116e
  3. 31 7月, 2012 1 次提交
  4. 17 7月, 2012 2 次提交
  5. 29 6月, 2012 2 次提交
  6. 20 6月, 2012 1 次提交
  7. 18 6月, 2012 1 次提交
    • T
      NFSv4.1: Fix umount when filelayout DS is also the MDS · 2a4c8994
      Trond Myklebust 提交于
      Currently there is a 'chicken and egg' issue when the DS is also the mounted
      MDS. The nfs_match_client() reference from nfs4_set_ds_client bumps the
      cl_count, the nfs_client is not freed at umount, and nfs4_deviceid_purge_client
      is not called to dereference the MDS usage of a deviceid which holds a
      reference to the DS nfs_client.  The result is the umount program returns,
      but the nfs_client is not freed, and the cl_session hearbeat continues.
      
      The MDS (and all other nfs mounts) lose their last nfs_client reference in
      nfs_free_server when the last nfs_server (fsid) is umounted.
      The file layout DS lose their last nfs_client reference in destroy_ds
      when the last deviceid referencing the data server is put and destroy_ds is
      called. This is triggered by a call to nfs4_deviceid_purge_client which
      removes references to a pNFS deviceid used by an MDS mount.
      
      The fix is to track how many pnfs enabled filesystems are mounted from
      this server, and then to purge the device id cache once that count reaches
      zero.
      Reported-by: NJorge Mora <Jorge.Mora@netapp.com>
      Reported-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      2a4c8994
  8. 25 5月, 2012 3 次提交
  9. 20 5月, 2012 3 次提交
  10. 02 5月, 2012 1 次提交
  11. 28 4月, 2012 7 次提交
  12. 27 4月, 2012 1 次提交
  13. 17 3月, 2012 1 次提交
    • T
      NFSv4.1: Clean ups and bugfixes for the pNFS read/writeback/commit code · 8dd37758
      Trond Myklebust 提交于
      Move more pnfs-isms out of the generic commit code.
      
      Bugfixes:
      
      - filelayout_scan_commit_lists doesn't need to get/put the lseg.
        In fact since it is run under the inode->i_lock, the lseg_put()
        can deadlock.
      
      - Ensure that we distinguish between what needs to be done for
        commit-to-data server and what needs to be done for commit-to-MDS
        using the new flag PG_COMMIT_TO_DS. Otherwise we may end up calling
        put_lseg() on a bucket for a struct nfs_page that got written
        through the MDS.
      
      - Fix a case where we were using list_del() on an nfs_page->wb_list
        instead of list_del_init().
      
      - filelayout_initiate_commit needs to call filelayout_commit_release
        on error instead of the mds_ops->rpc_release(). Otherwise it won't
        clear the commit lock.
      
      Cleanups:
      
      - Let the files layout manage the commit lists for the pNFS case.
        Don't expose stuff like pnfs_choose_commit_list, and the fact
        that the commit buckets hold references to the layout segment
        in common code.
      
      - Cast out the put_lseg() calls for the struct nfs_read/write_data->lseg
        into the pNFS layer from whence they came.
      
      - Let the pNFS layer manage the NFS_INO_PNFS_COMMIT bit.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: Fred Isaman <iisaman@netapp.com>
      8dd37758
  14. 06 3月, 2012 2 次提交