All of lore.kernel.org
 help / color / mirror / Atom feed
* GFS2: Pull request (fixes)
@ 2011-05-23 14:05 ` Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2011-05-23 14:05 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

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(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* [Cluster-devel] GFS2: Pull request (fixes)
@ 2011-05-23 14:05 ` Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2011-05-23 14:05 UTC (permalink / raw)
  To: cluster-devel.redhat.com

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(-)




^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2014-09-16 10:11 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2014-09-16 10:11 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1691 bytes --]

Hi,

Please consider pulling the following fixes for GFS2,

Steve.

--------------------------------------------------------------------------------
The following changes since commit 372b1dbdd1fb5697890b937228d93cfd9c734c90:

  Merge branch 'for-linus' of git://git.samba.org/sfrench/cifs-2.6 (2014-08-20 18:33:21 -0500)

are available in the git repository at:


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

for you to fetch changes up to cfb2f9d5c921e38b0f12bb26fed10b877664444d:

  GFS2: fix d_splice_alias() misuses (2014-09-12 20:58:55 +0100)

----------------------------------------------------------------
Here are a number of small fixes for GFS2. There is a fix for FIEMAP
on large sparse files, a negative dentry hashing fix, a fix for
flock, and a bug fix relating to d_splice_alias usage. There are
also (patches 1 and 5) a couple of updates which are less
critical, but small and low risk.

----------------------------------------------------------------
Al Viro (1):
      GFS2: fix d_splice_alias() misuses

Benjamin Coddington (1):
      GFS2: Hash the negative dentry during inode lookup

Bob Peterson (2):
      GFS2: Change maxlen variables to size_t
      GFS2: Request demote when a "try" flock fails

Fabian Frederick (1):
      GFS2: fs/gfs2/super.c: replace seq_printf by seq_puts

Jan Kara (1):
      GFS2: Don't use MAXQUOTAS value

 fs/gfs2/bmap.c   |  9 +++++----
 fs/gfs2/file.c   | 15 ++++++++++++---
 fs/gfs2/incore.h |  7 +++++--
 fs/gfs2/inode.c  |  9 ++++++---
 fs/gfs2/super.c  | 20 ++++++++++----------
 5 files changed, 38 insertions(+), 22 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2014-07-18 11:21 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2014-07-18 11:21 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1593 bytes --]

The following changes since commit 3c8fb50445833b93f69b6b703a29aae3523cad0c:

  Merge tag 'pm+acpi-3.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm (2014-06-19 18:58:57 -1000)

are available in the git repository at:


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

for you to fetch changes up to 27ff6a0f7f5bf500e9d2a8760c062789b52c551f:

  GFS2: fs/gfs2/rgrp.c: kernel-doc warning fixes (2014-07-18 11:15:14 +0100)

----------------------------------------------------------------
This patch set contains two minor docs/spelling fixes, some fixes for
flock, a change to use GFP_NOFS to avoid recursion on a rarely used
code path and a fix for a race relating to the glock lru.

----------------------------------------------------------------
Bob Peterson (3):
      GFS2: Only wait for demote when last holder is dequeued
      GFS2: Allow flocks to use normal glock dq rather than dq_wait
      GFS2: Allow caching of glocks for flock

Fabian Frederick (2):
      GFS2: replace count*size kzalloc by kcalloc
      GFS2: fs/gfs2/rgrp.c: kernel-doc warning fixes

Geert Uytterhoeven (1):
      GFS2: memcontrol: Spelling s/invlidate/invalidate/

Steven Whitehouse (2):
      GFS2: Fix race in glock lru glock disposal
      GFS2: Use GFP_NOFS when allocating glocks

 fs/gfs2/file.c     |  4 ++--
 fs/gfs2/glock.c    | 14 +++++++++-----
 fs/gfs2/glops.c    |  4 ++--
 fs/gfs2/lock_dlm.c |  4 ++--
 fs/gfs2/rgrp.c     |  4 ++--
 5 files changed, 17 insertions(+), 13 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2014-01-02 12:41 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2014-01-02 12:41 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1845 bytes --]

Hi,

Please consider pulling the following bug fixes,

Steve.

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

The following changes since commit 7e3528c3660a2e8602abc7858b0994d611f74bc3:

  slab.h: remove duplicate kmalloc declaration and fix kernel-doc warnings (2013-11-24 11:01:16 -0800)

are available in the git repository at:

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

for you to fetch changes up to 0b3a2c9968d453d5827e635a6f3d69129f70af66:

  GFS2: Fix unsafe dereference in dump_holder() (2014-01-02 12:18:04 +0000)

----------------------------------------------------------------
Here is a set of small fixes for GFS2. There is a fix to drop
s_umount which is copied in from the core vfs, two patches
relate to a hard to hit "use after free" and memory leak.
Two patches related to using DIO and buffered I/O on the same
file to ensure correct operation in relation to glock state
changes. The final patch adds an RCU read lock to ensure
correct locking on an error path.

----------------------------------------------------------------
Bob Peterson (2):
      GFS2: Fix use-after-free race when calling gfs2_remove_from_ail
      GFS2: Fix slab memory leak in gfs2_bufdata

Steven Whitehouse (3):
      GFS2: don't hold s_umount over blkdev_put
      GFS2: Fix incorrect invalidation for DIO/buffered I/O
      GFS2: Wait for async DIO in glock state changes

Tetsuo Handa (1):
      GFS2: Fix unsafe dereference in dump_holder()

 fs/gfs2/aops.c       | 30 ++++++++++++++++++++++++++++++
 fs/gfs2/glock.c      |  2 ++
 fs/gfs2/glops.c      | 10 ++++++++--
 fs/gfs2/log.c        |  4 ++--
 fs/gfs2/meta_io.c    |  5 +++++
 fs/gfs2/ops_fstype.c | 12 +++++++++++-
 6 files changed, 58 insertions(+), 5 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-11-22 10:39 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-11-22 10:39 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1061 bytes --]

Hi,

Please consider pulling the following fixes,

Steve.

--------------------------------------------------------------------
The following changes since commit ea0341e071527d5cec350917b01ab901af09d758:

  GFS2: Fix ref count bug relating to atomic_open (2013-11-21 18:47:57 +0000)

are available in the git repository at:

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

for you to fetch changes up to ea0341e071527d5cec350917b01ab901af09d758:

  GFS2: Fix ref count bug relating to atomic_open (2013-11-21 18:47:57 +0000)

----------------------------------------------------------------
A couple of small, but important bug fixes for GFS2. The first one
fixes a possible NULL pointer dereference, and the second one
resolves a reference counting issue in one of the lesser used paths
through atomic_open.

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

 fs/gfs2/glock.c |    3 ++-
 fs/gfs2/inode.c |    5 ++++-
 2 files changed, 6 insertions(+), 2 deletions(-)



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GFS2: Pull request (fixes)
  2013-08-19  9:26 Steven Whitehouse
@ 2013-08-19 16:33 ` Linus Torvalds
  0 siblings, 0 replies; 40+ messages in thread
From: Linus Torvalds @ 2013-08-19 16:33 UTC (permalink / raw)
  To: Steven Whitehouse; +Cc: Linux Kernel Mailing List, cluster-devel

On Mon, Aug 19, 2013 at 2:26 AM, Steven Whitehouse <swhiteho@redhat.com> wrote:
> Oops, forgot to sign this when I sent it first, so here is a signed copy of it.

Please sign the git tag instead of the email. There are no sane tools
to check email signatures etc, but git signed tags not only check your
pgp key signature, they also allow you to just write the message into
the tag.

Also, please don't do crap like this:

> are available in the git repository at:
>
>   https://git.kernel.org/cgit/linux/kernel/git/steve/gfs2-3.0-fixes.git master

Yeah, no. The proper address is

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

not that cgit web page.

                 Linus

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-08-19  9:26 Steven Whitehouse
  2013-08-19 16:33 ` Linus Torvalds
  0 siblings, 1 reply; 40+ messages in thread
From: Steven Whitehouse @ 2013-08-19  9:26 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1545 bytes --]

