cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] [PATCH 0/4] Fix erroneous ETXTBSY problems with GFS2
@ 2015-10-28 14:20 Bob Peterson
  2015-10-28 14:20 ` [Cluster-devel] [PATCH 1/4] GFS2: Reduce size of incore inode Bob Peterson
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Bob Peterson @ 2015-10-28 14:20 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Commit 2b3dcf3 (GFS2: Increase i_writecount during gfs2_setattr_size)
added a bunch of calls to get_write_access() in order to ensure file close
could not delete an inode's multi-block reservation while the function
was running. For example, close was interfering with setattr_size.
The patch worked as expected, but there was an unintended consequence:
If a GFS2 file is open, you can't do these functions (like chown) or
you'll get ETXTBSY (Text file busy). For example, if you're running a
program and try to do chown or chattr while it's running, it will fail.

This problem is easily fixed by reverting that patch and including the
multi-block reservation structure inside the gfs2 inode. The problem is,
the gfs2 inode then grows to a much bigger size.

This patch set takes some measures to reduce the size of the gfs2 inode
and then making the reservations part of the inode.

Before the patch set, GFS2 inodes were 880 bytes in length. Adding just
the reservations structure bumped it up to 1304, which is not good.
With all these patches in place, the size is 1008, which is comparable
to ext4 (1048) and xfs (1088). Further savings are possible (and I've
prototyped a few) but I don't want to get too extreme here.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
---
Bob Peterson (4):
  GFS2: Reduce size of incore inode
  GFS2: Reduce inode size by using 32-bit i_generation
  GFS2: Extract quota data from reservations structure (revert 5407e24)
  GFS2: Make rgrp reservations part of the gfs2_inode structure

 fs/gfs2/aops.c                   |  2 +-
 fs/gfs2/bmap.c                   | 15 ++-----
 fs/gfs2/file.c                   | 36 +++-------------
 fs/gfs2/glock.c                  | 10 ++---
 fs/gfs2/glock.h                  | 26 ++++++------
 fs/gfs2/glops.c                  |  2 +-
 fs/gfs2/incore.h                 | 28 ++++++++-----
 fs/gfs2/inode.c                  | 43 +++----------------
 fs/gfs2/main.c                   | 16 +++----
 fs/gfs2/quota.c                  | 90 +++++++++++++++++++++++-----------------
 fs/gfs2/rgrp.c                   | 66 +++++++++--------------------
 fs/gfs2/rgrp.h                   |  5 +--
 fs/gfs2/super.c                  |  9 ++--
 fs/gfs2/util.c                   |  2 +-
 fs/gfs2/util.h                   |  2 +-
 include/uapi/linux/gfs2_ondisk.h | 25 +++++++++--
 16 files changed, 161 insertions(+), 216 deletions(-)

-- 
2.4.3



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

end of thread, other threads:[~2015-10-30 10:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-28 14:20 [Cluster-devel] [PATCH 0/4] Fix erroneous ETXTBSY problems with GFS2 Bob Peterson
2015-10-28 14:20 ` [Cluster-devel] [PATCH 1/4] GFS2: Reduce size of incore inode Bob Peterson
2015-10-30 10:34   ` Steven Whitehouse
2015-10-28 14:20 ` [Cluster-devel] [PATCH 2/4] GFS2: Reduce inode size by using 32-bit i_generation Bob Peterson
2015-10-29 17:21   ` Andrew Price
2015-10-29 18:39     ` Bob Peterson
2015-10-29 18:43       ` [Cluster-devel] [GFS2 PATCH 2/4 v2] " Bob Peterson
2015-10-30 10:42   ` [Cluster-devel] [PATCH 2/4] " Steven Whitehouse
2015-10-28 14:20 ` [Cluster-devel] [PATCH 3/4] GFS2: Extract quota data from reservations structure (revert 5407e24) Bob Peterson
2015-10-28 14:20 ` [Cluster-devel] [PATCH 4/4] GFS2: Make rgrp reservations part of the gfs2_inode structure Bob Peterson
2015-10-29 17:21 ` [Cluster-devel] [PATCH 0/4] Fix erroneous ETXTBSY problems with GFS2 Andrew Price

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).