[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
rpms/kernel/devel kernel-2.6.spec, 1.2480, 1.2481 linux-2.6-gfs2-dlm.patch, 1.10, 1.11 linux-2.6-gfs2-tux.patch, 1.1, 1.2
- From: fedora-cvs-commits redhat com
- To: fedora-cvs-commits redhat com
- Subject: rpms/kernel/devel kernel-2.6.spec, 1.2480, 1.2481 linux-2.6-gfs2-dlm.patch, 1.10, 1.11 linux-2.6-gfs2-tux.patch, 1.1, 1.2
- Date: Mon, 31 Jul 2006 16:48:16 -0400
Author: davej
Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv25484
Modified Files:
kernel-2.6.spec linux-2.6-gfs2-dlm.patch
linux-2.6-gfs2-tux.patch
Log Message:
Numerous GFS2/DLM fixes.
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2480
retrieving revision 1.2481
diff -u -r1.2480 -r1.2481
--- kernel-2.6.spec 31 Jul 2006 20:13:51 -0000 1.2480
+++ kernel-2.6.spec 31 Jul 2006 20:48:11 -0000 1.2481
@@ -1662,6 +1662,9 @@
%endif
%changelog
+* Mon Jul 31 2006 Dave Jones <davej redhat com>
+- Numerous GFS2/DLM fixes.
+
* Mon Jul 31 2006 Jeremy Katz <katzj redhat com>
- new ahci suspend patch
linux-2.6-gfs2-dlm.patch:
CREDITS | 6
Documentation/filesystems/gfs2.txt | 43
MAINTAINERS | 18
fs/Kconfig | 2
fs/Makefile | 2
fs/configfs/item.c | 2
fs/dlm/Kconfig | 21
fs/dlm/Makefile | 19
fs/dlm/ast.c | 172 +
fs/dlm/ast.h | 26
fs/dlm/config.c | 789 +++++++
fs/dlm/config.h | 42
fs/dlm/debug_fs.c | 384 +++
fs/dlm/dir.c | 423 ++++
fs/dlm/dir.h | 30
fs/dlm/dlm_internal.h | 539 +++++
fs/dlm/lock.c | 3845 +++++++++++++++++++++++++++++++++++++
fs/dlm/lock.h | 61
fs/dlm/lockspace.c | 705 ++++++
fs/dlm/lockspace.h | 25
fs/dlm/lowcomms.c | 1238 +++++++++++
fs/dlm/lowcomms.h | 26
fs/dlm/lvb_table.h | 18
fs/dlm/main.c | 97
fs/dlm/member.c | 312 +++
fs/dlm/member.h | 24
fs/dlm/memory.c | 115 +
fs/dlm/memory.h | 29
fs/dlm/midcomms.c | 140 +
fs/dlm/midcomms.h | 21
fs/dlm/rcom.c | 457 ++++
fs/dlm/rcom.h | 24
fs/dlm/recover.c | 776 +++++++
fs/dlm/recover.h | 34
fs/dlm/recoverd.c | 285 ++
fs/dlm/recoverd.h | 24
fs/dlm/requestqueue.c | 184 +
fs/dlm/requestqueue.h | 22
fs/dlm/user.c | 785 +++++++
fs/dlm/user.h | 16
fs/dlm/util.c | 161 +
fs/dlm/util.h | 22
fs/gfs2/Kconfig | 44
fs/gfs2/Makefile | 10
fs/gfs2/acl.c | 313 +++
fs/gfs2/acl.h | 37
fs/gfs2/bmap.c | 1236 +++++++++++
fs/gfs2/bmap.h | 27
fs/gfs2/daemon.c | 196 +
fs/gfs2/daemon.h | 19
fs/gfs2/dir.c | 1974 ++++++++++++++++++
fs/gfs2/dir.h | 73
fs/gfs2/eaops.c | 230 ++
fs/gfs2/eaops.h | 29
fs/gfs2/eattr.c | 1548 ++++++++++++++
fs/gfs2/eattr.h | 97
fs/gfs2/format.h | 21
fs/gfs2/gfs2.h | 31
fs/gfs2/glock.c | 2279 +++++++++++++++++++++
fs/gfs2/glock.h | 152 +
fs/gfs2/glops.c | 564 +++++
fs/gfs2/glops.h | 23
fs/gfs2/incore.h | 658 ++++++
fs/gfs2/inode.c | 1344 ++++++++++++
fs/gfs2/inode.h | 56
fs/gfs2/lm.c | 244 ++
fs/gfs2/lm.h | 41
fs/gfs2/lm_interface.h | 295 ++
fs/gfs2/locking.c | 191 +
fs/gfs2/locking/dlm/Makefile | 3
fs/gfs2/locking/dlm/lock.c | 541 +++++
fs/gfs2/locking/dlm/lock_dlm.h | 188 +
fs/gfs2/locking/dlm/main.c | 64
fs/gfs2/locking/dlm/mount.c | 256 ++
fs/gfs2/locking/dlm/plock.c | 301 ++
fs/gfs2/locking/dlm/sysfs.c | 225 ++
fs/gfs2/locking/dlm/thread.c | 359 +++
fs/gfs2/locking/nolock/Makefile | 3
fs/gfs2/locking/nolock/main.c | 259 ++
fs/gfs2/log.c | 601 +++++
fs/gfs2/log.h | 61
fs/gfs2/lops.c | 800 +++++++
fs/gfs2/lops.h | 96
fs/gfs2/lvb.c | 45
fs/gfs2/lvb.h | 19
fs/gfs2/main.c | 127 +
fs/gfs2/meta_io.c | 780 +++++++
fs/gfs2/meta_io.h | 74
fs/gfs2/mount.c | 214 ++
fs/gfs2/mount.h | 15
fs/gfs2/ondisk.c | 308 ++
fs/gfs2/ops_address.c | 778 +++++++
fs/gfs2/ops_address.h | 18
fs/gfs2/ops_dentry.c | 123 +
fs/gfs2/ops_dentry.h | 15
fs/gfs2/ops_export.c | 293 ++
fs/gfs2/ops_export.h | 19
fs/gfs2/ops_file.c | 812 +++++++
fs/gfs2/ops_file.h | 20
fs/gfs2/ops_fstype.c | 836 ++++++++
fs/gfs2/ops_fstype.h | 16
fs/gfs2/ops_inode.c | 1165 +++++++++++
fs/gfs2/ops_inode.h | 18
fs/gfs2/ops_super.c | 471 ++++
fs/gfs2/ops_super.h | 15
fs/gfs2/ops_vm.c | 194 +
fs/gfs2/ops_vm.h | 16
fs/gfs2/quota.c | 1286 ++++++++++++
fs/gfs2/quota.h | 32
fs/gfs2/recovery.c | 575 +++++
fs/gfs2/recovery.h | 32
fs/gfs2/rgrp.c | 1528 ++++++++++++++
fs/gfs2/rgrp.h | 62
fs/gfs2/super.c | 979 +++++++++
fs/gfs2/super.h | 52
fs/gfs2/sys.c | 579 +++++
fs/gfs2/sys.h | 24
fs/gfs2/trans.c | 184 +
fs/gfs2/trans.h | 34
fs/gfs2/util.c | 245 ++
fs/gfs2/util.h | 169 +
include/linux/Kbuild | 33
include/linux/dlm.h | 302 ++
include/linux/dlm_device.h | 86
include/linux/fs.h | 3
include/linux/gfs2_ondisk.h | 443 ++++
include/linux/iflags.h | 102
include/linux/kernel.h | 1
include/linux/lock_dlm_plock.h | 41
mm/filemap.c | 3
mm/readahead.c | 1
131 files changed, 40619 insertions(+), 21 deletions(-)
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.10 -r 1.11 linux-2.6-gfs2-dlm.patch
Index: linux-2.6-gfs2-dlm.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-gfs2-dlm.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- linux-2.6-gfs2-dlm.patch 21 Jul 2006 20:26:59 -0000 1.10
+++ linux-2.6-gfs2-dlm.patch 31 Jul 2006 20:48:12 -0000 1.11
@@ -67,7 +67,7 @@
+ mount.gfs2 to help mount(8) mount a filesystem
+ mkfs.gfs2 to make a filesystem
diff --git a/MAINTAINERS b/MAINTAINERS
-index e99028c..c67c3e3 100644
+index b2afc7a..e42e143 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -862,6 +862,16 @@ M: jack suse cz
@@ -106,7 +106,7 @@
index 3f00a9f..ddc7462 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -323,6 +323,7 @@ #
+@@ -323,6 +323,7 @@ config FS_POSIX_ACL
default n
source "fs/xfs/Kconfig"
@@ -1256,10 +1256,10 @@
+
diff --git a/fs/dlm/debug_fs.c b/fs/dlm/debug_fs.c
new file mode 100644
-index 0000000..49deca8
+index 0000000..8f471d9
--- /dev/null
+++ b/fs/dlm/debug_fs.c
-@@ -0,0 +1,296 @@
+@@ -0,0 +1,384 @@
+/******************************************************************************
+*******************************************************************************
+**
@@ -1280,6 +1280,9 @@
+
+#include "dlm_internal.h"
+
++#define DLM_DEBUG_BUF_LEN 4096
++static char debug_buf[DLM_DEBUG_BUF_LEN];
++static struct mutex debug_buf_lock;
+
+static struct dentry *dlm_root;
+
@@ -1290,6 +1293,10 @@
+ struct dlm_rsb *rsb;
+};
+
++/*
++ * dump all rsb's in the lockspace hash table
++ */
++
+static char *print_lockmode(int mode)
+{
+ switch (mode) {
@@ -1338,7 +1345,7 @@
+static int print_resource(struct dlm_rsb *res, struct seq_file *s)
+{
+ struct dlm_lkb *lkb;
-+ int i, lvblen = res->res_ls->ls_lvblen;
++ int i, lvblen = res->res_ls->ls_lvblen, recover_list, root_list;
+
+ seq_printf(s, "\nResource %p Name (len=%d) \"", res, res->res_length);
+ for (i = 0; i < res->res_length; i++) {
@@ -1372,6 +1379,15 @@
+ seq_printf(s, "\n");
+ }
+
++ root_list = !list_empty(&res->res_root_list);
++ recover_list = !list_empty(&res->res_recover_list);
++
++ if (root_list || recover_list) {
++ seq_printf(s, "Recovery: root %d recover %d flags %lx "
++ "count %d\n", root_list, recover_list,
++ res->res_flags, res->res_recover_locks_count);
++ }
++
+ /* Print the locks attached to this resource */
+ seq_printf(s, "Granted Queue\n");
+ list_for_each_entry(lkb, &res->res_grantqueue, lkb_statequeue)
@@ -1385,6 +1401,18 @@
+ list_for_each_entry(lkb, &res->res_waitqueue, lkb_statequeue)
+ print_lock(s, lkb, res);
+
++ if (list_empty(&res->res_lookup))
++ goto out;
++
++ seq_printf(s, "Lookup Queue\n");
++ list_for_each_entry(lkb, &res->res_lookup, lkb_rsb_lookup) {
++ seq_printf(s, "%08x %s", lkb->lkb_id,
++ print_lockmode(lkb->lkb_rqmode));
++ if (lkb->lkb_wait_type)
++ seq_printf(s, " wait_type: %d", lkb->lkb_wait_type);
++ seq_printf(s, "\n");
++ }
++ out:
+ return 0;
+}
+
@@ -1452,7 +1480,7 @@
+ return ri;
+}
+
-+static void *seq_start(struct seq_file *file, loff_t *pos)
++static void *rsb_seq_start(struct seq_file *file, loff_t *pos)
+{
+ struct rsb_iter *ri;
+ loff_t n = *pos;
@@ -1471,7 +1499,7 @@
+ return ri;
+}
+
-+static void *seq_next(struct seq_file *file, void *iter_ptr, loff_t *pos)
++static void *rsb_seq_next(struct seq_file *file, void *iter_ptr, loff_t *pos)
+{
+ struct rsb_iter *ri = iter_ptr;
+
@@ -1485,12 +1513,12 @@
+ return ri;
+}
+
-+static void seq_stop(struct seq_file *file, void *iter_ptr)
++static void rsb_seq_stop(struct seq_file *file, void *iter_ptr)
+{
+ /* nothing for now */
+}
+
-+static int seq_show(struct seq_file *file, void *iter_ptr)
++static int rsb_seq_show(struct seq_file *file, void *iter_ptr)
+{
+ struct rsb_iter *ri = iter_ptr;
+
@@ -1499,19 +1527,19 @@
+ return 0;
+}
+
-+static struct seq_operations dlm_seq_ops = {
-+ .start = seq_start,
-+ .next = seq_next,
-+ .stop = seq_stop,
-+ .show = seq_show,
++static struct seq_operations rsb_seq_ops = {
++ .start = rsb_seq_start,
++ .next = rsb_seq_next,
++ .stop = rsb_seq_stop,
++ .show = rsb_seq_show,
+};
+
-+static int do_open(struct inode *inode, struct file *file)
++static int rsb_open(struct inode *inode, struct file *file)
+{
+ struct seq_file *seq;
+ int ret;
+
-+ ret = seq_open(file, &dlm_seq_ops);
++ ret = seq_open(file, &rsb_seq_ops);
+ if (ret)
+ return ret;
+
@@ -1521,32 +1549,92 @@
+ return 0;
+}
+
-+static struct file_operations dlm_fops = {
++static struct file_operations rsb_fops = {
+ .owner = THIS_MODULE,
-+ .open = do_open,
++ .open = rsb_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = seq_release
+};
+
++/*
++ * dump lkb's on the ls_waiters list
++ */
++
++static int waiters_open(struct inode *inode, struct file *file)
++{
++ file->private_data = inode->u.generic_ip;
++ return 0;
++}
++
++static ssize_t waiters_read(struct file *file, char __user *userbuf,
++ size_t count, loff_t *ppos)
++{
++ struct dlm_ls *ls = file->private_data;
++ struct dlm_lkb *lkb;
++ size_t len = DLM_DEBUG_BUF_LEN, pos = 0, rv;
++
++ mutex_lock(&debug_buf_lock);
++ mutex_lock(&ls->ls_waiters_mutex);
++ memset(debug_buf, 0, sizeof(debug_buf));
++
++ list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
[...1719 lines suppressed...]
+ tmp = kcalloc(new_space, sizeof(struct gfs2_rgrpd *),
-+ GFP_KERNEL | __GFP_NOFAIL);
++ GFP_NOFS | __GFP_NOFAIL);
+
+ if (rlist->rl_rgd) {
+ memcpy(tmp, rlist->rl_rgd,
@@ -38182,7 +37983,7 @@
+ unsigned int x;
+
+ rlist->rl_ghs = kcalloc(rlist->rl_rgrps, sizeof(struct gfs2_holder),
-+ GFP_KERNEL | __GFP_NOFAIL);
++ GFP_NOFS | __GFP_NOFAIL);
+ for (x = 0; x < rlist->rl_rgrps; x++)
+ gfs2_holder_init(rlist->rl_rgd[x]->rd_gl,
+ state, flags,
@@ -38278,10 +38079,10 @@
+#endif /* __RGRP_DOT_H__ */
diff --git a/fs/gfs2/super.c b/fs/gfs2/super.c
new file mode 100644
-index 0000000..f2d2876
+index 0000000..3c318a9
--- /dev/null
+++ b/fs/gfs2/super.c
-@@ -0,0 +1,928 @@
+@@ -0,0 +1,979 @@
+/*
+ * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
+ * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
@@ -38298,6 +38099,7 @@
+#include <linux/buffer_head.h>
+#include <linux/crc32.h>
+#include <linux/gfs2_ondisk.h>
++#include <linux/bio.h>
+
+#include "gfs2.h"
+#include "lm_interface.h"
@@ -38441,6 +38243,56 @@
+ return 0;
+}
+
++
++static int end_bio_io_page(struct bio *bio, unsigned int bytes_done, int error)
++{
++ struct page *page = bio->bi_private;
++ if (bio->bi_size)
++ return 1;
++
++ if (!error)
++ SetPageUptodate(page);
++ else
++ printk(KERN_WARNING "gfs2: error %d reading superblock\n", error);
++ unlock_page(page);
++ return 0;
++}
++
++static struct page *gfs2_read_super(struct super_block *sb, sector_t sector)
++{
++ struct page *page;
++ struct bio *bio;
++
++ page = alloc_page(GFP_KERNEL);
++ if (unlikely(!page))
++ return NULL;
++
++ ClearPageUptodate(page);
++ ClearPageDirty(page);
++ lock_page(page);
++
++ bio = bio_alloc(GFP_KERNEL, 1);
++ if (unlikely(!bio)) {
++ __free_page(page);
++ return NULL;
++ }
++
++ bio->bi_sector = sector;
++ bio->bi_bdev = sb->s_bdev;
++ bio_add_page(bio, page, PAGE_SIZE, 0);
++
++ bio->bi_end_io = end_bio_io_page;
++ bio->bi_private = page;
++ submit_bio(READ_SYNC, bio);
++ wait_on_page_locked(page);
++ bio_put(bio);
++ if (!PageUptodate(page)) {
++ __free_page(page);
++ return NULL;
++ }
++ return page;
++}
++
+/**
+ * gfs2_read_sb - Read super block
+ * @sdp: The GFS2 superblock
@@ -38451,23 +38303,23 @@
+
+int gfs2_read_sb(struct gfs2_sbd *sdp, struct gfs2_glock *gl, int silent)
+{
-+ struct buffer_head *bh;
+ uint32_t hash_blocks, ind_blocks, leaf_blocks;
+ uint32_t tmp_blocks;
+ unsigned int x;
+ int error;
++ struct page *page;
++ char *sb;
+
-+ error = gfs2_meta_read(gl, GFS2_SB_ADDR >> sdp->sd_fsb2bb_shift,
-+ DIO_FORCE | DIO_START | DIO_WAIT, &bh);
-+ if (error) {
++ page = gfs2_read_super(sdp->sd_vfs, GFS2_SB_ADDR >> sdp->sd_fsb2bb_shift);
++ if (!page) {
+ if (!silent)
+ fs_err(sdp, "can't read superblock\n");
-+ return error;
++ return -EIO;
+ }
-+
-+ gfs2_assert(sdp, sizeof(struct gfs2_sb) <= bh->b_size);
-+ gfs2_sb_in(&sdp->sd_sb, bh->b_data);
-+ brelse(bh);
++ sb = kmap(page);
++ gfs2_sb_in(&sdp->sd_sb, sb);
++ kunmap(page);
++ __free_page(page);
+
+ error = gfs2_check_sb(sdp, &sdp->sd_sb, silent);
+ if (error)
@@ -38486,7 +38338,7 @@
+ sdp->sd_hash_ptrs = sdp->sd_hash_bsize / sizeof(uint64_t);
+ sdp->sd_qc_per_block = (sdp->sd_sb.sb_bsize -
+ sizeof(struct gfs2_meta_header)) /
-+ sizeof(struct gfs2_quota_change);
++ sizeof(struct gfs2_quota_change);
+
+ /* Compute maximum reservation required to add a entry to a directory */
+
@@ -41572,7 +41424,7 @@
index 181c69c..06c2768 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
-@@ -32,6 +32,7 @@ #define STACK_MAGIC 0xdeadbeef
+@@ -32,6 +32,7 @@ extern const char linux_banner[];
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#define ALIGN(x,a) (((x)+(a)-1)&~((a)-1))
@@ -41582,10 +41434,10 @@
diff --git a/include/linux/lock_dlm_plock.h b/include/linux/lock_dlm_plock.h
new file mode 100644
-index 0000000..007b07a
+index 0000000..fc34151
--- /dev/null
+++ b/include/linux/lock_dlm_plock.h
-@@ -0,0 +1,40 @@
+@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2005 Red Hat, Inc. All rights reserved.
+ *
@@ -41600,7 +41452,7 @@
+#define GDLM_PLOCK_MISC_NAME "lock_dlm_plock"
+
+#define GDLM_PLOCK_VERSION_MAJOR 1
-+#define GDLM_PLOCK_VERSION_MINOR 0
++#define GDLM_PLOCK_VERSION_MINOR 1
+#define GDLM_PLOCK_VERSION_PATCH 0
+
+enum {
@@ -41622,22 +41474,25 @@
+ __u64 number;
+ __u64 start;
+ __u64 end;
++ __u64 owner;
+};
+
+#endif
+
diff --git a/mm/filemap.c b/mm/filemap.c
-index d087fc3..b9c91ab 100644
+index b9a60c4..d9bbea1 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
-@@ -1122,6 +1122,7 @@ success:
- desc->arg.buf += size;
- return size;
- }
-+EXPORT_SYMBOL_GPL(file_read_actor);
+@@ -1181,7 +1181,8 @@ __generic_file_aio_read(struct kiocb *io
+ *ppos = pos + retval;
+ }
+ file_accessed(filp);
+- goto out;
++ if (retval != 0)
++ goto out;
+ }
- /**
- * __generic_file_aio_read - generic filesystem read routine
+ retval = 0;
diff --git a/mm/readahead.c b/mm/readahead.c
index aa7ec42..1ba736a 100644
--- a/mm/readahead.c
linux-2.6-gfs2-tux.patch:
ops_file.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
Index: linux-2.6-gfs2-tux.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-gfs2-tux.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-gfs2-tux.patch 9 Jun 2006 22:19:04 -0000 1.1
+++ linux-2.6-gfs2-tux.patch 31 Jul 2006 20:48:13 -0000 1.2
@@ -9,12 +9,3 @@
return desc.written ? desc.written : desc.error;
}
-@@ -251,7 +251,7 @@ fallback_to_normal:
- if (desc.count == 0)
- continue;
- desc.error = 0;
-- do_generic_file_read(filp,ppos,&desc,file_read_actor);
-+ do_generic_file_read(filp,ppos,&desc,file_read_actor, 0);
- retval += desc.written;
- if (desc.error) {
- retval = retval ?: desc.error;
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]