Oops, forgot to sign this when I sent it first, so here is a signed copy of it.

Hi,

Please consider pulling the following changes,

Steve.

-----------------------------------------------------------------------------
Out of these five patches, the one for ensuring that the number of             
revokes is not exceeded, and the one for checking the glock is not              
already held in gfs2_getxattr are the two most important. The latter            
can be triggered by selinux.

The other three patches are very small and fix mostly fairly
trivial issues.

------------------------------------------------------------------------------
The following changes since commit 47188d39b5deeebf41f87a02af1b3935866364cf:

  Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 (2013-07-14 21:47:51 -0700)

are available in the git repository at:

  https://git.kernel.org/cgit/linux/kernel/git/steve/gfs2-3.0-fixes.git master

Benjamin Marzinski (1):
      GFS2: don't overrun reserved revokes

Dan Carpenter (1):
      GFS2: alloc_workqueue() doesn't return an ERR_PTR

Steven Whitehouse (2):
      GFS2: Fix typo in gfs2_create_inode()
      GFS2: Check for glock already held in gfs2_getxattr

Tejun Heo (1):
      GFS2: WQ_NON_REENTRANT is meaningless and going away

 fs/gfs2/glock.c |    8 ++++----
 fs/gfs2/glops.c |   18 +++++++++++++-----
 fs/gfs2/inode.c |    6 +++++-
 fs/gfs2/main.c  |    2 +-
 4 files changed, 23 insertions(+), 11 deletions(-)



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-08-19  9:24 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-08-19  9:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

Hi,

Please consider pulling the following changes,

Steve.

-----------------------------------------------------------------------------
Out of these five patches, the one for ensuring that the number of             
revokes is not exceeded, and the one for checking the glock is not              
already held in gfs2_getxattr are the two most important. The latter            
can be triggered by selinux.

The other three patches are very small and fix mostly fairly
trivial issues.

------------------------------------------------------------------------------
The following changes since commit 47188d39b5deeebf41f87a02af1b3935866364cf:

  Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 (2013-07-14 21:47:51 -0700)

are available in the git repository at:

  https://git.kernel.org/cgit/linux/kernel/git/steve/gfs2-3.0-fixes.git master

Benjamin Marzinski (1):
      GFS2: don't overrun reserved revokes

Dan Carpenter (1):
      GFS2: alloc_workqueue() doesn't return an ERR_PTR

Steven Whitehouse (2):
      GFS2: Fix typo in gfs2_create_inode()
      GFS2: Check for glock already held in gfs2_getxattr

Tejun Heo (1):
      GFS2: WQ_NON_REENTRANT is meaningless and going away

 fs/gfs2/glock.c |    8 ++++----
 fs/gfs2/glops.c |   18 +++++++++++++-----
 fs/gfs2/inode.c |    6 +++++-
 fs/gfs2/main.c  |    2 +-
 4 files changed, 23 insertions(+), 11 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-06-04 15:40 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-06-04 15:40 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1591 bytes --]

Hi,

Please consider pulling the following fixes for GFS2,

Steve.

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

There are four patches this time. The first fixes a problem where the
wrong descriptor type was being written into the log for journaled data
blocks. The second fixes a race relating to the deallocation of allocator
data. The third provides a fallback if kmalloc is unable to satisfy a
request to allocate a directory hash table. The fourth fixes the iopen
glock caching so that inodes are deleted in a more timely manner after
rmdir/unlink.

-----------------------------------------------------------------------------
The following changes since commit aa4f608478acb7ed69dfcff4f3c404100b78ac49:

  Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k (2013-06-03 18:09:42 +0900)

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 (4):
      GFS2: Set log descriptor type for jdata blocks
      GFS2: Increase i_writecount during gfs2_setattr_size
      GFS2: Fall back to vmalloc if kmalloc fails for dir hash tables
      GFS2: Don't cache iopen glocks

 fs/gfs2/bmap.c  |   17 +++++++++++++----
 fs/gfs2/dir.c   |   43 +++++++++++++++++++++++++++++++++----------
 fs/gfs2/file.c  |   19 +++++++++++++------
 fs/gfs2/inode.c |    1 +
 fs/gfs2/lops.c  |    4 +++-
 fs/gfs2/rgrp.c  |    4 +++-
 fs/gfs2/super.c |    6 +++++-
 7 files changed, 71 insertions(+), 23 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-05-24 14:05 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-05-24 14:05 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1382 bytes --]

Hi,

Please consider pulling the following fixes,

Steve.

----------------------------------------------------------------------------
This time there are just four fixes. There are a couple of minor updates
to the quota code, a fix for KConfig to ensure that only valid combinations
including GFS2 can be built, and a fix for a typo affecting end i/o
processing when writing the journal.

Also, there is a temporary fix for a performance regression relating to
block reservations and directories. A longer fix will be applied in
due course, but this deals with the most immediate problem for now.

----------------------------------------------------------------------------
The following changes since commit c7788792a5e7b0d5d7f96d0766b4cb6112d47d75:

  Linux 3.10-rc2 (2013-05-20 14:37:38 -0700)

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: two minor quota fixups
      GFS2: Use single-block reservations for directories

Randy Dunlap (1):
      GFS2: fix DLM depends to fix build errors

Steven Whitehouse (1):
      GFS2: Fix typo in gfs2_log_end_write loop

 fs/gfs2/Kconfig |    2 +-
 fs/gfs2/lops.c  |    2 +-
 fs/gfs2/quota.c |    4 ++--
 fs/gfs2/rgrp.c  |    9 +++++++--
 4 files changed, 11 insertions(+), 6 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GFS2: Pull request (fixes)
  2013-04-05 16:53   ` Linus Torvalds
@ 2013-04-05 17:52     ` Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-04-05 17:52 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: David Teigland, Linux Kernel Mailing List, cluster-devel

