cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH] GFS2: fix jdata issues
Date: Mon, 04 Jun 2007 09:49:32 +0100	[thread overview]
Message-ID: <1180946972.25918.116.camel@quoit> (raw)
In-Reply-To: <20070601192137.GA8814@ether.msp.redhat.com>

Hi,

Now applied to the -nmw git tree. Thanks,

Steve.

On Fri, 2007-06-01 at 14:21 -0500, Benjamin Marzinski wrote:
> This is a patch for the first three issues of RHBZ #238162
> 
> The first issue is that when you allocate a new page for a file, it will not
> start off uptodate. This makes sense, since you haven't written anything to that
> part of the file yet.  Unfortunately, gfs2_pin() checks to make sure that the
> buffers are uptodate.  The solution to this is to mark the buffers uptodate in
> gfs2_commit_write(), after they have been zeroed out and have the data written
> into them.  I'm pretty confident with this fix, although it's not completely
> obvious that there is no problem with marking the buffers uptodate here.
> 
> The second issue is simply that you can try to pin a data buffer that is already
> on the incore log, and thus, already pinned. This patch checks to see if this
> buffer is already on the log, and exits databuf_lo_add() if it is, just like
> buf_lo_add() does.
> 
> The third issue is that gfs2_log_flush() doesn't do it's block accounting
> correctly.  Both metadata and journaled data are logged, but gfs2_log_flush()
> only compares the number of metadata blocks with the number of blocks to commit
> to the ondisk journal.  This patch also counts the journaled data blocks.
> 
> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
> 
> plain text document attachment (238162_mostly_fixed.patch)
> diff -urpN --exclude='cscope.*' --exclude-from=gfs2-2.6-nmw-070530-clean/Documentation/dontdiff gfs2-2.6-nmw-070530-clean/fs/gfs2/log.c gfs2-2.6-nmw-070530/fs/gfs2/log.c
> --- gfs2-2.6-nmw-070530-clean/fs/gfs2/log.c	2007-06-01 08:33:35.000000000 -0500
> +++ gfs2-2.6-nmw-070530/fs/gfs2/log.c	2007-06-01 10:17:00.000000000 -0500
> @@ -565,7 +565,7 @@ void gfs2_log_flush(struct gfs2_sbd *sdp
>  	INIT_LIST_HEAD(&ai->ai_ail1_list);
>  	INIT_LIST_HEAD(&ai->ai_ail2_list);
>  
> -	gfs2_assert_withdraw(sdp, sdp->sd_log_num_buf == sdp->sd_log_commited_buf);
> +	gfs2_assert_withdraw(sdp, sdp->sd_log_num_buf + sdp->sd_log_num_jdata == sdp->sd_log_commited_buf);
>  	gfs2_assert_withdraw(sdp,
>  			sdp->sd_log_num_revoke == sdp->sd_log_commited_revoke);
>  
> diff -urpN --exclude='cscope.*' --exclude-from=gfs2-2.6-nmw-070530-clean/Documentation/dontdiff gfs2-2.6-nmw-070530-clean/fs/gfs2/lops.c gfs2-2.6-nmw-070530/fs/gfs2/lops.c
> --- gfs2-2.6-nmw-070530-clean/fs/gfs2/lops.c	2007-06-01 08:33:35.000000000 -0500
> +++ gfs2-2.6-nmw-070530/fs/gfs2/lops.c	2007-06-01 10:17:00.000000000 -0500
> @@ -475,6 +475,8 @@ static void databuf_lo_add(struct gfs2_s
>  		tr->tr_num_buf++;
>  		list_add(&bd->bd_list_tr, &tr->tr_list_buf);
>  		gfs2_log_unlock(sdp);
> +		if (!list_empty(&le->le_list))
> +			return;
>  		gfs2_pin(sdp, bd->bd_bh);
>  		tr->tr_num_buf_new++;
>  	} else {
> diff -urpN --exclude='cscope.*' --exclude-from=gfs2-2.6-nmw-070530-clean/Documentation/dontdiff gfs2-2.6-nmw-070530-clean/fs/gfs2/ops_address.c gfs2-2.6-nmw-070530/fs/gfs2/ops_address.c
> --- gfs2-2.6-nmw-070530-clean/fs/gfs2/ops_address.c	2007-06-01 08:33:35.000000000 -0500
> +++ gfs2-2.6-nmw-070530/fs/gfs2/ops_address.c	2007-06-01 10:17:00.000000000 -0500
> @@ -50,6 +50,8 @@ static void gfs2_page_add_databufs(struc
>  		end = start + bsize;
>  		if (end <= from || start >= to)
>  			continue;
> +		if (gfs2_is_jdata(ip))
> +			set_buffer_uptodate(bh);
>  		gfs2_trans_add_bh(ip->i_gl, bh, 0);
>  	}
>  }



  reply	other threads:[~2007-06-04  8:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-01 19:21 [Cluster-devel] [PATCH] GFS2: fix jdata issues Benjamin Marzinski
2007-06-04  8:49 ` Steven Whitehouse [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-07-09 16:02 [Cluster-devel] [GFS2/DLM] Pre-pull Patch Posting swhiteho
2007-07-09 16:02 ` [Cluster-devel] [PATCH] [GFS2] flush the glock completely in inode_go_sync swhiteho
2007-07-09 16:02   ` [Cluster-devel] [PATCH] [DLM] fix a couple of races swhiteho
2007-07-09 16:02     ` [Cluster-devel] [PATCH] [GFS2] kernel changes to support new gfs2_grow command swhiteho
2007-07-09 16:02       ` [Cluster-devel] [PATCH] [GFS2] Kernel changes to support new gfs2_grow command (part 2) swhiteho
2007-07-09 16:02         ` [Cluster-devel] [PATCH] [GFS2] use zero_user_page swhiteho
2007-07-09 16:02           ` [Cluster-devel] [PATCH] [GFS2] Addendum patch 2 for gfs2_grow swhiteho
2007-07-09 16:02             ` [Cluster-devel] [PATCH] [GFS2] Reduce size of struct gdlm_lock swhiteho
2007-07-09 16:02               ` [Cluster-devel] [PATCH] [GFS2] Clean up inode number handling swhiteho
2007-07-09 16:02                 ` [Cluster-devel] [PATCH] [GFS2] Quotas non-functional - fix bug swhiteho
2007-07-09 16:02                   ` [Cluster-devel] [PATCH] [DLM] keep dlm from panicing when traversing rsb list in debugfs swhiteho
2007-07-09 16:02                     ` [Cluster-devel] [PATCH] [DLM] block scand during recovery [1/6] swhiteho
2007-07-09 16:02                       ` [Cluster-devel] [PATCH] [DLM] add lock timeouts and warnings [2/6] swhiteho
2007-07-09 16:02                         ` [Cluster-devel] [PATCH] [DLM] dlm_device interface changes [3/6] swhiteho
2007-07-09 16:02                           ` [Cluster-devel] [PATCH] [DLM] cancel in conversion deadlock [4/6] swhiteho
2007-07-09 16:02                             ` [Cluster-devel] [PATCH] [DLM] fix new_lockspace error exit [5/6] swhiteho
2007-07-09 16:02                               ` [Cluster-devel] [PATCH] [DLM] wait for config check during join [6/6] swhiteho
2007-07-09 16:02                                 ` [Cluster-devel] [PATCH] [DLM] fix compile breakage swhiteho
2007-07-09 16:02                                   ` [Cluster-devel] [PATCH] [GFS2] latest gfs2-nmw headers break userland build swhiteho
2007-07-09 16:02                                     ` [Cluster-devel] [PATCH] [DLM] Compile fix swhiteho
2007-07-09 16:02                                       ` [Cluster-devel] [PATCH] [DLM] timeout fixes swhiteho
2007-07-09 16:02                                         ` [Cluster-devel] [PATCH] [DLM] canceling deadlocked lock swhiteho
2007-07-09 16:02                                           ` [Cluster-devel] [PATCH] [DLM] dumping master locks swhiteho
2007-07-09 16:02                                             ` [Cluster-devel] [PATCH] [DLM] show default protocol swhiteho
2007-07-09 16:02                                               ` [Cluster-devel] [PATCH] [GFS2] Quotas non-functional - fix another bug swhiteho
2007-07-09 16:02                                                 ` [Cluster-devel] [PATCH] [GFS2] Make the log reserved blocks depend on block size swhiteho
2007-07-09 16:02                                                   ` [Cluster-devel] [PATCH] [DLM] fix socket shutdown swhiteho
2007-07-09 16:02                                                     ` [Cluster-devel] [PATCH] [GFS2] fix jdata issues swhiteho

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1180946972.25918.116.camel@quoit \
    --to=swhiteho@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).