FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Cluster Development

 
 
LinkBack Thread Tools
 
Old 01-19-2011, 09:50 AM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following GFS2 bug fixes,

Steve.

------------------------------------------------------------------------------

The following changes since commit e6f597a1425b5af64917be3448b29e2d5a585ac8:

staging: fix build failure in bcm driver (2011-01-17 17:39:39 -0800)

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: remove iopen glocks from cache on failed deletes

Steven Whitehouse (1):
GFS2: Fix error path in gfs2_lookup_by_inum()

fs/gfs2/inode.c | 72 ++++++++++++++++--------------------------------------
fs/gfs2/inode.h | 1 -
fs/gfs2/super.c | 1 +
3 files changed, 23 insertions(+), 51 deletions(-)

-----------------------------------------------------------------------------
>From 23c3010808de86f21436eb822aacfa551bfc17e4 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 14 Jan 2011 22:39:16 -0600
Subject: [PATCH 1/2] GFS2: remove iopen glocks from cache on failed deletes

When a file gets deleted on GFS2, if a node can't get an exclusive lock on the
file's iopen glock, it punts on actually freeing up the space, because another
node is using the file. When it does this, it needs to drop the iopen glock
from its cache so that the other node can get an exclusive lock on it. Now,
gfs2_delete_inode() sets GL_NOCACHE before dropping the shared lock on the
iopen glock in preparation for grabbing it in the exclusive state. Since the
node needs the glock in the exclusive state, dropping the shared lock from the
cache doesn't slow down the case where no other nodes are using the file.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
index 16c2eca..ec73ed7 100644
--- a/fs/gfs2/super.c
+++ b/fs/gfs2/super.c
@@ -1336,6 +1336,7 @@ static void gfs2_evict_inode(struct inode *inode)
if (error)
goto out_truncate;

+ ip->i_iopen_gh.gh_flags |= GL_NOCACHE;
gfs2_glock_dq_wait(&ip->i_iopen_gh);
gfs2_holder_reinit(LM_ST_EXCLUSIVE, LM_FLAG_TRY_1CB | GL_NOCACHE, &ip->i_iopen_gh);
error = gfs2_glock_nq(&ip->i_iopen_gh);
--
1.7.3.3

------------------------------------------------------------------------------
>From 24d9765fc18c7838ccdbb0d71fb706321d9b824c Mon Sep 17 00:00:00 2001
From: Steven Whitehouse <swhiteho@redhat.com>
Date: Tue, 18 Jan 2011 14:49:08 +0000
Subject: [PATCH 2/2] GFS2: Fix error path in gfs2_lookup_by_inum()

In the (impossible, except if there is fs corruption) error path
in gfs2_lookup_by_inum() if the call to gfs2_inode_refresh()
fails, it was leaving the function by calling iput() rather
than iget_failed(). This would cause future lookups of the same
inode to block forever.

This patch fixes the problem by moving the call to gfs2_inode_refresh()
into gfs2_inode_lookup() where iget_failed() is part of the error path
already. Also this cleans up some unreachable code and makes
gfs2_set_iop() static.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 2232b3c..7aa7d4f 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -74,16 +74,14 @@ static struct inode *gfs2_iget(struct super_block *sb, u64 no_addr)
}

/**
- * GFS2 lookup code fills in vfs inode contents based on info obtained
- * from directory entry inside gfs2_inode_lookup(). This has caused issues
- * with NFS code path since its get_dentry routine doesn't have the relevant
- * directory entry when gfs2_inode_lookup() is invoked. Part of the code
- * segment inside gfs2_inode_lookup code needs to get moved around.
+ * gfs2_set_iop - Sets inode operations
+ * @inode: The inode with correct i_mode filled in
*
- * Clears I_NEW as well.
- **/
+ * GFS2 lookup code fills in vfs inode contents based on info obtained
+ * from directory entry inside gfs2_inode_lookup().
+ */

-void gfs2_set_iop(struct inode *inode)
+static void gfs2_set_iop(struct inode *inode)
{
struct gfs2_sbd *sdp = GFS2_SB(inode);
umode_t mode = inode->i_mode;
@@ -106,8 +104,6 @@ void gfs2_set_iop(struct inode *inode)
inode->i_op = &gfs2_file_iops;
init_special_inode(inode, inode->i_mode, inode->i_rdev);
}
-
- unlock_new_inode(inode);
}

