1. 06 12月, 2009 30 次提交
  2. 03 12月, 2009 10 次提交
    • S
      GFS2: Fix glock refcount issues · 26bb7505
      Steven Whitehouse 提交于
      This patch fixes some ref counting issues. Firstly by moving
      the point at which we drop the ref count after a dlm lock
      operation has completed we ensure that we never call
      gfs2_glock_hold() on a lock with a zero ref count.
      
      Secondly, by using atomic_dec_and_lock() in gfs2_glock_put()
      we ensure that at no time will a glock with zero ref count
      appear on the lru_list. That means that we can remove the
      check for this in our shrinker (which was racy).
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      26bb7505
    • W
      writeback: remove unused nonblocking and congestion checks (gfs2) · c29cd900
      Wu Fengguang 提交于
      No one is calling wb_writeback and write_cache_pages with
      wbc.nonblocking=1 any more. And lumpy pageout will want to do
      nonblocking writeback without the congestion wait.
      Signed-off-by: NWu Fengguang <fengguang.wu@intel.com>
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      c29cd900
    • B
      GFS2: drop rindex glock to refresh rindex list · 9ae3c6de
      Benjamin Marzinski 提交于
      When a gfs2 filesystem is grown, it needs to rebuild the rindex list to be able
      to use the new space.  gfs2 does this when the rindex is marked not uptodate,
      which happens when the rindex glock is dropped.  However, on a single node
      setup, there is never any reason to drop the rindex glock, so gfs2 never
      invalidates the the rindex. This patch makes gfs2 automatically drop the
      rindex glock after filesystem grows, so it can refresh the rindex list.
      Signed-off-by: NBenjamin Marzinski <bmarzins@redhat.com>
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      9ae3c6de
    • S
      GFS2: Tag all metadata with jid · 0ab7d13f
      Steven Whitehouse 提交于
      There are two spare field in the header common to all GFS2
      metadata. One is just the right size to fit a journal id
      in it, and this patch updates the journal code so that each
      time a metadata block is modified, we tag it with the journal
      id of the node which is performing the modification.
      
      The reason for this is that it should make it much easier to
      debug issues which arise if we can tell which node was the
      last to modify a particular metadata block.
      
      Since the field is updated before the block is written into
      the journal, each journal should only contain metadata which
      is tagged with its own journal id. The one exception to this
      is the journal header block, which might have a different node's
      id in it, if that journal was recovered by another node in the
      cluster.
      
      Thus each journal will contain a record of which nodes recovered
      it, via the journal header.
      
      The other field in the metadata header could potentially be
      used to hold information about what kind of operation was
      performed, but for the time being we just zero it on each
      transaction so that if we use it for that in future, we'll
      know that the information (where it exists) is reliable.
      
      I did consider using the other field to hold the journal
      sequence number, however since in GFS2's journaling we write
      the modified data into the journal and not the original
      data, this gives no information as to what action caused the
      modification, so I think we can probably come up with a better
      use for those 64 bits in the future.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      0ab7d13f
    • S
      GFS2: Locking order fix in gfs2_check_blk_state · 2c776349
      Steven Whitehouse 提交于
      In some cases we already have the rindex lock when
      we enter this function.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      2c776349
    • S
      GFS2: Remove dirent_first() function · 1579343a
      Steven Whitehouse 提交于
      This function only had one caller left, and that caller only
      called it for leaf blocks, hence one branch of the "if" was
      never taken. In addition the call to get_left had already
      verified the metadata type, so the function can be reduced
      to a single line of code in its caller.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      1579343a
    • S
      GFS2: Display nobarrier option in /proc/mounts · cdcfde62
      Steven Whitehouse 提交于
      Since the default is barriers on, this only displays the
      nobarrier option when that is active.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      cdcfde62
    • C
      GFS2: add barrier/nobarrier mount options · f25934c5
      Christoph Hellwig 提交于
      Currently gfs2 issues barrier unconditionally.  There are various reasons
      to disable them, be that just for testing or for stupid devices flushing
      large battert backed caches.  Add a nobarrier option that matches xfs and
      btrfs for this.  Also add a symmetric barrier option to turn it back on
      at remount time.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      f25934c5
    • B
      GFS2: remove division from new statfs code · c14f5735
      Benjamin Marzinski 提交于
      It's not necessary to do any 64bit division for the statfs sync code, so
      remove it.
      Signed-off-by: NBenjamin Marzinski <bmarzins@redhat.com>
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      c14f5735
    • B
      GFS2: Improve statfs and quota usability · 3d3c10f2
      Benjamin Marzinski 提交于
      GFS2 now has three new mount options, statfs_quantum, quota_quantum and
      statfs_percent.  statfs_quantum and quota_quantum simply allow you to
      set the tunables of the same name.  Setting setting statfs_quantum to 0
      will also turn on the statfs_slow tunable.  statfs_percent accepts an
      integer between 0 and 100.  Numbers between 1 and 100 will cause GFS2 to
      do any early sync when the local number of blocks free changes by at
      least statfs_percent from the totoal number of blocks free.  Setting
      statfs_percent to 0 disables this.
      Signed-off-by: NBenjamin Marzinski <bmarzins@redhat.com>
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      3d3c10f2