1. 25 7月, 2018 5 次提交
    • A
      gfs2: fallocate_chunk: Always initialize struct iomap · c2589282
      Andreas Gruenbacher 提交于
      In fallocate_chunk, always initialize the iomap before calling
      gfs2_iomap_get_alloc: future changes could otherwise cause things like
      iomap.flags to leak across calls.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      Reviewed-by: NBob Peterson <rpeterso@redhat.com>
      c2589282
    • B
      GFS2: Fix recovery issues for spectators · 4a772772
      Bob Peterson 提交于
      This patch fixes a couple problems dealing with spectators who
      remain with gfs2 mounts after the last non-spectator node fails.
      
      Before this patch, spectator mounts would try to acquire the dlm's
      mounted lock EX as part of its normal recovery sequence.
      The mounted lock is only used to determine whether the node is
      the first mounter, the first node to mount the file system, for
      the purposes of file system recovery and journal replay.
      
      It's not necessary for spectators: they should never do journal
      recovery. If they acquire the lock it will prevent another "real"
      first-mounter from acquiring the lock in EX mode, which means it
      also cannot do journal recovery because it doesn't think it's the
      first node to mount the file system.
      
      This patch checks if the mounter is a spectator, and if so, avoids
      grabbing the mounted lock. This allows a secondary mounter who is
      really the first non-spectator mounter, to do journal recovery:
      since the spectator doesn't acquire the lock, it can grab it in
      EX mode, and therefore consider itself to be the first mounter
      both as a "real" first mount, and as a first-real-after-spectator.
      
      Note that the control lock still needs to be taken in PR mode
      in order to fetch the lvb value so it has the current status of
      all journal's recovery. This is used as it is today by a first
      mounter to replay the journals. For spectators, it's merely
      used to fetch the status bits. All recovery is bypassed and the
      node waits until recovery is completed by a non-spectator node.
      
      I also improved the cryptic message given by control_mount when
      a spectator is waiting for a non-spectator to perform recovery.
      
      It also fixes a problem in gfs2_recover_set whereby spectators
      were never queueing recovery work for their own journal.
      They cannot do recovery themselves, but they still need to queue
      the work so they can check the recovery bits and clear the
      DFL_BLOCK_LOCKS bit once the recovery happens on another node.
      
      When the work queue runs on a spectator, it bypasses most of the
      work so it won't print a bunch of annoying messages. All it will
      print is a bunch of messages that look like this until recovery
      completes on the non-spectator node:
      
      GFS2: fsid=mycluster:scratch.s: recover generation 3 jid 0
      GFS2: fsid=mycluster:scratch.s: recover jid 0 result busy
      
      These continue every 1.5 seconds until the recovery is done by
      the non-spectator, at which time it says:
      
      GFS2: fsid=mycluster:scratch.s: recover generation 4 done
      
      Then it proceeds with its mount.
      
      If the file system is mounted in spectator node and the last
      remaining non-spectator is fenced, any IO to the file system is
      blocked by dlm and the spectator waits until recovery is
      performed by a non-spectator.
      
      If a spectator tries to mount the file system before any
      non-spectators, it blocks and repeatedly gives this kernel
      message:
      
      GFS2: fsid=mycluster:scratch: Recovery is required. Waiting for a non-spectator to mount.
      GFS2: fsid=mycluster:scratch: Recovery is required. Waiting for a non-spectator to mount.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      4a772772
    • S
      fs: gfs2: Adding new return type vm_fault_t · 109dbb1e
      Souptick Joarder 提交于
      Use new return type vm_fault_t for gfs2_page_mkwrite
      handler.
      
      see commit 1c8f4220 ("mm: change return type to
      vm_fault_t") for reference.
      Signed-off-by: NSouptick Joarder <jrdr.linux@gmail.com>
      Reviewed-by: NMatthew Wilcox <mawilcox@microsoft.com>
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      109dbb1e
    • C
      gfs2: using posix_acl_xattr_size instead of posix_acl_to_xattr · 910f3d58
      Chengguang Xu 提交于
      It seems better to get size by calling posix_acl_xattr_size() instead of
      calling posix_acl_to_xattr() with NULL buffer argument.
      
      posix_acl_xattr_size() never returns 0, so remove the unnecessary check.
      Signed-off-by: NChengguang Xu <cgxu519@gmx.com>
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      910f3d58
    • B
      gfs2: Don't reject a supposedly full bitmap if we have blocks reserved · e79e0e14
      Bob Peterson 提交于
      Before this patch, you could get into situations like this:
      
      1. Process 1 searches for X free blocks, finds them, makes a reservation
      2. Process 2 searches for free blocks in the same rgrp, but now the
         bitmap is full because process 1's reservation is skipped over.
         So it marks the bitmap as GBF_FULL.
      3. Process 1 tries to allocate blocks from its own reservation, but
         since the GBF_FULL bit is set, it skips over the rgrp and searches
         elsewhere, thus not using its own reservation.
      
      This patch adds an additional check to allow processes to use their
      own reservations.
      Signed-off-by: NBob Peterson <rpeterso@redhat.com>
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      e79e0e14
  2. 05 7月, 2018 2 次提交
  3. 04 7月, 2018 3 次提交
  4. 02 7月, 2018 5 次提交
  5. 21 6月, 2018 5 次提交
  6. 20 6月, 2018 6 次提交
  7. 16 6月, 2018 2 次提交
  8. 15 6月, 2018 12 次提交
新手
引导
客服 返回
顶部