/**
@@ -119,10 +115,8 @@ void gfs2_set_iop(struct inode *inode)
* Returns: A VFS inode, or an error
*/

-struct inode *gfs2_inode_lookup(struct super_block *sb,
- unsigned int type,
- u64 no_addr,
- u64 no_formal_ino)
+struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned int type,
+ u64 no_addr, u64 no_formal_ino)
{
struct inode *inode;
struct gfs2_inode *ip;
@@ -152,51 +146,37 @@ struct inode *gfs2_inode_lookup(struct super_block *sb,
error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh);
if (unlikely(error))
goto fail_iopen;
- ip->i_iopen_gh.gh_gl->gl_object = ip;

+ ip->i_iopen_gh.gh_gl->gl_object = ip;
gfs2_glock_put(io_gl);
io_gl = NULL;

- if ((type == DT_UNKNOWN) && (no_formal_ino == 0))
- goto gfs2_nfsbypass;
-
- inode->i_mode = DT2IF(type);
-
- /*
- * We must read the inode in order to work out its type in
- * this case. Note that this doesn't happen often as we normally
- * know the type beforehand. This code path only occurs during
- * unlinked inode recovery (where it is safe to do this glock,
- * which is not true in the general case).
- */
if (type == DT_UNKNOWN) {
- struct gfs2_holder gh;
- error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh);
- if (unlikely(error))
- goto fail_glock;
- /* Inode is now uptodate */
- gfs2_glock_dq_uninit(&gh);
+ /* Inode glock must be locked already */
+ error = gfs2_inode_refresh(GFS2_I(inode));
+ if (error)
+ goto fail_refresh;
+ } else {
+ inode->i_mode = DT2IF(type);
}

gfs2_set_iop(inode);
+ unlock_new_inode(inode);
}

-gfs2_nfsbypass:
return inode;
-fail_glock:
- gfs2_glock_dq(&ip->i_iopen_gh);
+
+fail_refresh:
+ ip->i_iopen_gh.gh_gl->gl_object = NULL;
+ gfs2_glock_dq_uninit(&ip->i_iopen_gh);
fail_iopen:
if (io_gl)
gfs2_glock_put(io_gl);
fail_put:
- if (inode->i_state & I_NEW)
- ip->i_gl->gl_object = NULL;
+ ip->i_gl->gl_object = NULL;
gfs2_glock_put(ip->i_gl);
fail:
- if (inode->i_state & I_NEW)
- iget_failed(inode);
- else
- iput(inode);
+ iget_failed(inode);
return ERR_PTR(error);
}

@@ -221,14 +201,6 @@ struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
if (IS_ERR(inode))
goto fail;

- error = gfs2_inode_refresh(GFS2_I(inode));
- if (error)
- goto fail_iput;
-
- /* Pick up the works we bypass in gfs2_inode_lookup */
- if (inode->i_state & I_NEW)
- gfs2_set_iop(inode);
-
/* Two extra checks for NFS only */
if (no_formal_ino) {
error = -ESTALE;
diff --git a/fs/gfs2/inode.h b/fs/gfs2/inode.h
index 732a183..3e00a66 100644
--- a/fs/gfs2/inode.h
+++ b/fs/gfs2/inode.h
@@ -96,7 +96,6 @@ err:
return -EIO;
}

-extern void gfs2_set_iop(struct inode *inode);
extern struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned type,
u64 no_addr, u64 no_formal_ino);
extern struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
--
1.7.3.3
 
Old 04-19-2011, 09:13 AM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following four GFS2 fixes,

Steve.

--------------------------------------------------------------------------------------

The following changes since commit a1b49cb7e2a7961ec3aa8b64860bf480d4ec9077:

Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging (2011-04-17 17:37:02 -0700)

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: directly write blocks past i_size

Bob Peterson (2):
GFS2: write_end error path fails to unlock transaction lock
GFS2: filesystem hang caused by incorrect lock order

Steven Whitehouse (1):
GFS2: Don't try to deallocate unlinked inodes when mounted ro

