[git patches] ocfs2 and configfs updates
From: Mark Fasheh
Date: Fri Jan 25 2008 - 18:19:18 EST
These patches comprise the bulk of our outstanding changes for Ocfs2 and
Configfs.
Configfs gets some lockdep updates, and we remove it's EXPERIMENTAL tag as
things have been quite stable for some time now.
Ocfs2 gets fixes that made it in too late for 2.6.24, and several new
features. The most interesting are listed below:
We've been on the path to removing the "vote" cluster messaging in Ocfs2 for
some time now. I'm happy to announce that this series gets rid of the last
set of messages, which were used for "mount" and "unmount". Though not
really a performance problem, the messages required that Ocfs2 track node
information such as IP address, port, etc. By removing those votes, we no
longer need that information in the file system (the dlm still uses it, but
that's ok). As such, total kernel code complexity goes down and we get Ocfs2
in shape for a future where the cluster stack can be kept in userspace and
Ocfs2 can then easily plug into something like fs/dlm.
Initially, Ocfs2 was designed with two locks per inode - a "meta lock"
covering inode meta data, and a "data lock" covering inode data. Recently,
that decision has been revisited in light of some facts: The majority of
users mount the file system in data=ordered mode, which means that
transferring a meta data lock also syncs inode data. Having a 2nd, mostly
unused lock in place only meant extra messaging for lock mastery. Merging
the functionality into one inode lock improves that situation by
streamlining the most common cases of cluster locking.
Ocfs2 now supports online resize. Userspace does most of the setup and then
initiates the operation via a set of Ocfs2 specific ioctls(). This is
similar to how ext3 handles things, though we don't use the same exact
ioctls because Ocfs2 has a different disk structure.
Finally, Ocfs2 now supports cluster aware flock(). This is pretty straight
forward in that we map flock() requests directly to dlm locks. Mandatory
locks aren't supported, as they would require some expensive cluster
messaging. Posix file locks (lockf()) support is a very early work in
progress, so it'll have to wait until at least 2.6.26, quite possibly later.
In the meantime, flock() support is ready and works well.
Also included in this series is a trivial patch to split out some of
include/linux/dlm.h into an include/linux/dlmconstants.h. It's actually part
of a series of patches targetting 2.6.26 which teach Ocfs2 how to optionally
plug into fs/dlm. The patch stands on it's own as a nice cleanup though, so
I'm sending it out for 2.6.25.
And of course, all changes made as a result of comments on the patches (I
sent them out last week) are included.
--Mark
Please pull from 'upstream-linus' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2.git upstream-linus
to receive the following updates:
Documentation/filesystems/ocfs2.txt | 16 +-
Documentation/ioctl-number.txt | 1 +
fs/Kconfig | 14 +-
fs/configfs/dir.c | 5 +-
fs/configfs/file.c | 2 +-
fs/ocfs2/Makefile | 5 +-
fs/ocfs2/alloc.c | 8 +-
fs/ocfs2/aops.c | 137 ++++---
fs/ocfs2/buffer_head_io.c | 65 +++-
fs/ocfs2/buffer_head_io.h | 2 +
fs/ocfs2/cluster/heartbeat.h | 2 +-
fs/ocfs2/cluster/tcp.h | 4 +-
fs/ocfs2/cluster/tcp_internal.h | 8 +-
fs/ocfs2/cluster/ver.c | 2 +-
fs/ocfs2/dcache.c | 8 +-
fs/ocfs2/dir.c | 8 +-
fs/ocfs2/dlm/dlmfsver.c | 2 +-
fs/ocfs2/dlm/dlmrecovery.c | 19 +-
fs/ocfs2/dlm/dlmver.c | 2 +-
fs/ocfs2/dlmglue.c | 546 +++++++++++++++++++-------
fs/ocfs2/dlmglue.h | 31 +-
fs/ocfs2/endian.h | 5 -
fs/ocfs2/export.c | 8 +-
fs/ocfs2/file.c | 163 +++++---
fs/ocfs2/file.h | 6 +
fs/ocfs2/heartbeat.c | 80 ----
fs/ocfs2/heartbeat.h | 2 -
fs/ocfs2/inode.c | 84 ++--
fs/ocfs2/inode.h | 10 +-
fs/ocfs2/ioctl.c | 31 ++-
fs/ocfs2/journal.c | 51 ++--
fs/ocfs2/journal.h | 6 +
fs/ocfs2/localalloc.c | 50 ++-
fs/ocfs2/locks.c | 125 ++++++
fs/ocfs2/{vote.h => locks.h} | 29 +-
fs/ocfs2/mmap.c | 17 +-
fs/ocfs2/namei.c | 66 ++--
fs/ocfs2/ocfs2.h | 35 +-
fs/ocfs2/ocfs2_fs.h | 22 +
fs/ocfs2/ocfs2_lockid.h | 5 +
fs/ocfs2/resize.c | 634 +++++++++++++++++++++++++++++
fs/ocfs2/{vote.h => resize.h} | 32 +--
fs/ocfs2/slot_map.c | 19 -
fs/ocfs2/slot_map.h | 2 -
fs/ocfs2/suballoc.c | 20 +-
fs/ocfs2/suballoc.h | 8 +
fs/ocfs2/super.c | 140 ++++----
fs/ocfs2/sysfile.c | 2 +-
fs/ocfs2/ver.c | 2 +-
fs/ocfs2/vote.c | 756 -----------------------------------
include/linux/Kbuild | 1 +
include/linux/dlm.h | 140 +-------
include/linux/dlmconstants.h | 159 ++++++++
53 files changed, 1981 insertions(+), 1616 deletions(-)
create mode 100644 fs/ocfs2/locks.c
copy fs/ocfs2/{vote.h => locks.h} (54%)
create mode 100644 fs/ocfs2/resize.c
rename fs/ocfs2/{vote.h => resize.h} (50%)
delete mode 100644 fs/ocfs2/vote.c
create mode 100644 include/linux/dlmconstants.h
Jan Kara (4):
ocfs2: Silence false lockdep warnings
ocfs2: Safer read_inline_data()
ocfs2: Use generic_file_llseek
ocfs2: printf fixes
Joel Becker (2):
dlm: Split lock mode and flag constants into a sharable header.
configfs: Remove EXPERIMENTAL
Joonwoo Park (2):
configfs: dir.c fix possible recursive locking
configfs: file.c fix possible recursive locking
Marcin Slusarz (1):
ocfs2: convert byte order of constant instead of variable
Mark Fasheh (15):
ocfs2_dlm: Call node eviction callbacks from heartbeat handler
ocfs2: Remove fs dependency on ocfs2_heartbeat module
ocfs2: Remove mount/unmount votes
ocfs2: Add data downconvert worker to inode lock
ocfs2: Remove data locks
ocfs2: Rename ocfs2_meta_[un]lock
ocfs2: Readpages support
ocfs2: Documentation update
ocfs2: Add missing permission checks
ocfs2: Support commit= mount option
ocfs2: add flock lock type
ocfs2: cluster aware flock()
ocfs2: bump version number
ocfs2: document access rules for blocked_lock_list
ocfs2: clean up bh null checks
Sunil Mushran (2):
ocfs2: Local alloc window size changeable via mount option
ocfs2: Update default cluster timeouts
Tao Ma (5):
ocfs2: Initalize bitmap_cpg of ocfs2_super to be the maximum.
ocfs2: Reserve ioctl range
ocfs2: Add group extend for online resize
ocfs2: Implement group add for online resize
ocfs2/dlm: Clear joining_node on hearbeat node down
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/