2006-02-24 15:01:19

by Steven Whitehouse

[permalink] [raw]
Subject: GFS2 Filesystem [13/16]

[PATCH 13/16] GFS2:

This hooks GFS2 into the kernel's build system. It also adds some
documentation. Note that the dlm has been moved to be under
fs/dlm as per Ingo Molnar's suggestion. This patch series doesn't
include the dlm however as its already in both -mm and the git
tree containing GFS2 at kernel.org.


Signed-off-by: Steven Whitehouse <[email protected]>
Signed-off-by: David Teigland <[email protected]>


Documentation/filesystems/gfs2.txt | 44 +++++++++++++++++++++++++++++++++++
fs/Kconfig | 6 ++--
fs/Makefile | 2 +
fs/gfs2/Kconfig | 46 +++++++++++++++++++++++++++++++++++++
fs/gfs2/Makefile | 42 +++++++++++++++++++++++++++++++++
5 files changed, 137 insertions(+), 3 deletions(-)

--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -323,6 +323,7 @@ config FS_POSIX_ACL
default n

source "fs/xfs/Kconfig"
+source "fs/gfs2/Kconfig"

config OCFS2_FS
tristate "OCFS2 file system support (EXPERIMENTAL)"
@@ -883,8 +884,6 @@ config CONFIGFS_FS
Both sysfs and configfs can and should exist together on the
same system. One is not a replacement for the other.

- If unsure, say N.
-
endmenu

menu "Miscellaneous filesystems"
@@ -1327,7 +1326,7 @@ config UFS_FS

config UFS_FS_WRITE
bool "UFS file system write support (DANGEROUS)"
- depends on UFS_FS && EXPERIMENTAL
+ depends on UFS_FS && EXPERIMENTAL && BROKEN
help
Say Y here if you want to try writing to UFS partitions. This is
experimental, so you should back up your UFS partitions beforehand.
@@ -1830,6 +1829,7 @@ source "fs/partitions/Kconfig"
endmenu

source "fs/nls/Kconfig"
+source "fs/dlm/Kconfig"

endmenu

--- a/fs/Makefile
+++ b/fs/Makefile
@@ -48,6 +48,7 @@ obj-$(CONFIG_SYSFS) += sysfs/
obj-y += devpts/

obj-$(CONFIG_PROFILING) += dcookies.o
+obj-$(CONFIG_DLM) += dlm/