fs/gfs2/aops.c | 2 +-
fs/gfs2/dir.c | 2 +-
fs/gfs2/file.c | 58 +++++++++++++++++++++++++++++++++++++++++--------
fs/gfs2/glops.c | 4 +++
fs/gfs2/inode.c | 56 +++++++++++++++++++++++++++++++++++-------------
fs/gfs2/inode.h | 3 +-
fs/gfs2/ops_fstype.c | 2 +-
fs/gfs2/rgrp.c | 4 +-
fs/gfs2/super.c | 14 +++++++++--
9 files changed, 111 insertions(+), 34 deletions(-)
 
Old 05-23-2011, 02:05 PM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

These two changes just missed out on the last pull request. Please
consider pulling the following two fixes,

Steve.


-----------------------------------------------------------------------------
The following changes since commit c21fd1a8c68ce3f49b00caf10337169262cfb8ad:

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 (2011-05-21 00:13:03 -0700)

are available in the git repository at:

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

Steven Whitehouse (2):
GFS2: Wipe directory hash table metadata when deallocating a directory
GFS2: Wait properly when flushing the ail list

fs/gfs2/bmap.c | 2 ++
fs/gfs2/log.c | 29 ++++++++++++++++++++++++++---
fs/gfs2/rgrp.c | 4 ++++
3 files changed, 32 insertions(+), 3 deletions(-)
 
Old 07-14-2011, 03:16 PM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following three fixes,

Steve.

--------------------------------------------------------------------------------
The following changes since commit 620917de59eeb934b9f8cf35cc2d95c1ac8ed0fc:

Linux 3.0-rc7 (2011-07-11 16:51:52 -0700)

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: force a log flush when invalidating the rindex glock

Steven Whitehouse (2):
GFS2: Fix race during filesystem mount
GFS2: Resolve inode eviction and ail list interaction bug

fs/gfs2/aops.c | 3 +++
fs/gfs2/glops.c | 8 +++++---
fs/gfs2/incore.h | 2 ++
fs/gfs2/log.c | 1 +
fs/gfs2/ops_fstype.c | 3 +++
fs/gfs2/super.c | 36 ++++++++++++++++++++++++++++++------
fs/gfs2/sys.c | 7 ++++++-
7 files changed, 50 insertions(+), 10 deletions(-)
 
Old 07-27-2011, 10:00 AM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following patch. Since it is only one
small patch I attached it below rather than posting it separately
as usual,

Steve.

--------------------------------------------------------------------
The following changes since commit e08dc1325feaf49eec392ee52feb2974ec3f5155:

p9: avoid unused variable warning (2011-07-25 23:43:53 -0700)

are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git master

Steven Whitehouse (1):
GFS2: Fix mount hang caused by certain access pattern to sysfs files

fs/gfs2/ops_fstype.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

--------------------------------------------------------------

>From 19237039919088781b4191a00bdc1284d8fea1dd Mon Sep 17 00:00:00 2001
From: Steven Whitehouse <swhiteho@redhat.com>
Date: Tue, 26 Jul 2011 09:15:45 +0100
Subject: [PATCH] GFS2: Fix mount hang caused by certain access pattern to sysfs files

