Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a33f80a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (25 commits)
  GFS2: Merge gfs2_get_sb into gfs2_get_sb_meta
  GFS2: Fix cache coherency between truncate and O_DIRECT read
  GFS2: Fix locking issue mounting gfs2meta fs
  GFS2: Remove unused variable
  GFS2: smbd proccess hangs with flock() call.
  GFS2: Remove args subdir from gfs2 sysfs files
  GFS2: Remove lockstruct subdir from gfs2 sysfs files
  GFS2: Move gfs2_unlink_ok into ops_inode.c
  GFS2: Move gfs2_readlinki into ops_inode.c
  GFS2: Move gfs2_rmdiri into ops_inode.c
  GFS2: Merge mount.c and ops_super.c into super.c
  GFS2: Clean up some file names
  GFS2: Be more aggressive in reclaiming unlinked inodes
  GFS2: Add a rgrp bitmap full flag
  GFS2: Improve resource group error handling
  GFS2: Don't warn when delete inode fails on ro filesystem
  GFS2: Update docs
  GFS2: Umount recovery race fix
  GFS2: Remove a couple of unused sysfs entries
  GFS2: Add commit= mount option
  ...
parents c29f5ec0 003dec89
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ go_lock | Called for the first local holder of a lock
go_unlock        | Called on the final local unlock of a lock
go_dump          | Called to print content of object for debugfs file, or on
                 | error to dump glock to the log.
go_type;         | The type of the glock, LM_TYPE_.....
go_type          | The type of the glock, LM_TYPE_.....
go_min_hold_time | The minimum hold time

The minimum hold time for each lock is the time after a remote lock
+11 −8
Original line number Diff line number Diff line
@@ -11,18 +11,15 @@ 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:
GFS uses interchangable inter-node locking mechanisms, the currently
supported mechanisms are:

  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
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
@@ -31,13 +28,19 @@ 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.
If you are using Fedora, you need to install the gfs2-utils package
and, for lock_dlm, you will also need to install the cman package
and write a cluster.conf as per the documentation.

GFS2 is not on-disk compatible with previous versions of GFS, but it
is pretty close.

The following man pages can be found at the URL above:
  gfs2_fsck	to repair a filesystem
  fsck.gfs2	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
  gfs2_convert	to convert a gfs filesystem to gfs2 in-place
  mount.gfs2	to help mount(8) mount a filesystem
  mkfs.gfs2	to make a filesystem
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ config GFS2_FS
	select IP_SCTP if DLM_SCTP
	select FS_POSIX_ACL
	select CRC32
	select SLOW_WORK
	help
	  A cluster filesystem.

+2 −2
Original line number Diff line number Diff line
obj-$(CONFIG_GFS2_FS) += gfs2.o
gfs2-y := acl.o bmap.o dir.o eaops.o eattr.o glock.o \
	glops.o inode.o log.o lops.o main.o meta_io.o \
	mount.o ops_address.o ops_dentry.o ops_export.o ops_file.o \
	ops_fstype.o ops_inode.o ops_super.o quota.o \
	aops.o dentry.o export.o file.o \
	ops_fstype.o ops_inode.o quota.o \
	recovery.o rgrp.o super.o sys.o trans.o util.o

gfs2-$(CONFIG_GFS2_FS_LOCKING_DLM) += lock_dlm.o
+10 −11
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@
#include "inode.h"
#include "log.h"
#include "meta_io.h"
#include "ops_address.h"
#include "quota.h"
#include "trans.h"
#include "rgrp.h"
@@ -781,10 +780,12 @@ static int gfs2_stuffed_write_end(struct inode *inode, struct buffer_head *dibh,
	unlock_page(page);
	page_cache_release(page);

	if (copied) {
		if (inode->i_size < to) {
			i_size_write(inode, to);
			ip->i_disksize = inode->i_size;
		di->di_size = cpu_to_be64(inode->i_size);
		}
		gfs2_dinode_out(ip, di);
		mark_inode_dirty(inode);
	}

@@ -824,7 +825,6 @@ static int gfs2_write_end(struct file *file, struct address_space *mapping,
	struct gfs2_sbd *sdp = GFS2_SB(inode);
	struct buffer_head *dibh;
	struct gfs2_alloc *al = ip->i_alloc;
	struct gfs2_dinode *di;
	unsigned int from = pos & (PAGE_CACHE_SIZE - 1);
	unsigned int to = from + len;
	int ret;
@@ -847,11 +847,10 @@ static int gfs2_write_end(struct file *file, struct address_space *mapping,
		gfs2_page_add_databufs(ip, page, from, to);

	ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);

	if (likely(ret >= 0) && (inode->i_size > ip->i_disksize)) {
		di = (struct gfs2_dinode *)dibh->b_data;
	if (ret > 0) {
		if (inode->i_size > ip->i_disksize)
			ip->i_disksize = inode->i_size;
		di->di_size = cpu_to_be64(inode->i_size);
		gfs2_dinode_out(ip, dibh->b_data);
		mark_inode_dirty(inode);
	}

Loading