# Do not add any filesystems before this line
obj-$(CONFIG_REISERFS_FS) += reiserfs/
@@ -103,3 +104,4 @@ obj-$(CONFIG_HPPFS) += hppfs/
obj-$(CONFIG_DEBUG_FS) += debugfs/
obj-$(CONFIG_CONFIGFS_FS) += configfs/
obj-$(CONFIG_OCFS2_FS) += ocfs2/
+obj-$(CONFIG_GFS2_FS) += gfs2/
--- /dev/null
+++ b/fs/gfs2/Makefile
@@ -0,0 +1,42 @@
+obj-$(CONFIG_GFS2_FS) += gfs2.o
+gfs2-y := \
+ acl.o \
+ bits.o \
+ bmap.o \
+ daemon.o \
+ dir.o \
+ eaops.o \
+ eattr.o \
+ glock.o \
+ glops.o \
+ inode.o \
+ lm.o \
+ log.o \
+ lops.o \
+ locking.o \
+ lvb.o \
+ main.o \
+ meta_io.o \
+ mount.o \
+ ondisk.o \
+ ops_address.o \
+ ops_dentry.o \
+ ops_export.o \
+ ops_file.o \
+ ops_fstype.o \
+ ops_inode.o \
+ ops_super.o \
+ ops_vm.o \
+ page.o \
+ quota.o \
+ recovery.o \
+ rgrp.o \
+ super.o \
+ sys.o \
+ trans.o \
+ unlinked.o \
+ util.o
+
+obj-$(CONFIG_GFS2_FS_LOCKING_NOLOCK) += locking/nolock/
+obj-$(CONFIG_GFS2_FS_LOCKING_DLM) += locking/dlm/
+
--- /dev/null
+++ b/fs/gfs2/Kconfig
@@ -0,0 +1,46 @@
+config GFS2_FS
+ tristate "GFS2 file system support"
+ default m
+ depends on EXPERIMENTAL
+ select FS_POSIX_ACL
+ select SYSFS
+ help
+ A cluster filesystem.
+
+ Allows a cluster of computers to simultaneously use a block device
+ that is shared between them (with FC, iSCSI, NBD, etc...). GFS reads
+ and writes to the block device like a local filesystem, but also uses
+ a lock module to allow the computers coordinate their I/O so
+ filesystem consistency is maintained. One of the nifty features of
+ GFS is perfect consistency -- changes made to the filesystem on one
+ machine show up immediately on all other machines in the cluster.
+
+ To use the GFS2 filesystem, you will need to enable one or more of
+ the below locking modules. Documentation and utilities for GFS2 can
+ be found here: http://sources.redhat.com/cluster/gfs/
+
+config GFS2_FS_LOCKING_NOLOCK
+ tristate "GFS2 \"nolock\" locking module"
+ depends on GFS2_FS
+ help
+ Single node locking module for GFS2.
+
+ Use this module if you want to use GFS2 on a single node without
+ its clustering features. You can still take advantage of the
+ large file support, and upgrade to running a full cluster later on
+ if required.
+
+ If you will only be using GFS2 in cluster mode, you do not need this
+ module.
+
+config GFS2_FS_LOCKING_DLM
+ tristate "GFS2 DLM locking module"
+ depends on GFS2_FS
+ select DLM
+ help
+ Multiple node locking module for GFS2
+
+ Most users of GFS2 will require this module. It provides the locking
+ interface between GFS2 and the DLM, which is required to use GFS2
+ in a cluster environment.
+
--- /dev/null
+++ b/Documentation/filesystems/gfs2.txt
@@ -0,0 +1,44 @@
+Global File System
+------------------
+
+http://sources.redhat.com/cluster/
+
+GFS is a cluster file system. It allows a cluster of computers to
+simultaneously use a block device that is shared between them (with FC,
+iSCSI, NBD, etc). GFS reads and writes to the block device like a local
+file system, but also uses a lock module to allow the computers coordinate
+their I/O so file system consistency is maintained. One of the nifty
+features of GFS is perfect consistency -- changes made to the file system
+on one machine show up immediately on all other machines in the cluster.
+
+GFS uses interchangable inter-node locking mechanisms. Different lock
+modules can plug into GFS and each file system selects the appropriate
+lock module at mount time. Lock modules include:
+
+ lock_nolock -- allows gfs to be used as a local file system
+
+ lock_dlm -- uses a distributed lock manager (dlm) for inter-node locking
+ The dlm is found at linux/fs/dlm/
+
+In addition to interfacing with an external locking manager, a gfs lock
+module is responsible for interacting with external cluster management
+systems. Lock_dlm depends on user space cluster management systems found
+at the URL above.
+
+To use gfs as a local file system, no external clustering systems are
+needed, simply:
+
+ $ mkfs -t gfs2 -p lock_nolock -j 1 /dev/block_device
+ $ mount -t gfs2 /dev/block_device /dir
+
+GFS2 is not on-disk compatible with previous versions of GFS.
+
+The following man pages can be found at the URL above:
+ gfs2_mkfs to make a filesystem
+ gfs2_fsck to repair a filesystem
+ gfs2_grow to expand a filesystem online
+ gfs2_jadd to add journals to a filesystem online
+ gfs2_tool to manipulate, examine and tune a filesystem
+ gfs2_quota to examine and change quota values in a filesystem
+ mount.gfs2 to find mount options
+



2006-02-24 22:03:15

by Pavel Machek

[permalink] [raw]
Subject: Re: GFS2 Filesystem [13/16]

Hi!

> Documentation/filesystems/gfs2.txt | 44 +++++++++++++++++++++++++++++++++++
> fs/Kconfig | 6 ++--
> fs/Makefile | 2 +
> fs/gfs2/Kconfig | 46 +++++++++++++++++++++++++++++++++++++
> fs/gfs2/Makefile | 42 +++++++++++++++++++++++++++++++++
> 5 files changed, 137 insertions(+), 3 deletions(-)
>
> --- a/fs/Kconfig
> +++ b/fs/Kconfig
> @@ -883,8 +884,6 @@ config CONFIGFS_FS
> Both sysfs and configfs can and should exist together on the
> same system. One is not a replacement for the other.
>
> - If unsure, say N.
> -

Why? Most users probably still want configfs_fs=N.

> @@ -1327,7 +1326,7 @@ config UFS_FS
>
> config UFS_FS_WRITE
> bool "UFS file system write support (DANGEROUS)"
> - depends on UFS_FS && EXPERIMENTAL
> + depends on UFS_FS && EXPERIMENTAL && BROKEN
> help

Well, maybe, but I thought this is gfs2 patch...


> +To use gfs as a local file system, no external clustering systems are
> +needed, simply:
> +
> + $ mkfs -t gfs2 -p lock_nolock -j 1 /dev/block_device
> + $ mount -t gfs2 /dev/block_device /dir
> +
> +GFS2 is not on-disk compatible with previous versions of GFS.
> +
> +The following man pages can be found at the URL above:
> + gfs2_mkfs to make a filesystem

I thought conventional name would be mkfs.gfs2 ... could you use that
variant?

Pavel
--
Thanks, Sharp!

2006-02-24 22:31:12

by Joel Becker

[permalink] [raw]
Subject: Re: GFS2 Filesystem [13/16]

