diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:26:27 -0400 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-07 15:26:27 -0400 | 
| commit | 5cefcab3db2b13093480f2a42bf081574dd72d3d (patch) | |
| tree | c3755a241553436a1b84d65ad3c00f77ce6d02ad /fs/gfs2/lops.c | |
| parent | 5f757f91e70a97eda8f0cc13bddc853209b2d173 (diff) | |
| parent | 37fde8ca6c60ea61f5e9d7cb877c25ac60e74167 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw
* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (34 commits)
  [GFS2] Uncomment sprintf_symbol calling code
  [DLM] lowcomms style
  [GFS2] printk warning fixes
  [GFS2] Patch to fix mmap of stuffed files
  [GFS2] use lib/parser for parsing mount options
  [DLM] Lowcomms nodeid range & initialisation fixes
  [DLM] Fix dlm_lowcoms_stop hang
  [DLM] fix mode munging
  [GFS2] lockdump improvements
  [GFS2] Patch to detect corrupt number of dir entries in leaf and/or inode blocks
  [GFS2] bz 236008: Kernel gpf doing cat /debugfs/gfs2/xxx (lock dump)
  [DLM] fs/dlm/ast.c should #include "ast.h"
  [DLM] Consolidate transport protocols
  [DLM] Remove redundant assignment
  [GFS2] Fix bz 234168 (ignoring rgrp flags)
  [DLM] change lkid format
  [DLM] interface for purge (2/2)
  [DLM] add orphan purging code (1/2)
  [DLM] split create_message function
  [GFS2] Set drop_count to 0 (off) by default
  ...
Diffstat (limited to 'fs/gfs2/lops.c')
| -rw-r--r-- | fs/gfs2/lops.c | 20 | 
1 files changed, 11 insertions, 9 deletions
diff --git a/fs/gfs2/lops.c b/fs/gfs2/lops.c index 16bb4b4561ae..f82d84d05d23 100644 --- a/fs/gfs2/lops.c +++ b/fs/gfs2/lops.c  | |||
| @@ -33,16 +33,17 @@ static void glock_lo_add(struct gfs2_sbd *sdp, struct gfs2_log_element *le) | |||
| 33 | 33 | ||
| 34 | tr->tr_touched = 1; | 34 | tr->tr_touched = 1; | 
| 35 | 35 | ||
| 36 | if (!list_empty(&le->le_list)) | ||
| 37 | return; | ||
| 38 | |||
| 39 | gl = container_of(le, struct gfs2_glock, gl_le); | 36 | gl = container_of(le, struct gfs2_glock, gl_le); | 
| 40 | if (gfs2_assert_withdraw(sdp, gfs2_glock_is_held_excl(gl))) | 37 | if (gfs2_assert_withdraw(sdp, gfs2_glock_is_held_excl(gl))) | 
| 41 | return; | 38 | return; | 
| 42 | gfs2_glock_hold(gl); | ||
| 43 | set_bit(GLF_DIRTY, &gl->gl_flags); | ||
| 44 | 39 | ||
| 45 | gfs2_log_lock(sdp); | 40 | gfs2_log_lock(sdp); | 
| 41 | if (!list_empty(&le->le_list)){ | ||
| 42 | gfs2_log_unlock(sdp); | ||
| 43 | return; | ||
| 44 | } | ||
| 45 | gfs2_glock_hold(gl); | ||
| 46 | set_bit(GLF_DIRTY, &gl->gl_flags); | ||
| 46 | sdp->sd_log_num_gl++; | 47 | sdp->sd_log_num_gl++; | 
| 47 | list_add(&le->le_list, &sdp->sd_log_le_gl); | 48 | list_add(&le->le_list, &sdp->sd_log_le_gl); | 
| 48 | gfs2_log_unlock(sdp); | 49 | gfs2_log_unlock(sdp); | 
| @@ -415,13 +416,14 @@ static void rg_lo_add(struct gfs2_sbd *sdp, struct gfs2_log_element *le) | |||
| 415 | 416 | ||
| 416 | tr->tr_touched = 1; | 417 | tr->tr_touched = 1; | 
| 417 | 418 | ||
| 418 | if (!list_empty(&le->le_list)) | ||
| 419 | return; | ||
| 420 | |||
| 421 | rgd = container_of(le, struct gfs2_rgrpd, rd_le); | 419 | rgd = container_of(le, struct gfs2_rgrpd, rd_le); | 
| 422 | gfs2_rgrp_bh_hold(rgd); | ||
| 423 | 420 | ||
| 424 | gfs2_log_lock(sdp); | 421 | gfs2_log_lock(sdp); | 
| 422 | if (!list_empty(&le->le_list)){ | ||
| 423 | gfs2_log_unlock(sdp); | ||
| 424 | return; | ||
| 425 | } | ||
| 426 | gfs2_rgrp_bh_hold(rgd); | ||
| 425 | sdp->sd_log_num_rg++; | 427 | sdp->sd_log_num_rg++; | 
| 426 | list_add(&le->le_list, &sdp->sd_log_le_rg); | 428 | list_add(&le->le_list, &sdp->sd_log_le_rg); | 
| 427 | gfs2_log_unlock(sdp); | 429 | gfs2_log_unlock(sdp); | 
