From: Steven Whitehouse <[email protected]> This reverts part of an earlier patch which tried to reclaim gfs2_bufdata structures too early and resulted in a "use after free" case (this bit from me). Also a change to not write out log headers unless we really need to (in the case of flushing nothing we don't need a header) from Bob. Signed-off-by: Steven Whitehouse <[email protected]> Signed-off-by: Bob Peterson <[email protected]> diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index 8fcfb78..f49a12e 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c @@ -237,10 +237,7 @@ static void gfs2_ail2_empty_one(struct gfs2_sbd *sdp, struct gfs2_ail *ai) list_del(&bd->bd_ail_st_list); list_del(&bd->bd_ail_gl_list); atomic_dec(&bd->bd_gl->gl_ail_count); - if (bd->bd_bh) - brelse(bd->bd_bh); - else - kmem_cache_free(gfs2_bufdata_cachep, bd); + brelse(bd->bd_bh); } } @@ -583,6 +580,7 @@ static void log_flush_commit(struct gfs2_sbd *sdp) struct list_head *head = &sdp->sd_log_flush_list; struct gfs2_log_buf *lb; struct buffer_head *bh; + int flushcount = 0; while (!list_empty(head)) { lb = list_entry(head->next, struct gfs2_log_buf, lb_list); @@ -599,9 +597,20 @@ static void log_flush_commit(struct gfs2_sbd *sdp) } else brelse(bh); kfree(lb); + flushcount++; } - log_write_header(sdp, 0, 0); + /* If nothing was journaled, the header is unplanned and unwanted. */ + if (flushcount) { + log_write_header(sdp, 0, 0); + } else { + unsigned int tail; + tail = current_tail(sdp); + + gfs2_ail1_empty(sdp, 0); + if (sdp->sd_log_tail != tail) + log_pull_tail(sdp, tail); + } } /** -- 1.5.1.2 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- References:
- [GFS2/DLM] Pre-pull Patch Posting
- From: [email protected]
- [PATCH] [GFS2] flush the glock completely in inode_go_sync
- From: [email protected]
- [PATCH] [DLM] fix a couple of races
- From: [email protected]
- [PATCH] [GFS2] kernel changes to support new gfs2_grow command
- From: [email protected]
- [PATCH] [GFS2] Kernel changes to support new gfs2_grow command (part 2)
- From: [email protected]
- [PATCH] [GFS2] use zero_user_page
- From: [email protected]
- [PATCH] [GFS2] Addendum patch 2 for gfs2_grow
- From: [email protected]
- [PATCH] [GFS2] Reduce size of struct gdlm_lock
- From: [email protected]
- [PATCH] [GFS2] Clean up inode number handling
- From: [email protected]
- [PATCH] [GFS2] Quotas non-functional - fix bug
- From: [email protected]
- [PATCH] [DLM] keep dlm from panicing when traversing rsb list in debugfs
- From: [email protected]
- [PATCH] [DLM] block scand during recovery [1/6]
- From: [email protected]
- [PATCH] [DLM] add lock timeouts and warnings [2/6]
- From: [email protected]
- [PATCH] [DLM] dlm_device interface changes [3/6]
- From: [email protected]
- [PATCH] [DLM] cancel in conversion deadlock [4/6]
- From: [email protected]
- [PATCH] [DLM] fix new_lockspace error exit [5/6]
- From: [email protected]
- [PATCH] [DLM] wait for config check during join [6/6]
- From: [email protected]
- [PATCH] [DLM] fix compile breakage
- From: [email protected]
- [PATCH] [GFS2] latest gfs2-nmw headers break userland build
- From: [email protected]
- [PATCH] [DLM] Compile fix
- From: [email protected]
- [PATCH] [DLM] timeout fixes
- From: [email protected]
- [PATCH] [DLM] canceling deadlocked lock
- From: [email protected]
- [PATCH] [DLM] dumping master locks
- From: [email protected]
- [PATCH] [DLM] show default protocol
- From: [email protected]
- [PATCH] [GFS2] Quotas non-functional - fix another bug
- From: [email protected]
- [PATCH] [GFS2] Make the log reserved blocks depend on block size
- From: [email protected]
- [PATCH] [DLM] fix socket shutdown
- From: [email protected]
- [PATCH] [GFS2] fix jdata issues
- From: [email protected]
- [PATCH] [GFS2] Fix sign problem in quota/statfs and cleanup _host structures
- From: [email protected]
- [PATCH] [GFS2] Add nanosecond timestamp feature
- From: [email protected]
- [PATCH] [DLM] fix reference counting
- From: [email protected]
- [PATCH] [DLM] variable allocation
- From: [email protected]
- [PATCH] [GFS2] Fix typo in rename of directories
- From: [email protected]
- [PATCH] [GFS2] Fix bug in error path of inode
- From: [email protected]
- [PATCH] [GFS2] Can't mount GFS2 file system on AoE device
- From: [email protected]
- [PATCH] [GFS2] Recovery for lost unlinked inodes
- From: [email protected]
- [PATCH] [GFS2] gfs2_lookupi() uninitialised var fix
- From: [email protected]
- [PATCH] [GFS2] set plock owner in GETLK info
- From: [email protected]
- [PATCH] [GFS2] return conflicts for GETLK
- From: [email protected]
- [PATCH] [GFS2] Fix deallocation issues
- From: [email protected]
- [PATCH] [DLM] don't require FS flag on all nodes
- From: [email protected]
- [PATCH] [GFS2] Journaled file write/unstuff bug
- From: [email protected]
- [PATCH] [GFS2] Remove bogus '\0' in rgrp.c
- From: [email protected]
- [PATCH] [GFS2] Use zero_user_page() in stuffed_readpage()
- From: [email protected]
- [PATCH] [GFS2] assertion failure after writing to journaled file, umount
- From: [email protected]
- [PATCH] [GFS2] Simplify multiple glock aquisition
- From: [email protected]
- [PATCH] [GFS2] Addendum to the journaled file/unmount patch
- From: [email protected]
- [PATCH] [GFS2] Fix gfs2_block_truncate_page err return
- From: [email protected]
- [PATCH] [DLM] Telnet to port 21064 can stop all lockspaces
- From: [email protected]
- [PATCH] [GFS2] inode size inconsistency
- From: [email protected]
- [PATCH] [GFS2] remounting w/o acl option leaves acls enabled
- From: [email protected]
- [PATCH] [GFS2] System won't suspend with GFS2 file system mounted
- From: [email protected]
- [PATCH] [GFS2] git-gfs2-nmw-build-fix
- From: [email protected]
- [PATCH] [GFS2] Obtaining no_formal_ino from directory entry
- From: [email protected]
- [PATCH] [GFS2] Remove i_mode passing from NFS File Handle
- From: [email protected]
- [PATCH] [DLM] dump more lock values
- From: [email protected]
- [GFS2/DLM] Pre-pull Patch Posting
- Prev by Date: [PATCH] [DLM] dump more lock values
- Next by Date: Re: [PATCH] mmc: at91_mci: fix hanging and rework to match flowcharts
- Previous by thread: [PATCH] [DLM] dump more lock values
- Next by thread: Re: [PATCH] [GFS2] Remove i_mode passing from NFS File Handle
- Index(es):