On Wed, Feb 22, 2006 at 06:50:59PM +0000, Pavel Machek wrote:
> > --- a/fs/Kconfig
> > +++ b/fs/Kconfig
> > @@ -883,8 +884,6 @@ config CONFIGFS_FS
> > Both sysfs and configfs can and should exist together on the
> > same system. One is not a replacement for the other.
> >
> > - If unsure, say N.
> > -
>
> Why? Most users probably still want configfs_fs=N.

What version is this patch against? This line was removed from
mainline a while ago.
As to why it was removed, the discussion happened back then.
Basically, if something requires CONFIGFS_FS (eg, OCFS2) and is a
module, then a user is asked whether they want configfs as a module or
built-in. Text saying "say N" is completely incorrect there.

Joel

--

"If the human brain were so simple we could understand it, we would
be so simple that we could not."
- W. A. Clouston

Joel Becker
Principal Software Developer
Oracle
E-mail: [email protected]
Phone: (650) 506-8127

2006-02-27 08:41:48

by Steven Whitehouse

[permalink] [raw]
Subject: Re: GFS2 Filesystem [13/16]

Hi,

On Wed, 2006-02-22 at 18:50 +0000, Pavel Machek wrote:
> Hi!
>
> > Documentation/filesystems/gfs2.txt | 44 +++++++++++++++++++++++++++++++++++
> > fs/Kconfig | 6 ++--
> > fs/Makefile | 2 +
> > fs/gfs2/Kconfig | 46 +++++++++++++++++++++++++++++++++++++
> > fs/gfs2/Makefile | 42 +++++++++++++++++++++++++++++++++
> > 5 files changed, 137 insertions(+), 3 deletions(-)
> >
> > --- a/fs/Kconfig
> > +++ b/fs/Kconfig
> > @@ -883,8 +884,6 @@ config CONFIGFS_FS
> > Both sysfs and configfs can and should exist together on the
> > same system. One is not a replacement for the other.
> >
> > - If unsure, say N.
> > -
>
> Why? Most users probably still want configfs_fs=N.
>
Yes, this one has crept in by mistake I think. I'll fix that right away.

> > @@ -1327,7 +1326,7 @@ config UFS_FS
> >
> > config UFS_FS_WRITE
> > bool "UFS file system write support (DANGEROUS)"
> > - depends on UFS_FS && EXPERIMENTAL
> > + depends on UFS_FS && EXPERIMENTAL && BROKEN
> > help
>
> Well, maybe, but I thought this is gfs2 patch...
>
Indeed. This even does not feature in any of the gfs2 patches in the git
tree. For some reason the command I used to create the diff has picked
up this change as well. I'm not entirely sure why as its in both the
gfs2 tree and the origin tree (Linus' tree).

>
> > +To use gfs as a local file system, no external clustering systems are
> > +needed, simply:
> > +
> > + $ mkfs -t gfs2 -p lock_nolock -j 1 /dev/block_device
> > + $ mount -t gfs2 /dev/block_device /dir
> > +
> > +GFS2 is not on-disk compatible with previous versions of GFS.
> > +
> > +The following man pages can be found at the URL above:
> > + gfs2_mkfs to make a filesystem
>
> I thought conventional name would be mkfs.gfs2 ... could you use that
> variant?
>
> Pavel
Yes, you can. I just always tend to run it through the mkfs front end
rather than directly. It installs itself under mkfs.gfs2 of course and
we need up update the man page (GFS1 used to call its mkfs gfs_mkfs but
I saw no reason not to make the change to a more conventional name).

Steve.


2006-02-27 08:53:58

by Steven Whitehouse

[permalink] [raw]
Subject: Re: GFS2 Filesystem [13/16]

Hi,

On Fri, 2006-02-24 at 14:30 -0800, Joel Becker wrote:
> On Wed, Feb 22, 2006 at 06:50:59PM +0000, Pavel Machek wrote:
> > > --- a/fs/Kconfig
> > > +++ b/fs/Kconfig
> > > @@ -883,8 +884,6 @@ config CONFIGFS_FS
> > > Both sysfs and configfs can and should exist together on the
> > > same system. One is not a replacement for the other.
> > >
> > > - If unsure, say N.
> > > -
> >
> > Why? Most users probably still want configfs_fs=N.
>
> What version is this patch against? This line was removed from
> mainline a while ago.
> As to why it was removed, the discussion happened back then.
> Basically, if something requires CONFIGFS_FS (eg, OCFS2) and is a
> module, then a user is asked whether they want configfs as a module or
> built-in. Text saying "say N" is completely incorrect there.
>
> Joel
>
Checking the gfs2 git tree and Linus' tree again reveals that its not
something that we changed. I think I must have fed the wrong command to
git to produce the diff as the change is quite clearly there, exactly
same in both trees,

Steve.