1. 24 8月, 2009 1 次提交
  2. 18 8月, 2009 1 次提交
    • W
      GFS2: free disk inode which is deleted by remote node -V2 · 970343cd
      Wengang Wang 提交于
      this patch is for the same problem that Benjamin Marzinski fixes at commit
      b94a170e
      
      quotation of the original problem:
      
      ---cut here---
      When a file is deleted from a gfs2 filesystem on one node, a dcache
      entry for it may still exist on other nodes in the cluster. If this
      happens, gfs2 will be unable to free this file on disk. Because of this,
      it's possible to have a gfs2 filesystem with no files on it and no free
      space. With this patch, when a node receives a callback notifying it
      that the file is being deleted on another node, it schedules a new
      workqueue thread to remove the file's dcache entry.
      ---end cut---
      
      after applying Benjamin's patch, I think there is still a case in which the disk
      inode remains even when "no space" is hit. the case is that when running
      d_prune_aliases() against the inode, there are one or more dentries(aliases)
      which have reference count number > 0. in this case the dentries won't be pruned.
      and even later, the reference count becomes to 0, the dentries can still be
      cached in memory. unfortunately, no callback come again, things come back to
      the state before the callback runs. thus the on disk inode remains there until
      in memoryinode is removed for some other reason(shrinking inode cache or unmount
      the volume..).
      
      this patch is to remove those dentries when their reference count becomes to 0 and
      the inode is deleted by remote node. for implementation, gfs2_dentry_delete() is
      added as dentry_operations.d_delete. the function returns true when the inode is
      deleted by remote node. in dput(), gfs2_dentry_delete() is called and since it
      returns true, the dentry is unhashed from dcache and then removed. when all dentries
      are removed, the in memory inode get removed so that the on disk inode is freed.
      Signed-off-by: NWengang Wang <wen.gang.wang@oracle.com>
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      970343cd
  3. 17 8月, 2009 5 次提交
  4. 14 8月, 2009 1 次提交
  5. 30 7月, 2009 7 次提交
  6. 13 7月, 2009 1 次提交
    • L
      tracing/events: Move TRACE_SYSTEM outside of include guard · d0b6e04a
      Li Zefan 提交于
      If TRACE_INCLDUE_FILE is defined, <trace/events/TRACE_INCLUDE_FILE.h>
      will be included and compiled, otherwise it will be
      <trace/events/TRACE_SYSTEM.h>
      
      So TRACE_SYSTEM should be defined outside of #if proctection,
      just like TRACE_INCLUDE_FILE.
      
      Imaging this scenario:
      
       #include <trace/events/foo.h>
          -> TRACE_SYSTEM == foo
       ...
       #include <trace/events/bar.h>
          -> TRACE_SYSTEM == bar
       ...
       #define CREATE_TRACE_POINTS
       #include <trace/events/foo.h>
          -> TRACE_SYSTEM == bar !!!
      
      and then bar.h will be included and compiled.
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <4A5A9CF1.2010007@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d0b6e04a
  7. 19 6月, 2009 1 次提交
  8. 12 6月, 2009 4 次提交
  9. 10 6月, 2009 2 次提交
  10. 05 6月, 2009 1 次提交
  11. 03 6月, 2009 1 次提交
  12. 02 6月, 2009 1 次提交
  13. 26 5月, 2009 2 次提交
    • S
      GFS2: Remove args subdir from gfs2 sysfs files · f6eb5349
      Steven Whitehouse 提交于
      Since we can cat /proc/mounts there is no need to have this
      subdirectory in the gfs2 sysfs files. In fact this does not
      reflect the full range of possible mount argumenmts, where
      as /proc/mounts does.
      
      There was only one userland user of this set of sysfs files
      and it will function perfectly well without these files
      being present (in fact that subcommand of gfs2_tool is
      obsolete anyway).
      
      The tune/* subdirectory is also considered mostly obsolete,
      but there are a few uses of this until mount arguments can
      be added for the last few functions for which there are no
      equivalents currently. However the tune/* directory is still
      in my sights and new code should avoid using it. Only the gfs2_quota
      and gfs2_tool programs are know to use tune/* at the moment.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      f6eb5349
    • S
      GFS2: Remove lockstruct subdir from gfs2 sysfs files · e1b28aab
      Steven Whitehouse 提交于
      The lockstruct sub directory contained two entries, both of
      which are duplicated elsewhere in the gfs2 sysfs files as
      well as being available via /proc/mounts. There is no userland program
      using either of them, so this patch removes them.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      e1b28aab
  14. 23 5月, 2009 1 次提交
  15. 22 5月, 2009 5 次提交
  16. 21 5月, 2009 2 次提交
    • S
      GFS2: Be more aggressive in reclaiming unlinked inodes · 1ce97e56
      Steven Whitehouse 提交于
      This patch increases the frequency with which gfs2 looks
      for unlinked, but still allocated inodes. Its the equivalent
      operation to ext3's orphan list, but done with bitmaps in
      the resource groups.
      
      This also fixes a bug where a field in the rgrp was too small.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      1ce97e56
    • S
      GFS2: Add a rgrp bitmap full flag · 60a0b8f9
      Steven Whitehouse 提交于
      During block allocation, it is useful to know if sections of disk
      are full on a finer grained basis than a single resource group.
      This can make a performance difference when resource groups have
      larger numbers of bitmap blocks, since we no longer have to search
      them all block by block in each individual bitmap.
      
      The full flag is set on a per-bitmap basis when it has been
      searched and found to have no free space. It is then skipped in
      subsequent searches until the flag is reset. The resetting
      occurs if we have to drop the glock on the resource group for any
      reason, or if we deallocate some blocks within that resource
      group and thus free up some space.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      60a0b8f9
  17. 20 5月, 2009 1 次提交
    • S
      GFS2: Improve resource group error handling · 09010978
      Steven Whitehouse 提交于
      This patch improves the error handling in the case where we
      discover that the summary information in the resource group
      doesn't match the bitmap information while in the process of
      allocating blocks. Originally this resulted in a kernel bug,
      but this patch changes that so that we return -EIO and print
      some messages explaining what went wrong, and how to fix it.
      
      We also remember locally not to try and allocate from the
      same rgrp again, so that a subsequent allocation in a
      different rgrp should succeed.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      09010978
  18. 19 5月, 2009 2 次提交
    • S
      GFS2: Don't warn when delete inode fails on ro filesystem · ef9e8b14
      Steven Whitehouse 提交于
      If the filesystem is read-only, then we expect that delete inode
      will fail, so there is no need to warn about it.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      ef9e8b14
    • S
      GFS2: Umount recovery race fix · fe64d517
      Steven Whitehouse 提交于
      This patch fixes a race condition where we can receive recovery
      requests part way through processing a umount. This was causing
      problems since the recovery thread had already gone away.
      
      Looking in more detail at the recovery code, it was really trying
      to implement a slight variation on a work queue, and that happens to
      align nicely with the recently introduced slow-work subsystem. As a
      result I've updated the code to use slow-work, rather than its own home
      grown variety of work queue.
      
      When using the wait_on_bit() function, I noticed that the wait function
      that was supplied as an argument was appearing in the WCHAN field, so
      I've updated the function names in order to produce more meaningful
      output.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      fe64d517
  19. 13 5月, 2009 1 次提交