1. 06 6月, 2020 8 次提交
    • A
      gfs2: Check inode generation number in delete_work_func · b0dcffd8
      Andreas Gruenbacher 提交于
      In delete_work_func, if the iopen glock still has an inode attached,
      limit the inode lookup to that specific generation number: in the likely
      case that the inode was deleted on the node on which the inode's link
      count dropped to zero, we can skip verifying the on-disk block type and
      reading in the inode.  The same applies if another node that had the
      inode open managed to delete the inode before us.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      b0dcffd8
    • A
      gfs2: Move inode generation number check into gfs2_inode_lookup · b66648ad
      Andreas Gruenbacher 提交于
      Move the inode generation number check from gfs2_lookup_by_inum into
      gfs2_inode_lookup: gfs2_inode_lookup may be able to decide that an inode with
      the given inode generation number cannot exist without having to verify the
      block type or reading the inode from disk.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      b66648ad
    • A
      gfs2: Minor gfs2_lookup_by_inum cleanup · 6bdcadea
      Andreas Gruenbacher 提交于
      Use a zero no_formal_ino instead of a NULL pointer to indicate that any inode
      generation number will qualify: a valid inode never has a zero no_formal_ino.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      6bdcadea
    • A
      gfs2: Try harder to delete inodes locally · 9e73330f
      Andreas Gruenbacher 提交于
      When an inode's link count drops to zero and the inode is cached on
      other nodes, the current behavior of gfs2 is to immediately give up and
      to rely on the other node(s) to delete the inode if there is iopen glock
      contention.  This leads to resource group glock bouncing and the loss of
      caching.  With the previous patches in place, we can fix that by not
      giving up immediately.
      
      When the inode is still open on other nodes, those nodes won't be able
      to evict the inode and give up the iopen glock.  In that case, our lock
      conversion request will time out.  The unlink system call will block for
      the duration of the iopen lock conversion request.  We're also holding
      the inode glock in EX mode for an extended duration, so other nodes
      won't be able to make progress on the inode, either.
      
      This is worse than what we had before, but we can prevent other nodes
      from getting stuck by aborting our iopen locking request if there is
      contention on the inode glock.  This will the the subject of a future
      patch.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      9e73330f
    • A
      gfs2: Give up the iopen glock on contention · 8c7b9262
      Andreas Gruenbacher 提交于
      When there's contention on the iopen glock, it means that the link count
      of the corresponding inode has dropped to zero on a remote node which is
      now trying to delete the inode.  In that case, try to evict the inode so
      that the iopen glock will be released, which will allow the remote node
      to do its job.
      
      When the inode is still open locally, the inode's reference count won't
      drop to zero and so we'll keep holding the inode and its iopen glock.
      The remote node will time out its request to grab the iopen glock, and
      when the inode is finally closed locally, we'll try to delete it
      ourself.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      8c7b9262
    • A
      gfs2: Turn gl_delete into a delayed work · a0e3cc65
      Andreas Gruenbacher 提交于
      This requires flushing delayed work items in gfs2_make_fs_ro (which is called
      before unmounting a filesystem).
      
      When inodes are deleted and then recreated, pending gl_delete work items would
      have no effect because the inode generations will have changed, so we can
      cancel any pending gl_delete works before reusing iopen glocks.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      a0e3cc65
    • A
      gfs2: Keep track of deleted inode generations in LVBs · f286d627
      Andreas Gruenbacher 提交于
      When deleting an inode, keep track of the generation of the deleted inode in
      the inode glock Lock Value Block (LVB).  When trying to delete an inode
      remotely, check the last-known inode generation against the deleted inode
      generation to skip duplicate remote deletes.  This avoids taking the resource
      group glock in order to verify the block type.
      Signed-off-by: NAndreas Gruenbacher <agruenba@redhat.com>
      f286d627
    • B
      15f2547b
  2. 25 5月, 2020 4 次提交
    • L
      Linux 5.7-rc7 · 9cb1fd0e
      Linus Torvalds 提交于
      9cb1fd0e
    • L
      Merge tag 'efi-urgent-2020-05-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 98790bba
      Linus Torvalds 提交于
      Pull EFI fixes from Thomas Gleixner:
       "A set of EFI fixes:
      
         - Don't return a garbage screen info when EFI framebuffer is not
           available
      
         - Make the early EFI console work properly with wider fonts instead
           of drawing garbage
      
         - Prevent a memory buffer leak in allocate_e820()
      
         - Print the firmware error record properly so it can be decoded by
           users
      
         - Fix a symbol clash in the host tool build which only happens with
           newer compilers.
      
         - Add a missing check for the event log version of TPM which caused
           boot failures on several Dell systems due to an attempt to decode
           SHA-1 format with the crypto agile algorithm"
      
      * tag 'efi-urgent-2020-05-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tpm: check event log version before reading final events
        efi: Pull up arch-specific prototype efi_systab_show_arch()
        x86/boot: Mark global variables as static
        efi: cper: Add support for printing Firmware Error Record Reference
        efi/libstub/x86: Avoid EFI map buffer alloc in allocate_e820()
        efi/earlycon: Fix early printk for wider fonts
        efi/libstub: Avoid returning uninitialized data from setup_graphics()
      98790bba
    • L
      Merge tag 'x86-urgent-2020-05-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 667b6249
      Linus Torvalds 提交于
      Pull x86 fixes from Thomas Gleixner:
       "Two fixes for x86:
      
         - Unbreak stack dumps for inactive tasks by interpreting the special
           first frame left by __switch_to_asm() correctly.
      
           The recent change not to skip the first frame so ORC and frame
           unwinder behave in the same way caused all entries to be
           unreliable, i.e. prepended with '?'.
      
         - Use cpumask_available() instead of an implicit NULL check of a
           cpumask_var_t in mmio trace to prevent a Clang build warning"
      
      * tag 'x86-urgent-2020-05-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/unwind/orc: Fix unwind_get_return_address_ptr() for inactive tasks
        x86/mmiotrace: Use cpumask_available() for cpumask_var_t variables
      667b6249
    • L
      Merge tag 'sched-urgent-2020-05-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9e61d12b
      Linus Torvalds 提交于
      Pull scheduler fixes from Thomas Gleixner:
       "A set of fixes for the scheduler:
      
         - Fix handling of throttled parents in enqueue_task_fair() completely.
      
           The recent fix overlooked a corner case where the first iteration
           terminates due to an entity already being on the runqueue which
           makes the list management incomplete and later triggers the
           assertion which checks for completeness.
      
         - Fix a similar problem in unthrottle_cfs_rq().
      
         - Show the correct uclamp values in procfs which prints the effective
           value twice instead of requested and effective"
      
      * tag 'sched-urgent-2020-05-24' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/fair: Fix unthrottle_cfs_rq() for leaf_cfs_rq list
        sched/debug: Fix requested task uclamp values shown in procfs
        sched/fair: Fix enqueue_task_fair() warning some more
      9e61d12b
  3. 24 5月, 2020 26 次提交
  4. 23 5月, 2020 2 次提交