[Cluster-devel] [PATCH 1/4] GFS2: Fix refcnt leak on gfs2_follow_link() error path

2010-02-02 Thread Steven Whitehouse
From: OGAWA Hirofumi hirof...@mail.parknet.co.jp

If -follow_link handler return the error, it should decrement
nd-path refcnt.

This patch fix it.

Signed-off-by: OGAWA Hirofumi hirof...@mail.parknet.co.jp
Signed-off-by: Steven Whitehouse swhit...@redhat.com
---
 fs/gfs2/ops_inode.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/gfs2/ops_inode.c b/fs/gfs2/ops_inode.c
index 78f73ca..84350e1 100644
--- a/fs/gfs2/ops_inode.c
+++ b/fs/gfs2/ops_inode.c
@@ -1088,7 +1088,8 @@ static void *gfs2_follow_link(struct dentry *dentry, 
struct nameidata *nd)
error = vfs_follow_link(nd, buf);
if (buf != array)
kfree(buf);
-   }
+   } else
+   path_put(nd-path);
 
return ERR_PTR(error);
 }
-- 
1.6.2.5



[Cluster-devel] [PATCH 4/4] GFS2: Use GFP_NOFS for alloc structure

2010-02-02 Thread Steven Whitehouse
This is called under a glock, so its a good plan to use GFP_NOFS

Signed-off-by: Steven Whitehouse swhit...@redhat.com
---
 fs/gfs2/rgrp.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 46534a5..503b842 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -911,7 +911,7 @@ void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd)
 struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip)
 {
BUG_ON(ip-i_alloc != NULL);
-   ip-i_alloc = kzalloc(sizeof(struct gfs2_alloc), GFP_KERNEL);
+   ip-i_alloc = kzalloc(sizeof(struct gfs2_alloc), GFP_NOFS);
return ip-i_alloc;
 }
 
-- 
1.6.2.5



[Cluster-devel] [PATCH 2/4] GFS2: Don't withdraw on partial rindex entries

2010-02-02 Thread Steven Whitehouse
From: Benjamin Marzinski bmarz...@redhat.com

ince gfs2 writes the rindex file a block at a time, and releases the
exclusive lock after each block, it is possible that another process
will grab the lock in the middle of the write.  Since rindex entries are
not an even divisor of blocks, that other process may see partial
entries.  On grows, this is fine.  The process can simply ignore the the
partial entires. Previously, the code withdrew when it saw partial
entries. Now it simply ignores them.

Signed-off-by: Benjamin Marzinski bmarz...@redhat.com
Signed-off-by: Steven Whitehouse swhit...@redhat.com
---
 fs/gfs2/rgrp.c |5 -
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 0608f49..6702b82 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -591,11 +591,6 @@ static int gfs2_ri_update(struct gfs2_inode *ip)
u64 rgrp_count = ip-i_disksize;
int error;
 
-   if (do_div(rgrp_count, sizeof(struct gfs2_rindex))) {
-   gfs2_consist_inode(ip);
-   return -EIO;
-   }
-
clear_rgrpdi(sdp);
 
file_ra_state_init(ra_state, inode-i_mapping);
-- 
1.6.2.5



[Cluster-devel] [PATCH 3/4] GFS2: Fix previous patch

2010-02-02 Thread Steven Whitehouse
The do_div() call needs to remain.

Signed-off-by: Steven Whitehouse swhit...@redhat.com
---
 fs/gfs2/rgrp.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 6702b82..46534a5 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -591,6 +591,7 @@ static int gfs2_ri_update(struct gfs2_inode *ip)
u64 rgrp_count = ip-i_disksize;
int error;
 
+   do_div(rgrp_count, sizeof(struct gfs2_rindex));
clear_rgrpdi(sdp);
 
file_ra_state_init(ra_state, inode-i_mapping);
-- 
1.6.2.5



[Cluster-devel] [GFS2] Pull request (fixes)

2010-02-02 Thread Steven Whitehouse
Hi,

Please consider pulling the following patches,

Steve.


The following changes since commit 066000dd856709b6980123eb39b957fe26993f7b:
  Ananth N Mavinakayanahalli (1):
Revert x86, apic: Use logical flat on intel with = 8 logical cpus

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git master

Benjamin Marzinski (1):
  GFS2: Don't withdraw on partial rindex entries

OGAWA Hirofumi (1):
  GFS2: Fix refcnt leak on gfs2_follow_link() error path

Steven Whitehouse (2):
  GFS2: Fix previous patch
  GFS2: Use GFP_NOFS for alloc structure

 fs/gfs2/ops_inode.c |3 ++-
 fs/gfs2/rgrp.c  |8 ++--
 2 files changed, 4 insertions(+), 7 deletions(-)




[Cluster-devel] Organizing Bug Squash Party for Cluster 3.x, GFS2 and more

2010-02-02 Thread Fabio M. Di Nitto
Hi everybody,

this is the first time that we are trying to organize this kind of event
and we would like to hear opinions and ideas from everybody.

Because this is a bit of uncharted territory for us (upstream), I don´t
want to set too high expectations from the very first round, but hey..
let´s try and see what happens.

The general idea is to have a 24 hours work together with upstream to
find bugs, test quick fixes and provide all sort of feedback (even HEY
THIS SOFTWARE SUCKS is good feedback if you can tell us why and where
we need to improve).

I don´t want to restrict this bug squash party to only Red Hat Cluster
and GFS2. If other upstreams (pacemaker, OCFS2, drbd, corosync, openais,
conga, you name it) wants to join, please do so. This is an open
invitation. Feel free to forward this idea around as long as I am at
least CC´ed to keep track of participants.

Assuming there is interest in the event, let´s take a look at some
simple practical details:

- When is this going to happen? I am targeting the 2nd of March as
candidate date. Starting at 00:00 UTC and finishing at 23:59 UTC. Some
areas will have more coverages, others a bit less. If there will be a
next time, we will move the window around to facilitate other time zones.

- What should be tested? Anything really.. do whatever you think your
cluster should be able to do.

- What kind of hardware should be used? Again.. anything you want to put
in the test cluster. Virtual machines? bare metal.. you decide.

- We will get any help to configure the cluster? It depends. This is not
a training session, but mostly a dedicate tour to fix bugs. We don´t
want to exclude anyone but it´s best if you have already some experience
with clustering.

- As team we don´t have a 24h coverage around the world yet. We are
working to plan shifts to have at least one maintainer for each
component/subsystem available at any time. We will post what´s the best
coverage later on.

- In order to coordinate the event, we will use #linux-cluster IRC
channel on freenode.

- All issues found or features reported should be filed in the
appropriate bug tracker. It´s important to have track in case a fix or a
change cannot be provided within the 24h time frame.

- Be ready to trash your test cluster.

- Be ready to test and report back with information. As much as possible
we will try to provide patches and packages (read below) that people can
quickly install and use for testing.

- Distribution of choice: as best as we can, we would like to help as
many distributions as possible, but there are some practical limits.
We can easily provide binary packages for Fedora 12 and Fedora rawhide.
I am in the process to setup Debian and Ubuntu build machines, but
whenever possible, it´s best if you can build your own binary packages
to offload the team from this task.

- We will assume that the base version to start testing is the latest
upstream release version at the time (excluding kernel). It might be too
time consuming to look into bugs that might have been already fixed.

- Kernel bits.. This is clearly more complex to test and build if you
are less familiar with kernel and distribution packaging. We will work
on the base of the latest kernel available for your specific
distribution. Please make sure to have a URL handy to the source code
for us to look at.

Please feel free to add anything I might have missed.

Cheers
Fabio