[-- Attachment #1: Type: text/plain, Size: 1488 bytes --]

Hi,

I've dropped out the patch which shouldn't have made it into the previous
pull request, so this set should be ok now. Apologies for not spotting
that issue sooner,

Steve.

-------------------------------------------------------------------------
There are two patches which fix up a couple of minor issues in the DLM
interface code, a missing error path in gfs2_rs_alloc(), one patch
which fixes a problem during "withdraw" and a fix for discards/FITRIM when
using 4k sector sized devices.

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

The following changes since commit 66ade474237745a57b7e87da9a93c7ec69fd52bb:

  Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm (2013-04-03 16:15:17 -0700)

are available in the git repository at:

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

Akinobu Mita (1):
      GFS2: use memchr_inv

Bob Peterson (1):
      GFS2: Issue discards in 512b sectors

David Teigland (1):
      GFS2: use kmalloc for lvb bitmap

Steven Whitehouse (1):
      GFS2: Fix unlock of fcntl locks during withdrawn state

Wei Yongjun (1):
      GFS2: return error if malloc failed in gfs2_rs_alloc()

 fs/gfs2/file.c     |    5 ++++-
 fs/gfs2/incore.h   |    1 +
 fs/gfs2/lock_dlm.c |   39 ++++++++++++++++++++-------------------
 fs/gfs2/rgrp.c     |   32 ++++++++++++++------------------
 4 files changed, 39 insertions(+), 38 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GFS2: Pull request (fixes)
  2013-04-05 16:27 ` David Teigland
  2013-04-05 16:51   ` Steven Whitehouse
@ 2013-04-05 16:53   ` Linus Torvalds
  2013-04-05 17:52     ` Steven Whitehouse
  1 sibling, 1 reply; 40+ messages in thread
From: Linus Torvalds @ 2013-04-05 16:53 UTC (permalink / raw)
  To: David Teigland
  Cc: Steven Whitehouse, Linux Kernel Mailing List, cluster-devel

On Fri, Apr 5, 2013 at 9:27 AM, David Teigland <teigland@redhat.com> wrote:
> On Fri, Apr 05, 2013 at 11:34:45AM +0100, Steven Whitehouse wrote:
>> Please consider pulling the following changes,
>
> There's some mixup here that should be cleared up first.
>
>> David Teigland (2):
>>       GFS2: Fix unlock of fcntl locks during withdrawn state
>>
>> Steven Whitehouse (1):
>>       GFS2: Fix unlock of fcntl locks during withdrawn state

Looks like the summary line for one got leaked through an email
follow-up to the other. So now the summary of the second commit is
meaningless and doesn't actually describe it.

               Linus

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GFS2: Pull request (fixes)
  2013-04-05 16:27 ` David Teigland
@ 2013-04-05 16:51   ` Steven Whitehouse
  2013-04-05 16:53   ` Linus Torvalds
  1 sibling, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-04-05 16:51 UTC (permalink / raw)
  To: David Teigland; +Cc: Linus Torvalds, linux-kernel, cluster-devel

Hi,

On Fri, 2013-04-05 at 12:27 -0400, David Teigland wrote:
> On Fri, Apr 05, 2013 at 11:34:45AM +0100, Steven Whitehouse wrote:
> > Please consider pulling the following changes,
> 
> There's some mixup here that should be cleared up first.
> 
> > David Teigland (2):
> >       GFS2: Fix unlock of fcntl locks during withdrawn state
> > 
> > Steven Whitehouse (1):
> >       GFS2: Fix unlock of fcntl locks during withdrawn state
> 
> 

Yes, sorry about that. I'll fix that up and resend the pull request in
due course,

Steve.



^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: GFS2: Pull request (fixes)
  2013-04-05 10:34 Steven Whitehouse
@ 2013-04-05 16:27 ` David Teigland
  2013-04-05 16:51   ` Steven Whitehouse
  2013-04-05 16:53   ` Linus Torvalds
  0 siblings, 2 replies; 40+ messages in thread
From: David Teigland @ 2013-04-05 16:27 UTC (permalink / raw)
  To: Steven Whitehouse; +Cc: Linus Torvalds, linux-kernel, cluster-devel

On Fri, Apr 05, 2013 at 11:34:45AM +0100, Steven Whitehouse wrote:
> Please consider pulling the following changes,

There's some mixup here that should be cleared up first.

> David Teigland (2):
>       GFS2: Fix unlock of fcntl locks during withdrawn state
> 
> Steven Whitehouse (1):
>       GFS2: Fix unlock of fcntl locks during withdrawn state



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-04-05 10:34 Steven Whitehouse
  2013-04-05 16:27 ` David Teigland
  0 siblings, 1 reply; 40+ messages in thread
From: Steven Whitehouse @ 2013-04-05 10:34 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, cluster-devel

Hi,

Please consider pulling the following changes,

Steve.

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

There are two patches which fix up a couple of minor issues in the DLM
interface code, a missing error path in gfs2_rs_alloc(), two patches
which fix problems during "withdraw" and a fix for discards/FITRIM when
using 4k sector sized devices.

----------------------------------------------------------------------------
The following changes since commit 66ade474237745a57b7e87da9a93c7ec69fd52bb:

  Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm (2013-04-03 16:15:17 -0700)

are available in the git repository at:

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

Akinobu Mita (1):
      GFS2: use memchr_inv

Bob Peterson (1):
      GFS2: Issue discards in 512b sectors

David Teigland (2):
      GFS2: use kmalloc for lvb bitmap
      GFS2: Fix unlock of fcntl locks during withdrawn state

Steven Whitehouse (1):
      GFS2: Fix unlock of fcntl locks during withdrawn state

Wei Yongjun (1):
      GFS2: return error if malloc failed in gfs2_rs_alloc()

 fs/dlm/plock.c     |   18 +++++++++++++++---
 fs/gfs2/file.c     |    5 ++++-
 fs/gfs2/incore.h   |    1 +
 fs/gfs2/lock_dlm.c |   39 ++++++++++++++++++++-------------------
 fs/gfs2/rgrp.c     |   32 ++++++++++++++------------------
 5 files changed, 54 insertions(+), 41 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-01-28 10:31 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-01-28 10:31 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2068 bytes --]

Hi,

Please consider pulling the following fix. Since there is only one patch
this time, I've attached it below rather than posting it separately,

Steve.

------------------------------------------------------------------------------
The following changes since commit 949db153b6466c6f7cad5a427ecea94985927311:

  Linux 3.8-rc5 (2013-01-25 11:57:28 -0800)

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

David Teigland (1):
      GFS2: fix skip unlock condition

 fs/gfs2/lock_dlm.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
------------------------------------------------------------------------------
From d4e0bfec9b6fbb9b58640b44e01bb74ae0d29b22 Mon Sep 17 00:00:00 2001
From: David Teigland <teigland@redhat.com>
Date: Thu, 3 Jan 2013 17:52:07 -0500
Subject: [PATCH] GFS2: fix skip unlock condition

The recent commit fb6791d100d1bba20b5cdbc4912e1f7086ec60f8
included the wrong logic.  The lvbptr check was incorrectly
added after the patch was tested.

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

diff --git a/fs/gfs2/lock_dlm.c b/fs/gfs2/lock_dlm.c
index b906ed1..9802de0 100644
--- a/fs/gfs2/lock_dlm.c
+++ b/fs/gfs2/lock_dlm.c
@@ -281,6 +281,7 @@ static void gdlm_put_lock(struct gfs2_glock *gl)
 {
 	struct gfs2_sbd *sdp = gl->gl_sbd;
 	struct lm_lockstruct *ls = &sdp->sd_lockstruct;
+	int lvb_needs_unlock = 0;
 	int error;
 
 	if (gl->gl_lksb.sb_lkid == 0) {
@@ -294,8 +295,12 @@ static void gdlm_put_lock(struct gfs2_glock *gl)
 	gfs2_update_request_times(gl);
 
 	/* don't want to skip dlm_unlock writing the lvb when lock is ex */
+
+	if (gl->gl_lksb.sb_lvbptr && (gl->gl_state == LM_ST_EXCLUSIVE))
+		lvb_needs_unlock = 1;
+
 	if (test_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags) &&
-	    gl->gl_lksb.sb_lvbptr && (gl->gl_state != LM_ST_EXCLUSIVE)) {
+	    !lvb_needs_unlock) {
 		gfs2_glock_free(gl);
 		return;
 	}
-- 
1.7.4



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2013-01-03 12:28 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2013-01-03 12:28 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1344 bytes --]

Hi,

Please consider pulling the following GFS2 fixes,

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

Here are four small bug fixes for GFS2. There is no common theme here
really, just a few items that were fixed recently. The first fixes
lock name generation when the glock number is 0. The second fixes a
race allocating reservation structures and the final two fix a performance
issue by making small changes in the allocation code.

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

The following changes since commit 4a490b78cb7e0e5efa44425df72a9fedc1c36366:

  Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux (2012-12-30 10:00:37 -0800)

are available in the git repository at:

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

Abhijith Das (1):
      GFS2: Fix race in gfs2_rs_alloc

Bob Peterson (2):
      GFS2: Stop looking for free blocks at end of rgrp
      GFS2: Reset rd_last_alloc when it reaches the end of the rgrp

Nathan Straz (1):
      GFS2: Initialize hex string to '0'

 fs/gfs2/lock_dlm.c |    1 +
 fs/gfs2/rgrp.c     |   35 ++++++++++++++++++++---------------
 2 files changed, 21 insertions(+), 15 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2012-11-07 10:58 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2012-11-07 10:58 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1526 bytes --]

Hi,

Please consider pulling the following GFS2 fixes,

Steve.

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

Here are a number of GFS2 bug fixes. There are three from Andy Price
which fix various issues spotted by automated code analysis. There are two
from Lukas Czerner fixing my mistaken assumptions as to how FITRIM
should work. Finally Ben Marzinski has fixed a bug relating to mmap and
atime and also a bug relating to a locking issue in the transaction code.


The following changes since commit ddffeb8c4d0331609ef2581d84de4d763607bd37:

  Linux 3.7-rc1 (2012-10-14 14:41:04 -0700)

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

Andrew Price (3):
      GFS2: Fix an unchecked error from gfs2_rs_alloc
      GFS2: Fix possible null pointer deref in gfs2_rs_alloc
      GFS2: Clean up some unused assignments

Benjamin Marzinski (2):
      GFS2: Don't call file_accessed() with a shared glock
      GFS2: Test bufdata with buffer locked and gfs2_log_lock held

Lukas Czerner (2):
      GFS2: Require user to provide argument for FITRIM
      GFS2: Fix FITRIM argument handling

 fs/gfs2/file.c  |   14 +++++---------
 fs/gfs2/lops.c  |   16 ++--------------
 fs/gfs2/quota.c |    7 +++++--
 fs/gfs2/rgrp.c  |   33 +++++++++++++++++++++------------
 fs/gfs2/super.c |    3 ++-
 fs/gfs2/trans.c |    8 ++++++++
 6 files changed, 43 insertions(+), 38 deletions(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2012-09-13 13:42 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2012-09-13 13:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1453 bytes --]

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(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2012-04-11 10:21 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2012-04-11 10:21 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1083 bytes --]

[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(-)



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2012-04-11 10:18 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2012-04-11 10:18 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

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(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2012-02-28 11:49 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2012-02-28 11:49 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 981 bytes --]

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(-)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2011-07-27 10:00 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2011-07-27 10:00 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

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...\n");
-		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...\n");
-	complete(&sdp->sd_locking_init);
+	complete_all(&sdp->sd_locking_init);
 	return ret;
 }
 
-- 
1.7.4





^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2011-07-14 15:16 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2011-07-14 15:16 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

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(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2011-04-19  9:13 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2011-04-19  9:13 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

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(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2011-01-19 10:50 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2011-01-19 10:50 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

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




^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-11-29 13:42 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-11-29 13:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following fix,

Steve.

-----------------------------------------------------------------------------
The following changes since commit e53beacd23d9cb47590da6a7a7f6d417b941a994:

  Linux 2.6.37-rc2 (2010-11-15 18:31:02 -0800)

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

Abhijith Das (1):
      GFS2: Userland expects quota limit/warn/usage in 512b blocks

 fs/gfs2/quota.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)
----------------------------------------------------------------------

>From 14870b457524e745f1a118e17873d104b1a47b70 Mon Sep 17 00:00:00 2001
From: Abhijith Das <adas@redhat.com>
Date: Thu, 18 Nov 2010 11:24:24 -0500
Subject: [PATCH] GFS2: Userland expects quota limit/warn/usage in 512b blocks

Userland programs using the quotactl() syscall assume limit/warn/usage
block counts in 512b basic blocks which were instead being read/written
in fs blocksize in gfs2. With this patch, gfs2 correctly interacts with
the syscall using 512b blocks.

Signed-off-by: Abhi Das <adas@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
index 58a9b99..f606baf 100644
--- a/fs/gfs2/quota.c
+++ b/fs/gfs2/quota.c
@@ -631,6 +631,7 @@ static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc,
 			     struct fs_disk_quota *fdq)
 {
 	struct inode *inode = &ip->i_inode;
+	struct gfs2_sbd *sdp = GFS2_SB(inode);
 	struct address_space *mapping = inode->i_mapping;
 	unsigned long index = loc >> PAGE_CACHE_SHIFT;
 	unsigned offset = loc & (PAGE_CACHE_SIZE - 1);
@@ -658,11 +659,11 @@ static int gfs2_adjust_quota(struct gfs2_inode *ip, loff_t loc,
 	qd->qd_qb.qb_value = qp->qu_value;
 	if (fdq) {
 		if (fdq->d_fieldmask & FS_DQ_BSOFT) {
-			qp->qu_warn = cpu_to_be64(fdq->d_blk_softlimit);
+			qp->qu_warn = cpu_to_be64(fdq->d_blk_softlimit >> sdp->sd_fsb2bb_shift);
 			qd->qd_qb.qb_warn = qp->qu_warn;
 		}
 		if (fdq->d_fieldmask & FS_DQ_BHARD) {
-			qp->qu_limit = cpu_to_be64(fdq->d_blk_hardlimit);
+			qp->qu_limit = cpu_to_be64(fdq->d_blk_hardlimit >> sdp->sd_fsb2bb_shift);
 			qd->qd_qb.qb_limit = qp->qu_limit;
 		}
 	}
@@ -1497,9 +1498,9 @@ static int gfs2_get_dqblk(struct super_block *sb, int type, qid_t id,
 	fdq->d_version = FS_DQUOT_VERSION;
 	fdq->d_flags = (type == QUOTA_USER) ? FS_USER_QUOTA : FS_GROUP_QUOTA;
 	fdq->d_id = id;
-	fdq->d_blk_hardlimit = be64_to_cpu(qlvb->qb_limit);
-	fdq->d_blk_softlimit = be64_to_cpu(qlvb->qb_warn);
-	fdq->d_bcount = be64_to_cpu(qlvb->qb_value);
+	fdq->d_blk_hardlimit = be64_to_cpu(qlvb->qb_limit) << sdp->sd_fsb2bb_shift;
+	fdq->d_blk_softlimit = be64_to_cpu(qlvb->qb_warn) << sdp->sd_fsb2bb_shift;
+	fdq->d_bcount = be64_to_cpu(qlvb->qb_value) << sdp->sd_fsb2bb_shift;
 
 	gfs2_glock_dq_uninit(&q_gh);
 out:
@@ -1566,10 +1567,10 @@ static int gfs2_set_dqblk(struct super_block *sb, int type, qid_t id,
 
 	/* If nothing has changed, this is a no-op */
 	if ((fdq->d_fieldmask & FS_DQ_BSOFT) &&
-	    (fdq->d_blk_softlimit == be64_to_cpu(qd->qd_qb.qb_warn)))
+	    ((fdq->d_blk_softlimit >> sdp->sd_fsb2bb_shift) == be64_to_cpu(qd->qd_qb.qb_warn)))
 		fdq->d_fieldmask ^= FS_DQ_BSOFT;
 	if ((fdq->d_fieldmask & FS_DQ_BHARD) &&
-	    (fdq->d_blk_hardlimit == be64_to_cpu(qd->qd_qb.qb_limit)))
+	    ((fdq->d_blk_hardlimit >> sdp->sd_fsb2bb_shift) == be64_to_cpu(qd->qd_qb.qb_limit)))
 		fdq->d_fieldmask ^= FS_DQ_BHARD;
 	if (fdq->d_fieldmask == 0)
 		goto out_i;
-- 
1.7.2.3




^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-11-15 15:41 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-11-15 15:41 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following fix from the GFS2 -fixes tree,

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


The following changes since commit 0143832cc96d0bf78486297aad5c8fb2c2ead02a:

  Merge branch 'urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 (2010-11-13 10:00:15 -0800)

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 inode deallocation race

 fs/gfs2/export.c |   46 ++---------------
 fs/gfs2/glock.c  |   21 ++++----
 fs/gfs2/inode.c  |  152 ++++++++++++-----------------------------------------
 fs/gfs2/inode.h  |    4 +-
 fs/gfs2/rgrp.c   |   91 ++++++++++++++++----------------
 5 files changed, 98 insertions(+), 216 deletions(-)

[Just noticed that git request-pull -p doesn't include the description, so adding that in here]

GFS2: Fix inode deallocation race

This area of the code has always been a bit delicate due to the
subtleties of lock ordering. The problem is that for "normal"
alloc/dealloc, we always grab the inode locks first and the rgrp lock
later.

In order to ensure no races in looking up the unlinked, but still
allocated inodes, we need to hold the rgrp lock when we do the lookup,
which means that we can't take the inode glock.

The solution is to borrow the technique already used by NFS to solve
what is essentially the same problem (given an inode number, look up
the inode carefully, checking that it really is in the expected
state).

We cannot do that directly from the allocation code (lock ordering
again) so we give the job to the pre-existing delete workqueue and
carry on with the allocation as normal.

If we find there is no space, we do a journal flush (required anyway
if space from a deallocation is to be released) which should block
against the pending deallocations, so we should always get the space
back.

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


diff --git a/fs/gfs2/export.c b/fs/gfs2/export.c
index 06d5827..5ab3839 100644
--- a/fs/gfs2/export.c
+++ b/fs/gfs2/export.c
@@ -138,10 +138,8 @@ static struct dentry *gfs2_get_dentry(struct super_block *sb,
 				      struct gfs2_inum_host *inum)
 {
 	struct gfs2_sbd *sdp = sb->s_fs_info;
-	struct gfs2_holder i_gh;
 	struct inode *inode;
 	struct dentry *dentry;
-	int error;
 
 	inode = gfs2_ilookup(sb, inum->no_addr);
 	if (inode) {
@@ -152,52 +150,16 @@ static struct dentry *gfs2_get_dentry(struct super_block *sb,
 		goto out_inode;
 	}
 
-	error = gfs2_glock_nq_num(sdp, inum->no_addr, &gfs2_inode_glops,
-				  LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
-	if (error)
-		return ERR_PTR(error);
-
-	error = gfs2_check_blk_type(sdp, inum->no_addr, GFS2_BLKST_DINODE);
-	if (error)
-		goto fail;
-
-	inode = gfs2_inode_lookup(sb, DT_UNKNOWN, inum->no_addr, 0);
-	if (IS_ERR(inode)) {
-		error = PTR_ERR(inode);
-		goto fail;
-	}
-
-	error = gfs2_inode_refresh(GFS2_I(inode));
-	if (error) {
-		iput(inode);
-		goto fail;
-	}
-
-	/* Pick up the works we bypass in gfs2_inode_lookup */
-	if (inode->i_state & I_NEW) 
-		gfs2_set_iop(inode);
-
-	if (GFS2_I(inode)->i_no_formal_ino != inum->no_formal_ino) {
-		iput(inode);
-		goto fail;
-	}
-
-	error = -EIO;
-	if (GFS2_I(inode)->i_diskflags & GFS2_DIF_SYSTEM) {
-		iput(inode);
-		goto fail;
-	}
-
-	gfs2_glock_dq_uninit(&i_gh);
+	inode = gfs2_lookup_by_inum(sdp, inum->no_addr, &inum->no_formal_ino,
+				    GFS2_BLKST_DINODE);
+	if (IS_ERR(inode))
+		return ERR_CAST(inode);
 
 out_inode:
 	dentry = d_obtain_alias(inode);
 	if (!IS_ERR(dentry))
 		dentry->d_op = &gfs2_dops;
 	return dentry;
-fail:
-	gfs2_glock_dq_uninit(&i_gh);
-	return ERR_PTR(error);
 }
 
 static struct dentry *gfs2_fh_to_dentry(struct super_block *sb, struct fid *fid,
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 8777885..f92c177 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -686,21 +686,20 @@ static void delete_work_func(struct work_struct *work)
 {
 	struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_delete);
 	struct gfs2_sbd *sdp = gl->gl_sbd;
-	struct gfs2_inode *ip = NULL;
+	struct gfs2_inode *ip;
 	struct inode *inode;
-	u64 no_addr = 0;
+	u64 no_addr = gl->gl_name.ln_number;
+
+	ip = gl->gl_object;
+	/* Note: Unsafe to dereference ip as we don't hold right refs/locks */
 
-	spin_lock(&gl->gl_spin);
-	ip = (struct gfs2_inode *)gl->gl_object;
 	if (ip)
-		no_addr = ip->i_no_addr;
-	spin_unlock(&gl->gl_spin);
-	if (ip) {
 		inode = gfs2_ilookup(sdp->sd_vfs, no_addr);
-		if (inode) {
-			d_prune_aliases(inode);
-			iput(inode);
-		}
+	else
+		inode = gfs2_lookup_by_inum(sdp, no_addr, NULL, GFS2_BLKST_UNLINKED);
+	if (inode && !IS_ERR(inode)) {
+		d_prune_aliases(inode);
+		iput(inode);
 	}
 	gfs2_glock_put(gl);
 }
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 06370f8..e1213f7 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -73,49 +73,6 @@ static struct inode *gfs2_iget(struct super_block *sb, u64 no_addr)
 	return iget5_locked(sb, hash, iget_test, iget_set, &no_addr);
 }
 
-struct gfs2_skip_data {
-	u64	no_addr;
-	int	skipped;
-};
-
-static int iget_skip_test(struct inode *inode, void *opaque)
-{
-	struct gfs2_inode *ip = GFS2_I(inode);
-	struct gfs2_skip_data *data = opaque;
-
-	if (ip->i_no_addr == data->no_addr) {
-		if (inode->i_state & (I_FREEING|I_WILL_FREE)){
-			data->skipped = 1;
-			return 0;
-		}
-		return 1;
-	}
-	return 0;
-}
-
-static int iget_skip_set(struct inode *inode, void *opaque)
-{
-	struct gfs2_inode *ip = GFS2_I(inode);
-	struct gfs2_skip_data *data = opaque;
-
-	if (data->skipped)
-		return 1;
-	inode->i_ino = (unsigned long)(data->no_addr);
-	ip->i_no_addr = data->no_addr;
-	return 0;
-}
-
-static struct inode *gfs2_iget_skip(struct super_block *sb,
-				    u64 no_addr)
-{
-	struct gfs2_skip_data data;
-	unsigned long hash = (unsigned long)no_addr;
-
-	data.no_addr = no_addr;
-	data.skipped = 0;
-	return iget5_locked(sb, hash, iget_skip_test, iget_skip_set, &data);
-}
-
 /**
  * GFS2 lookup code fills in vfs inode contents based on info obtained
  * from directory entry inside gfs2_inode_lookup(). This has caused issues
@@ -243,93 +200,54 @@ fail:
 	return ERR_PTR(error);
 }
 
-/**
- * gfs2_process_unlinked_inode - Lookup an unlinked inode for reclamation
- *                               and try to reclaim it by doing iput.
- *
- * This function assumes no rgrp locks are currently held.
- *
- * @sb: The super block
- * no_addr: The inode number
- *
- */
-
-void gfs2_process_unlinked_inode(struct super_block *sb, u64 no_addr)
+struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
+				  u64 *no_formal_ino, unsigned int blktype)
 {
-	struct gfs2_sbd *sdp;
-	struct gfs2_inode *ip;
-	struct gfs2_glock *io_gl = NULL;
-	int error;
-	struct gfs2_holder gh;
+	struct super_block *sb = sdp->sd_vfs;
+	struct gfs2_holder i_gh;
 	struct inode *inode;
+	int error;
 
-	inode = gfs2_iget_skip(sb, no_addr);
-
-	if (!inode)
-		return;
-
-	/* If it's not a new inode, someone's using it, so leave it alone. */
-	if (!(inode->i_state & I_NEW)) {
-		iput(inode);
-		return;
-	}
-
-	ip = GFS2_I(inode);
-	sdp = GFS2_SB(inode);
-	ip->i_no_formal_ino = -1;
+	error = gfs2_glock_nq_num(sdp, no_addr, &gfs2_inode_glops,
+				  LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
+	if (error)
+		return ERR_PTR(error);
 
-	error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &ip->i_gl);
-	if (unlikely(error))
+	error = gfs2_check_blk_type(sdp, no_addr, blktype);
+	if (error)
 		goto fail;
-	ip->i_gl->gl_object = ip;
 
-	error = gfs2_glock_get(sdp, no_addr, &gfs2_iopen_glops, CREATE, &io_gl);
-	if (unlikely(error))
-		goto fail_put;
-
-	set_bit(GIF_INVALID, &ip->i_flags);
-	error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, LM_FLAG_TRY | GL_EXACT,
-				   &ip->i_iopen_gh);
-	if (unlikely(error))
-		goto fail_iopen;
+	inode = gfs2_inode_lookup(sb, DT_UNKNOWN, no_addr, 0);
+	if (IS_ERR(inode))
+		goto fail;
 
-	ip->i_iopen_gh.gh_gl->gl_object = ip;
-	gfs2_glock_put(io_gl);
-	io_gl = NULL;
+	error = gfs2_inode_refresh(GFS2_I(inode));
+	if (error)
+		goto fail_iput;
 
-	inode->i_mode = DT2IF(DT_UNKNOWN);
+	/* Pick up the works we bypass in gfs2_inode_lookup */
+	if (inode->i_state & I_NEW) 
+		gfs2_set_iop(inode);
 
-	/*
-	 * 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).
-	 */
-	error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, LM_FLAG_TRY,
-				   &gh);
-	if (unlikely(error))
-		goto fail_glock;
+	/* Two extra checks for NFS only */
+	if (no_formal_ino) {
+		error = -ESTALE;
+		if (GFS2_I(inode)->i_no_formal_ino != *no_formal_ino)
+			goto fail_iput;
 
-	/* Inode is now uptodate */
-	gfs2_glock_dq_uninit(&gh);
-	gfs2_set_iop(inode);
+		error = -EIO;
+		if (GFS2_I(inode)->i_diskflags & GFS2_DIF_SYSTEM)
+			goto fail_iput;
 
-	/* The iput will cause it to be deleted. */
-	iput(inode);
-	return;
+		error = 0;
+	}
 
-fail_glock:
-	gfs2_glock_dq(&ip->i_iopen_gh);
-fail_iopen:
-	if (io_gl)
-		gfs2_glock_put(io_gl);
-fail_put:
-	ip->i_gl->gl_object = NULL;
-	gfs2_glock_put(ip->i_gl);
 fail:
-	iget_failed(inode);
-	return;
+	gfs2_glock_dq_uninit(&i_gh);
+	return error ? ERR_PTR(error) : inode;
+fail_iput:
+	iput(inode);
+	goto fail;
 }
 
 static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
diff --git a/fs/gfs2/inode.h b/fs/gfs2/inode.h
index 6720d7d..d8499fa 100644
--- a/fs/gfs2/inode.h
+++ b/fs/gfs2/inode.h
@@ -99,7 +99,9 @@ err:
 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 void gfs2_process_unlinked_inode(struct super_block *sb, u64 no_addr);
+extern struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
+					 u64 *no_formal_ino,
+					 unsigned int blktype);
 extern struct inode *gfs2_ilookup(struct super_block *sb, u64 no_addr);
 
 extern int gfs2_inode_refresh(struct gfs2_inode *ip);
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index bef3ab6..33c8407 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -963,17 +963,18 @@ static int try_rgrp_fit(struct gfs2_rgrpd *rgd, struct gfs2_alloc *al)
  *          The inode, if one has been found, in inode.
  */
 
-static u64 try_rgrp_unlink(struct gfs2_rgrpd *rgd, u64 *last_unlinked,
-			   u64 skip)
+static void try_rgrp_unlink(struct gfs2_rgrpd *rgd, u64 *last_unlinked, u64 skip)
 {
 	u32 goal = 0, block;
 	u64 no_addr;
 	struct gfs2_sbd *sdp = rgd->rd_sbd;
 	unsigned int n;
+	struct gfs2_glock *gl;
+	struct gfs2_inode *ip;
+	int error;
+	int found = 0;
 
-	for(;;) {
-		if (goal >= rgd->rd_data)
-			break;
+	while (goal < rgd->rd_data) {
 		down_write(&sdp->sd_log_flush_lock);
 		n = 1;
 		block = rgblk_search(rgd, goal, GFS2_BLKST_UNLINKED,
@@ -990,11 +991,32 @@ static u64 try_rgrp_unlink(struct gfs2_rgrpd *rgd, u64 *last_unlinked,
 		if (no_addr == skip)
 			continue;
 		*last_unlinked = no_addr;
-		return no_addr;
+
+		error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &gl);
+		if (error)
+			continue;
+
+		/* If the inode is already in cache, we can ignore it here
+		 * because the existing inode disposal code will deal with
+		 * it when all refs have gone away. Accessing gl_object like
+		 * this is not safe in general. Here it is ok because we do
+		 * not dereference the pointer, and we only need an approx
+		 * answer to whether it is NULL or not.
+		 */
+		ip = gl->gl_object;
+
+		if (ip || queue_work(gfs2_delete_workqueue, &gl->gl_delete) == 0)
+			gfs2_glock_put(gl);
+		else
+			found++;
+
+		/* Limit reclaim to sensible number of tasks */
+		if (found > 2*NR_CPUS)
+			return;
 	}
 
 	rgd->rd_flags &= ~GFS2_RDF_CHECK;
-	return 0;
+	return;
 }
 
 /**
@@ -1075,11 +1097,9 @@ static void forward_rgrp_set(struct gfs2_sbd *sdp, struct gfs2_rgrpd *rgd)
  * Try to acquire rgrp in way which avoids contending with others.
  *
  * Returns: errno
- *          unlinked: the block address of an unlinked block to be reclaimed
  */
 
-static int get_local_rgrp(struct gfs2_inode *ip, u64 *unlinked,
-			  u64 *last_unlinked)
+static int get_local_rgrp(struct gfs2_inode *ip, u64 *last_unlinked)
 {
 	struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
 	struct gfs2_rgrpd *rgd, *begin = NULL;
@@ -1089,7 +1109,6 @@ static int get_local_rgrp(struct gfs2_inode *ip, u64 *unlinked,
 	int loops = 0;
 	int error, rg_locked;
 
-	*unlinked = 0;
 	rgd = gfs2_blk2rgrpd(sdp, ip->i_goal);
 
 	while (rgd) {
@@ -1106,17 +1125,10 @@ static int get_local_rgrp(struct gfs2_inode *ip, u64 *unlinked,
 		case 0:
 			if (try_rgrp_fit(rgd, al))
 				goto out;
-			/* If the rg came in already locked, there's no
-			   way we can recover from a failed try_rgrp_unlink
-			   because that would require an iput which can only
-			   happen after the rgrp is unlocked. */
-			if (!rg_locked && rgd->rd_flags & GFS2_RDF_CHECK)
-				*unlinked = try_rgrp_unlink(rgd, last_unlinked,
-							   ip->i_no_addr);
+			if (rgd->rd_flags & GFS2_RDF_CHECK)
+				try_rgrp_unlink(rgd, last_unlinked, ip->i_no_addr);
 			if (!rg_locked)
 				gfs2_glock_dq_uninit(&al->al_rgd_gh);
-			if (*unlinked)
-				return -EAGAIN;
 			/* fall through */
 		case GLR_TRYFAILED:
 			rgd = recent_rgrp_next(rgd);
@@ -1145,13 +1157,10 @@ static int get_local_rgrp(struct gfs2_inode *ip, u64 *unlinked,
 		case 0:
 			if (try_rgrp_fit(rgd, al))
 				goto out;
-			if (!rg_locked && rgd->rd_flags & GFS2_RDF_CHECK)
-				*unlinked = try_rgrp_unlink(rgd, last_unlinked,
-							    ip->i_no_addr);
+			if (rgd->rd_flags & GFS2_RDF_CHECK)
+				try_rgrp_unlink(rgd, last_unlinked, ip->i_no_addr);
 			if (!rg_locked)
 				gfs2_glock_dq_uninit(&al->al_rgd_gh);
-			if (*unlinked)
-				return -EAGAIN;
 			break;
 
 		case GLR_TRYFAILED:
@@ -1204,12 +1213,12 @@ int gfs2_inplace_reserve_i(struct gfs2_inode *ip, int hold_rindex,
 	struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
 	struct gfs2_alloc *al = ip->i_alloc;
 	int error = 0;
-	u64 last_unlinked = NO_BLOCK, unlinked;
+	u64 last_unlinked = NO_BLOCK;
+	int tries = 0;
 
 	if (gfs2_assert_warn(sdp, al->al_requested))
 		return -EINVAL;
 
-try_again:
 	if (hold_rindex) {
 		/* We need to hold the rindex unless the inode we're using is
 		   the rindex itself, in which case it's already held. */
@@ -1218,31 +1227,23 @@ try_again:
 		else if (!sdp->sd_rgrps) /* We may not have the rindex read
 					    in, so: */
 			error = gfs2_ri_update_special(ip);
+		if (error)
+			return error;
 	}
 
-	if (error)
-		return error;
+	do {
+		error = get_local_rgrp(ip, &last_unlinked);
+		/* If there is no space, flushing the log may release some */
+		if (error)
+			gfs2_log_flush(sdp, NULL);
+	} while (error && tries++ < 3);
 
-	/* Find an rgrp suitable for allocation.  If it encounters any unlinked
-	   dinodes along the way, error will equal -EAGAIN and unlinked will
-	   contains it block address. We then need to look up that inode and
-	   try to free it, and try the allocation again. */
-	error = get_local_rgrp(ip, &unlinked, &last_unlinked);
 	if (error) {
 		if (hold_rindex && ip != GFS2_I(sdp->sd_rindex))
 			gfs2_glock_dq_uninit(&al->al_ri_gh);
-		if (error != -EAGAIN)
-			return error;
-
-		gfs2_process_unlinked_inode(ip->i_inode.i_sb, unlinked);
-		/* regardless of whether or not gfs2_process_unlinked_inode
-		   was successful, we don't want to repeat it again. */
-		last_unlinked = unlinked;
-		gfs2_log_flush(sdp, NULL);
-		error = 0;
-
-		goto try_again;
+		return error;
 	}
+
 	/* no error, so we have the rgrp set in the inode's allocation. */
 	al->al_file = file;
 	al->al_line = line;



^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-09-17 13:59 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-09-17 13:59 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following (very small!) patch,

Steve.

--------------------------------------------------------------------------------------------------
The following changes since commit 03a7ab083e4d619136d6f07ce70fa9de0bc436fc:

  Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6 (2010-09-16 12:59:11 -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: gfs2_logd should be using interruptible waits

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

diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
index cde1248..ac750bd 100644
--- a/fs/gfs2/log.c
+++ b/fs/gfs2/log.c
@@ -932,7 +932,7 @@ int gfs2_logd(void *data)
 
 		do {
 			prepare_to_wait(&sdp->sd_logd_waitq, &wait,
-					TASK_UNINTERRUPTIBLE);
+					TASK_INTERRUPTIBLE);
 			if (!gfs2_ail_flush_reqd(sdp) &&
 			    !gfs2_jrnl_flush_reqd(sdp) &&
 			    !kthread_should_stop())



^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-07-15 14:35 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-07-15 14:35 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, Linux Kernel Mailing List

Hi,

Please consider pulling the following GFS2 fixes,

Steve.

The following changes since commit 2f7989efd4398d92b8adffce2e07dd043a0895fe:

  Merge master.kernel.org:/home/rmk/linux-2.6-arm (2010-07-14 17:28:13 -0700)

are available in the git repository at:

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

Abhijith Das (1):
      GFS2: BUG in gfs2_adjust_quota

Bob Peterson (4):
      GFS2: O_TRUNC not working on stuffed files across cluster
      GFS2: recovery stuck on transaction lock
      GFS2: Fix kernel NULL pointer dereference by dlm_astd
      GFS2: rename causes kernel Oops

 fs/gfs2/bmap.c  |    1 +
 fs/gfs2/dir.c   |    2 +-
 fs/gfs2/glock.c |   10 ++++++++++
 fs/gfs2/inode.c |   12 ++++++++----
 fs/gfs2/quota.c |    8 +++-----
 5 files changed, 23 insertions(+), 10 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-05-25  8:51 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-05-25  8:51 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: cluster-devel, Linux Kernel Mailing List

Hi,

Please consider pulling the following three GFS2 fixes,

Steve.

-------------------------------------------------------------------------------
The following changes since commit d7dbf4ffee1c7a17e2e5b5f01efe76fbd1671db6:
  Linus Torvalds (1):
        Merge branch 'for-linus' of git://git.kernel.org/.../ryusuke/nilfs2

are available in the git repository at:

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

Bob Peterson (1):
      GFS2: Rework reclaiming unlinked dinodes

Steven Whitehouse (2):
      GFS2: Don't "get" xattrs for ACLs when ACLs are turned off
      GFS2: Fix permissions checking for setflags ioctl()

 fs/gfs2/acl.c   |    4 ++++
 fs/gfs2/file.c  |    7 +++++++
 fs/gfs2/inode.c |   54 +++++++++++++++++++++++++++++-------------------------
 fs/gfs2/inode.h |    3 +--
 fs/gfs2/log.c   |    2 +-
 fs/gfs2/log.h   |   29 +++++++++++------------------
 fs/gfs2/rgrp.c  |   20 ++++++++++++--------
 7 files changed, 65 insertions(+), 54 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-03-11 17:41 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-03-11 17:41 UTC (permalink / raw)
  To: torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following small fixes,

Steve.

------------------------------------------------------------------------------
The following changes since commit 57d54889cd00db2752994b389ba714138652e60c:
  Linus Torvalds (1):
        Linux 2.6.34-rc1

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: Allow the number of committed revokes to temporarily be negative

Christoph Hellwig (1):
      GFS2: do not select QUOTA

Sachin Prabhu (1):
      GFS2: Skip check for mandatory locks when unlocking

 fs/gfs2/Kconfig  |    1 -
 fs/gfs2/file.c   |    2 +-
 fs/gfs2/incore.h |    2 +-
 fs/gfs2/log.c    |    3 +--
 4 files changed, 3 insertions(+), 5 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-02-12 11:37 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-02-12 11:37 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, cluster-devel

Hi,

Please consider pulling the following changes,

Steve.

-----------------------------------------------------------------------------
The following changes since commit 676ad585531e965416fd958747894541dabcec96:
  Linus Torvalds (1):
        Merge branch 'for-linus' of git://git.kernel.org/.../bp/bp

are available in the git repository at:

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

Abhijith Das (1):
      GFS2: Fix error code

Steven Whitehouse (1):
      GFS2: Fix bmap allocation corner-case bug

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



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-02-04 10:06 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-02-04 10:06 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, cluster-devel

Hi,

Please consider pulling the following two changes,

Steve.

----------------------------------------------------------------------------
The following changes since commit 1a45dcfe2525e9432cb4aba461d4994fc2befe42:
  Linus Torvalds (1):
        Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block

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: Wait for unlock completion on umount
      GFS2: Extend umount wait coverage to full glock lifetime

 fs/gfs2/glock.c      |    4 ++++
 fs/gfs2/glock.h      |    2 +-
 fs/gfs2/incore.h     |    2 ++
 fs/gfs2/lock_dlm.c   |   11 ++++++++---
 fs/gfs2/ops_fstype.c |   12 +++++++++++-
 fs/gfs2/super.c      |    1 +
 6 files changed, 27 insertions(+), 5 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2010-01-11 14:24 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2010-01-11 14:24 UTC (permalink / raw)
  To: torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following GFS2 bug fixes,

Steve.


The following changes since commit 74d2e4f8d79ae0c4b6ec027958d5b18058662eea:
  Linus Torvalds (1):
        Linux 2.6.33-rc3

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 (4):
      GFS2: Ensure uptodate inode size when using O_APPEND
      GFS2: Fix locking bug in rename
      GFS2: Fix gfs2_xattr_acl_chmod()
      GFS2: Use MAX_LFS_FILESIZE for meta inode size

 fs/gfs2/file.c      |   38 ++++++++++++++++++++++++++++++++++++--
 fs/gfs2/meta_io.c   |    2 +-
 fs/gfs2/ops_inode.c |    6 ++++--
 fs/gfs2/xattr.c     |   21 +++++++++++----------
 4 files changed, 52 insertions(+), 15 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2009-08-14 13:01 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2009-08-14 13:01 UTC (permalink / raw)
  To: torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following fix,

Steve.

------------------------------------------------------------------------
The following changes since commit 64f1607ffbbc772685733ea63e6f7f4183df1b16:
  Linus Torvalds (1):
        Linux 2.6.31-rc6

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 permissions on "recover" file

 fs/gfs2/sys.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

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

>From d7e623da1a757fbd8c117fa29190ca8bef14dab3 Mon Sep 17 00:00:00 2001
From: Steven Whitehouse <swhiteho@redhat.com>
Date: Tue, 11 Aug 2009 11:20:11 +0100
Subject: [PATCH] GFS2: Fix permissions on "recover" file

Although this file is only ever written and not read by
userspace, it seems that the utils are opening this
file O_RDWR, so we need to allow that.

Also fixes the whitespace which seemed to be broken.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Cc: David Teigland <teigland@redhat.com>
---
 fs/gfs2/sys.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c
index 23419dc..a7cbfbd 100644
--- a/fs/gfs2/sys.c
+++ b/fs/gfs2/sys.c
@@ -386,16 +386,16 @@ static ssize_t jid_show(struct gfs2_sbd *sdp, char *buf)
 #define GDLM_ATTR(_name,_mode,_show,_store) \
 static struct gfs2_attr gdlm_attr_##_name = __ATTR(_name,_mode,_show,_store)
 
-GDLM_ATTR(proto_name,     0444, proto_name_show,	NULL);
-GDLM_ATTR(block,          0644, block_show,		block_store);
-GDLM_ATTR(withdraw,       0644, withdraw_show,		withdraw_store);
-GDLM_ATTR(id,             0444, lkid_show,		NULL);
-GDLM_ATTR(jid,		  0444, jid_show,		NULL);
-GDLM_ATTR(first,          0444, lkfirst_show,		NULL);
-GDLM_ATTR(first_done,     0444, first_done_show,	NULL);
-GDLM_ATTR(recover,        0200, NULL,			recover_store);
-GDLM_ATTR(recover_done,   0444, recover_done_show,	NULL);
-GDLM_ATTR(recover_status, 0444, recover_status_show,	NULL);
+GDLM_ATTR(proto_name,		0444, proto_name_show,		NULL);
+GDLM_ATTR(block,		0644, block_show,		block_store);
+GDLM_ATTR(withdraw,		0644, withdraw_show,		withdraw_store);
+GDLM_ATTR(id,			0444, lkid_show,		NULL);
+GDLM_ATTR(jid,			0444, jid_show,			NULL);
+GDLM_ATTR(first,		0444, lkfirst_show,		NULL);
+GDLM_ATTR(first_done,		0444, first_done_show,		NULL);
+GDLM_ATTR(recover,		0600, NULL,			recover_store);
+GDLM_ATTR(recover_done,		0444, recover_done_show,	NULL);
+GDLM_ATTR(recover_status,	0444, recover_status_show,	NULL);
 
 static struct attribute *lock_module_attrs[] = {
 	&gdlm_attr_proto_name.attr,
-- 
1.6.2.5




^ permalink raw reply related	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
  2009-07-30 13:45 GFS2: Pre-pull patch posting (fixes) Steven Whitehouse
@ 2009-07-30 13:02 ` Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2009-07-30 13:02 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, cluster-devel

Hi,

Please consider pulling the following changes,

Steve.

----------------------------------------------------------------------------
The following changes since commit 4be3bd7849165e7efa6b0b35a23d6a3598d97465:
  Linus Torvalds (1):
        Linux 2.6.31-rc4

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 (5):
      GFS2: keep statfs info in sync on grows
      GFS2: Fix panic in glock memory shrinker
      GFS2: Don't put unlikely reclaim candidates on the reclaim list.
      GFS2: Fix incorrent statfs consistency check
      GFS2: remove dcache entries for remote deleted inodes

Steven Whitehouse (2):
      GFS2: Shrink the shrinker
      GFS2: Don't try and dealloc own inode

 fs/gfs2/aops.c   |   39 +++++++++++++++
 fs/gfs2/glock.c  |  138 +++++++++++++++++++++++++++++++++++------------------
 fs/gfs2/glock.h  |    3 +
 fs/gfs2/glops.c  |   21 ++++++++
 fs/gfs2/incore.h |    2 +
 fs/gfs2/rgrp.c   |   23 ++++------
 fs/gfs2/super.c  |   40 ++++++++++------
 fs/gfs2/super.h  |    4 ++
 8 files changed, 195 insertions(+), 75 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2009-04-23 13:13 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2009-04-23 13:13 UTC (permalink / raw)
  To: torvalds; +Cc: cluster-devel, linux-kernel

Hi,

Please consider pulling the following GFS2 fixes,

Steve.

--------------------------------------------------------------------------------
The following changes since commit 091069740304c979f957ceacec39c461d0192158:
  Linus Torvalds (1):
        Linux 2.6.30-rc3

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 (3):
      bitops: Add __ffs64 bitop
      GFS2: Fix bug in block allocation
      GFS2: Ensure that the inode goal block settings are updated

 fs/gfs2/rgrp.c         |   13 ++++++++++---
 include/linux/bitops.h |   19 +++++++++++++++++++
 2 files changed, 29 insertions(+), 3 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

* GFS2: Pull request (fixes)
@ 2009-01-07 10:21 Steven Whitehouse
  0 siblings, 0 replies; 40+ messages in thread
From: Steven Whitehouse @ 2009-01-07 10:21 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, cluster-devel

Hi,

Please consider pulling the following small fixes,

Steve.

-----------------------------------------------------------------------------------
The following changes since commit ede6f5aea054d3fb67c78857f7abdee602302043:
  Linus Torvalds (1):
        Fix up 64-bit byte swaps for most 32-bit architectures

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: Fix typo in gfs_page_mkwrite()

Steven Whitehouse (2):
      GFS2: Set GFP_NOFS when allocating page on write
      GFS2: LSF and LBD are now one and the same

 fs/gfs2/Kconfig       |    2 +-
 fs/gfs2/ops_address.c |    1 +
 fs/gfs2/ops_file.c    |    2 +-
 3 files changed, 3 insertions(+), 2 deletions(-)



^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2014-09-16 10:11 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-23 14:05 GFS2: Pull request (fixes) Steven Whitehouse
2011-05-23 14:05 ` [Cluster-devel] " Steven Whitehouse
  -- strict thread matches above, loose matches on Subject: below --
2014-09-16 10:11 Steven Whitehouse
2014-07-18 11:21 Steven Whitehouse
2014-01-02 12:41 Steven Whitehouse
2013-11-22 10:39 Steven Whitehouse
2013-08-19  9:26 Steven Whitehouse
2013-08-19 16:33 ` Linus Torvalds
2013-08-19  9:24 Steven Whitehouse
2013-06-04 15:40 Steven Whitehouse
2013-05-24 14:05 Steven Whitehouse
2013-04-05 10:34 Steven Whitehouse
2013-04-05 16:27 ` David Teigland
2013-04-05 16:51   ` Steven Whitehouse
2013-04-05 16:53   ` Linus Torvalds
2013-04-05 17:52     ` Steven Whitehouse
2013-01-28 10:31 Steven Whitehouse
2013-01-03 12:28 Steven Whitehouse
2012-11-07 10:58 Steven Whitehouse
2012-09-13 13:42 Steven Whitehouse
2012-04-11 10:21 Steven Whitehouse
2012-04-11 10:18 Steven Whitehouse
2012-02-28 11:49 Steven Whitehouse
2011-07-27 10:00 Steven Whitehouse
2011-07-14 15:16 Steven Whitehouse
2011-04-19  9:13 Steven Whitehouse
2011-01-19 10:50 Steven Whitehouse
2010-11-29 13:42 Steven Whitehouse
2010-11-15 15:41 Steven Whitehouse
2010-09-17 13:59 Steven Whitehouse
2010-07-15 14:35 Steven Whitehouse
2010-05-25  8:51 Steven Whitehouse
2010-03-11 17:41 Steven Whitehouse
2010-02-12 11:37 Steven Whitehouse
2010-02-04 10:06 Steven Whitehouse
2010-01-11 14:24 Steven Whitehouse
2009-08-14 13:01 Steven Whitehouse
2009-07-30 13:45 GFS2: Pre-pull patch posting (fixes) Steven Whitehouse
2009-07-30 13:02 ` GFS2: Pull request (fixes) Steven Whitehouse
2009-04-23 13:13 Steven Whitehouse
2009-01-07 10:21 Steven Whitehouse

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.