Depending upon the order of userspace/kernel during the
mount process, this can result in a hang without the
_all version of the completion.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index 516516e..3bc073a 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -1018,13 +1018,13 @@ hostdata_error:
fsname++;
if (lm->lm_mount == NULL) {
fs_info(sdp, "Now mounting FS...
");
- complete(&sdp->sd_locking_init);
+ complete_all(&sdp->sd_locking_init);
return 0;
}
ret = lm->lm_mount(sdp, fsname);
if (ret == 0)
fs_info(sdp, "Joined cluster. Now mounting FS...
");
- complete(&sdp->sd_locking_init);
+ complete_all(&sdp->sd_locking_init);
return ret;
}

--
1.7.4
 
Old 02-28-2012, 10:49 AM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following bug fixes,

Steve.
----------------------------------------------------------------------------

The following changes since commit 586c6e7013c8cbb8c91aaa6568ec349b1dc2c691:

Merge tag 'ktest-fix-make-min-failed-build-for-real' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-ktest (2012-02-27 15:43:05 -0800)

are available in the git repository at:

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

Bob Peterson (2):
GFS2: Read in rindex if necessary during unlink
GFS2: Ensure rindex is uptodate for fallocate

Steven Whitehouse (2):
GFS2: Fix race between lru_list and glock ref count
GFS2: Read resource groups on mount

fs/gfs2/glock.c | 14 ++++++++++----
fs/gfs2/inode.c | 5 +----
fs/gfs2/ops_fstype.c | 5 +++++
fs/gfs2/rgrp.c | 13 +++++++++----
4 files changed, 25 insertions(+), 12 deletions(-)
 
Old 04-11-2012, 10:18 AM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following patches,

Steve.

------------------------------------------------------------------------------
The following changes since commit dd775ae2549217d3ae09363e3edb305d0fa19928:

Linux 3.4-rc1 (2012-03-31 16:24:09 -0700)

are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git master

Benjamin Poirier (1):
GFS2: use depends instead of select in kconfig

Bob Peterson (3):
GFS2: put glock reference in error patch of read_rindex_entry
GFS2: Make sure rindex is uptodate before starting transactions
GFS2: Allow caching of rindex glock

fs/gfs2/Kconfig | 7 ++-----
fs/gfs2/aops.c | 4 ++--
fs/gfs2/bmap.c | 6 +++++-
fs/gfs2/dir.c | 4 ++++
fs/gfs2/inode.c | 13 +++++++++++--
fs/gfs2/rgrp.c | 8 +++++---
fs/gfs2/xattr.c | 12 ++++++++++++
7 files changed, 41 insertions(+), 13 deletions(-)
 
Old 04-11-2012, 10:21 AM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

[Apologies - I don't think the first message got signed as
it should have. Here is a second attempt...]

Hi,

Please consider pulling the following patches,

Steve.

------------------------------------------------------------------------------
The following changes since commit dd775ae2549217d3ae09363e3edb305d0fa19928:

Linux 3.4-rc1 (2012-03-31 16:24:09 -0700)

are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git master

Benjamin Poirier (1):
GFS2: use depends instead of select in kconfig

Bob Peterson (3):
GFS2: put glock reference in error patch of read_rindex_entry
GFS2: Make sure rindex is uptodate before starting transactions
GFS2: Allow caching of rindex glock

fs/gfs2/Kconfig | 7 ++-----
fs/gfs2/aops.c | 4 ++--
fs/gfs2/bmap.c | 6 +++++-
fs/gfs2/dir.c | 4 ++++
fs/gfs2/inode.c | 13 +++++++++++--
fs/gfs2/rgrp.c | 8 +++++---
fs/gfs2/xattr.c | 12 ++++++++++++
7 files changed, 41 insertions(+), 13 deletions(-)
 
Old 09-13-2012, 01:42 PM
Steven Whitehouse
 
Default GFS2: Pull request (fixes)

Hi,

Please consider pulling the following GFS2 fixes....

Steve.

--------------------------------------------------------------------------

Here are three GFS2 fixes for the current kernel tree. These are all
related to the block reservation code which was added at the merge
window. That code will be getting an update at the forthcoming merge
window too. In the mean time though there are a few smaller issues
which should be fixed.

The first patch resolves an issue with write sizes of greater than
32 bits with the size hinting code. The second ensures that the
allocation data structure is initialised when using xattrs and the
third takes into account allocations which may have been made by
other nodes which affect a reservation on the local node.

The following changes since commit 0d7614f09c1ebdbaa1599a5aba7593f147bf96ee:

Linux 3.6-rc1 (2012-08-02 16:38:10 -0700)

are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes.git master

Steven Whitehouse (3):
GFS2: Make write size hinting code common
GFS2: Fix missing allocation data for set/remove xattr
GFS2: Take account of blockages when using reserved blocks

fs/gfs2/file.c | 31 ++++++++++++++++++++++---
fs/gfs2/inode.c | 8 +++++-
fs/gfs2/rgrp.c | 66 +++++++++++++++++++++++-------------------------------
3 files changed, 61 insertions(+), 44 deletions(-)
 

Thread Tools




All times are GMT. The time now is 05:01 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org