From: nathan Date: Tue, 20 Sep 2005 23:33:07 +0000 (+0000) Subject: Branch b1_4_mountconf X-Git-Tag: v1_8_0_110~486^4~174 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=46478e2903fb72e6cc9227a27d888a219cd60448;p=fs%2Flustre-release.git Branch b1_4_mountconf b=8341 update b1_4_mountconf from b1_4_newconfig: now with LNET --- diff --git a/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-rhel4.patch index 3d554e4..9d5bee1 100644 --- a/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-rhel4.patch @@ -18,7 +18,7 @@ Index: linux-stage/fs/ext3/inode.c =================================================================== --- linux-stage.orig/fs/ext3/inode.c 2005-02-25 16:47:04.415976672 +0200 +++ linux-stage/fs/ext3/inode.c 2005-02-25 16:50:40.756087976 +0200 -@@ -2274,7 +2274,7 @@ +@@ -2274,7 +2274,7 @@ static unsigned long ext3_get_inode_bloc * trying to determine the inode's location on-disk and no read need be * performed. */ @@ -27,7 +27,7 @@ Index: linux-stage/fs/ext3/inode.c struct ext3_iloc *iloc, int in_mem) { unsigned long block; -@@ -2484,6 +2484,11 @@ +@@ -2484,6 +2484,11 @@ void ext3_read_inode(struct inode * inod ei->i_data[block] = raw_inode->i_block[block]; INIT_LIST_HEAD(&ei->i_orphan); @@ -39,7 +39,7 @@ Index: linux-stage/fs/ext3/inode.c if (S_ISREG(inode->i_mode)) { inode->i_op = &ext3_file_inode_operations; inode->i_fop = &ext3_file_operations; -@@ -2619,6 +2624,9 @@ +@@ -2619,6 +2624,9 @@ static int ext3_do_update_inode(handle_t } else for (block = 0; block < EXT3_N_BLOCKS; block++) raw_inode->i_block[block] = ei->i_data[block]; @@ -49,6 +49,16 @@ Index: linux-stage/fs/ext3/inode.c BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata"); rc = ext3_journal_dirty_metadata(handle, bh); if (!err) +@@ -2849,7 +2857,8 @@ ext3_reserve_inode_write(handle_t *handl + { + int err = 0; + if (handle) { +- err = ext3_get_inode_loc(inode, iloc, 1); ++ err = ext3_get_inode_loc(inode, iloc, EXT3_I(inode)->i_state & ++ EXT3_STATE_NEW); + if (!err) { + BUFFER_TRACE(iloc->bh, "get_write_access"); + err = ext3_journal_get_write_access(handle, iloc->bh); Index: linux-stage/fs/ext3/xattr.c =================================================================== --- linux-stage.orig/fs/ext3/xattr.c 2005-02-25 16:47:04.422975608 +0200 @@ -112,7 +122,7 @@ Index: linux-stage/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return -ENOENT; + -+ ret = ext3_get_inode_loc(inode, &iloc, 1); ++ ret = ext3_get_inode_loc(inode, &iloc, 0); + if (ret) + return ret; + raw_inode = ext3_raw_inode(&iloc); @@ -241,7 +251,7 @@ Index: linux-stage/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return 0; + -+ ret = ext3_get_inode_loc(inode, &iloc, 1); ++ ret = ext3_get_inode_loc(inode, &iloc, 0); + if (ret) + return ret; + raw_inode = ext3_raw_inode(&iloc); @@ -379,7 +389,7 @@ Index: linux-stage/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return ret; + -+ err = ext3_get_inode_loc(inode, &iloc, 1); ++ err = ext3_get_inode_loc(inode, &iloc, 0); + if (err) + return -EIO; + raw_inode = ext3_raw_inode(&iloc); @@ -510,7 +520,7 @@ Index: linux-stage/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return -ENOSPC; + -+ err = ext3_get_inode_loc(inode, &iloc, 1); ++ err = ext3_get_inode_loc(inode, &iloc, 0); + if (err) + return err; + raw_inode = ext3_raw_inode(&iloc); diff --git a/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-suse.patch b/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-suse.patch index 439a08e..19f153d 100644 --- a/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-suse.patch +++ b/ldiskfs/kernel_patches/patches/ext3-ea-in-inode-2.6-suse.patch @@ -50,6 +50,16 @@ Index: linux-2.6.0/fs/ext3/inode.c BUFFER_TRACE(bh, "call ext3_journal_dirty_metadata"); rc = ext3_journal_dirty_metadata(handle, bh); if (!err) +@@ -2849,7 +2857,8 @@ ext3_reserve_inode_write(handle_t *handl + { + int err = 0; + if (handle) { +- err = ext3_get_inode_loc(inode, iloc, 1); ++ err = ext3_get_inode_loc(inode, iloc, EXT3_I(inode)->i_state & ++ EXT3_STATE_NEW); + if (!err) { + BUFFER_TRACE(iloc->bh, "get_write_access"); + err = ext3_journal_get_write_access(handle, iloc->bh); Index: linux-2.6.0/fs/ext3/xattr.c =================================================================== --- linux-2.6.0.orig/fs/ext3/xattr.c 2003-12-30 08:33:13.000000000 +0300 @@ -113,7 +123,7 @@ Index: linux-2.6.0/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return -ENOENT; + -+ ret = ext3_get_inode_loc(inode, &iloc, 1); ++ ret = ext3_get_inode_loc(inode, &iloc, 0); + if (ret) + return ret; + raw_inode = ext3_raw_inode(&iloc); @@ -242,7 +252,7 @@ Index: linux-2.6.0/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return 0; + -+ ret = ext3_get_inode_loc(inode, &iloc, 1); ++ ret = ext3_get_inode_loc(inode, &iloc, 0); + if (ret) + return ret; + raw_inode = ext3_raw_inode(&iloc); @@ -379,7 +389,7 @@ Index: linux-2.6.0/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return ret; + -+ err = ext3_get_inode_loc(inode, &iloc, 1); ++ err = ext3_get_inode_loc(inode, &iloc, 0); + if (err) + return -EIO; + raw_inode = ext3_raw_inode(&iloc); @@ -510,7 +520,7 @@ Index: linux-2.6.0/fs/ext3/xattr.c + if (EXT3_SB(inode->i_sb)->s_inode_size <= EXT3_GOOD_OLD_INODE_SIZE) + return -ENOSPC; + -+ err = ext3_get_inode_loc(inode, &iloc, 1); ++ err = ext3_get_inode_loc(inode, &iloc, 0); + if (err) + return err; + raw_inode = ext3_raw_inode(&iloc); diff --git a/ldiskfs/kernel_patches/patches/ext3-map_inode_page-2.6-suse.patch b/ldiskfs/kernel_patches/patches/ext3-map_inode_page-2.6-suse.patch index 91063b3..d2af494 100644 --- a/ldiskfs/kernel_patches/patches/ext3-map_inode_page-2.6-suse.patch +++ b/ldiskfs/kernel_patches/patches/ext3-map_inode_page-2.6-suse.patch @@ -6,7 +6,7 @@ Index: linux-2.6.0/fs/ext3/inode.c =================================================================== --- linux-2.6.0.orig/fs/ext3/inode.c 2003-12-31 00:33:49.000000000 +0300 +++ linux-2.6.0/fs/ext3/inode.c 2003-12-31 01:14:17.000000000 +0300 -@@ -3136,3 +3136,58 @@ +@@ -3136,3 +3136,62 @@ ret = ret2; return ret; } @@ -28,8 +28,9 @@ Index: linux-2.6.0/fs/ext3/inode.c + blocks[i] = ext3_bmap(inode->i_mapping, iblock); + if (blocks[i] == 0) { + failed++; -+ created[i] = -1; -+ } else { ++ if (created) ++ created[i] = -1; ++ } else if (created) { + created[i] = 0; + } + } @@ -53,18 +54,21 @@ Index: linux-2.6.0/fs/ext3/inode.c + "block %ld\n", iblock); + goto out; + } ++ /* Unmap any metadata buffers from the block mapping, to avoid ++ * data corruption due to direct-write from Lustre being ++ * clobbered by a later flush of the blockdev metadata buffer.*/ + if (buffer_new(&dummy)) + unmap_underlying_metadata(dummy.b_bdev, -+ dummy.b_blocknr); ++ dummy.b_blocknr); + blocks[i] = dummy.b_blocknr; -+ created[i] = 1; ++ if (created) ++ created[i] = 1; + } + + out: + ext3_journal_stop(handle); + return rc; +} -+ Index: linux-2.6.0/fs/ext3/super.c =================================================================== --- linux-2.6.0.orig/fs/ext3/super.c 2003-12-31 00:33:49.000000000 +0300 diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch index d38fb54..ae22210 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6-suse.patch @@ -1,7 +1,7 @@ -Index: linux-2.6.5-suse/fs/ext3/mballoc.c +Index: linux-stage/fs/ext3/mballoc.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/mballoc.c 2005-03-02 22:42:20.659360368 +0300 -+++ linux-2.6.5-suse/fs/ext3/mballoc.c 2005-03-11 16:13:13.000000000 +0300 +--- linux-stage.orig/fs/ext3/mballoc.c 2004-02-23 16:02:56.000000000 -0500 ++++ linux-stage/fs/ext3/mballoc.c 2005-07-28 16:10:14.951971768 -0400 @@ -0,0 +1,1864 @@ +/* + * Copyright(c) 2003, 2004, 2005, Cluster File Systems, Inc, info@clusterfs.com @@ -1850,27 +1850,27 @@ Index: linux-2.6.5-suse/fs/ext3/mballoc.c +} + + -+extern void ext3_free_blocks_old(handle_t *, struct inode *, -+ unsigned long, unsigned long); -+void ext3_free_blocks(handle_t *handle, struct inode * inode, ++extern void ext3_free_blocks_old(handle_t *handle, struct inode *inode, ++ unsigned long block, unsigned long count); ++void ext3_free_blocks(handle_t *handle, struct inode *inode, + unsigned long block, unsigned long count, int metadata) +{ + int freed; + -+ if (!test_opt(inode->i_sb, MBALLOC)) ++ if (!test_opt(inode->i_sb, MBALLOC) || ++ EXT3_SB(inode->i_sb)->s_buddy_blocks == NULL) + ext3_free_blocks_old(handle, inode, block, count); + else { -+ ext3_mb_free_blocks(handle, inode, block, count, metadata, &freed); ++ ext3_mb_free_blocks(handle, inode, block,count,metadata,&freed); + if (freed) + DQUOT_FREE_BLOCK(inode, freed); + } + return; +} -+ -Index: linux-2.6.5-suse/fs/ext3/super.c +Index: linux-stage/fs/ext3/super.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/super.c 2005-02-26 18:40:25.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/super.c 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/fs/ext3/super.c 2005-07-28 16:09:49.624822080 -0400 ++++ linux-stage/fs/ext3/super.c 2005-07-28 16:10:14.952971616 -0400 @@ -389,6 +389,7 @@ struct ext3_super_block *es = sbi->s_es; int i; @@ -1921,10 +1921,10 @@ Index: linux-2.6.5-suse/fs/ext3/super.c return 0; -Index: linux-2.6.5-suse/fs/ext3/Makefile +Index: linux-stage/fs/ext3/Makefile =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/Makefile 2005-02-26 18:40:25.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/Makefile 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/fs/ext3/Makefile 2005-07-28 16:09:49.623822232 -0400 ++++ linux-stage/fs/ext3/Makefile 2005-07-28 16:10:14.953971464 -0400 @@ -5,7 +5,7 @@ obj-$(CONFIG_EXT3_FS) += ext3.o @@ -1934,10 +1934,10 @@ Index: linux-2.6.5-suse/fs/ext3/Makefile ext3-$(CONFIG_EXT3_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o ext3-$(CONFIG_EXT3_FS_POSIX_ACL) += acl.o -Index: linux-2.6.5-suse/fs/ext3/balloc.c +Index: linux-stage/fs/ext3/balloc.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/balloc.c 2005-02-02 00:55:47.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/balloc.c 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/fs/ext3/balloc.c 2005-07-28 16:09:46.411310608 -0400 ++++ linux-stage/fs/ext3/balloc.c 2005-07-28 16:10:14.954971312 -0400 @@ -78,7 +78,7 @@ * * Return buffer_head on success or NULL in case of failure. @@ -1965,10 +1965,10 @@ Index: linux-2.6.5-suse/fs/ext3/balloc.c unsigned long goal, int *errp) { struct buffer_head *bitmap_bh = NULL; -Index: linux-2.6.5-suse/fs/ext3/namei.c +Index: linux-stage/fs/ext3/namei.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/namei.c 2005-02-26 18:40:19.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/namei.c 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/fs/ext3/namei.c 2005-07-28 16:09:48.092055096 -0400 ++++ linux-stage/fs/ext3/namei.c 2005-07-28 16:10:14.955971160 -0400 @@ -1640,7 +1640,7 @@ * If the create succeeds, we fill in the inode information * with d_instantiate(). @@ -1978,10 +1978,10 @@ Index: linux-2.6.5-suse/fs/ext3/namei.c struct nameidata *nd) { handle_t *handle; -Index: linux-2.6.5-suse/fs/ext3/inode.c +Index: linux-stage/fs/ext3/inode.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/inode.c 2005-02-26 18:40:25.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/inode.c 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/fs/ext3/inode.c 2005-07-28 16:09:49.622822384 -0400 ++++ linux-stage/fs/ext3/inode.c 2005-07-28 16:10:14.958970704 -0400 @@ -572,7 +572,7 @@ ext3_journal_forget(handle, branch[i].bh); } @@ -2000,7 +2000,7 @@ Index: linux-2.6.5-suse/fs/ext3/inode.c return err; } -@@ -1830,7 +1830,7 @@ +@@ -1835,7 +1835,7 @@ } } @@ -2009,7 +2009,7 @@ Index: linux-2.6.5-suse/fs/ext3/inode.c } /** -@@ -2001,7 +2001,7 @@ +@@ -2006,7 +2006,7 @@ ext3_journal_test_restart(handle, inode); } @@ -2018,11 +2018,11 @@ Index: linux-2.6.5-suse/fs/ext3/inode.c if (parent_bh) { /* -Index: linux-2.6.5-suse/fs/ext3/extents.c +Index: linux-stage/fs/ext3/extents.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/extents.c 2005-02-26 18:40:25.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/extents.c 2005-02-26 18:40:26.000000000 +0300 -@@ -774,7 +774,7 @@ +--- linux-stage.orig/fs/ext3/extents.c 2005-07-28 16:09:49.619822840 -0400 ++++ linux-stage/fs/ext3/extents.c 2005-07-28 16:10:14.960970400 -0400 +@@ -771,7 +771,7 @@ for (i = 0; i < depth; i++) { if (!ablocks[i]) continue; @@ -2031,8 +2031,8 @@ Index: linux-2.6.5-suse/fs/ext3/extents.c } } kfree(ablocks); -@@ -1431,7 +1431,7 @@ - path->p_idx->ei_leaf); +@@ -1428,7 +1428,7 @@ + path->p_idx->ei_leaf); bh = sb_find_get_block(tree->inode->i_sb, path->p_idx->ei_leaf); ext3_forget(handle, 1, tree->inode, bh, path->p_idx->ei_leaf); - ext3_free_blocks(handle, tree->inode, path->p_idx->ei_leaf, 1); @@ -2040,7 +2040,7 @@ Index: linux-2.6.5-suse/fs/ext3/extents.c return err; } -@@ -1919,10 +1919,12 @@ +@@ -1913,10 +1913,12 @@ int needed = ext3_remove_blocks_credits(tree, ex, from, to); handle_t *handle = ext3_journal_start(tree->inode, needed); struct buffer_head *bh; @@ -2054,7 +2054,7 @@ Index: linux-2.6.5-suse/fs/ext3/extents.c if (from >= ex->ee_block && to == ex->ee_block + ex->ee_len - 1) { /* tail removal */ unsigned long num, start; -@@ -1934,7 +1936,7 @@ +@@ -1928,7 +1930,7 @@ bh = sb_find_get_block(tree->inode->i_sb, start + i); ext3_forget(handle, 0, tree->inode, bh, start + i); } @@ -2062,12 +2062,12 @@ Index: linux-2.6.5-suse/fs/ext3/extents.c + ext3_free_blocks(handle, tree->inode, start, num, metadata); } else if (from == ex->ee_block && to <= ex->ee_block + ex->ee_len - 1) { printk("strange request: removal %lu-%lu from %u:%u\n", - from, to, ex->ee_block, ex->ee_len); -Index: linux-2.6.5-suse/fs/ext3/xattr.c + from, to, ex->ee_block, ex->ee_len); +Index: linux-stage/fs/ext3/xattr.c =================================================================== ---- linux-2.6.5-suse.orig/fs/ext3/xattr.c 2005-02-26 18:40:22.000000000 +0300 -+++ linux-2.6.5-suse/fs/ext3/xattr.c 2005-02-26 18:40:26.000000000 +0300 -@@ -1366,7 +1366,7 @@ +--- linux-stage.orig/fs/ext3/xattr.c 2005-07-28 16:09:48.855938968 -0400 ++++ linux-stage/fs/ext3/xattr.c 2005-07-28 16:10:43.588618336 -0400 +@@ -1371,7 +1371,7 @@ new_bh = sb_getblk(sb, block); if (!new_bh) { getblk_failed: @@ -2076,7 +2076,7 @@ Index: linux-2.6.5-suse/fs/ext3/xattr.c error = -EIO; goto cleanup; } -@@ -1408,7 +1408,7 @@ +@@ -1411,7 +1411,7 @@ if (HDR(old_bh)->h_refcount == cpu_to_le32(1)) { /* Free the old block. */ ea_bdebug(old_bh, "freeing"); @@ -2085,19 +2085,19 @@ Index: linux-2.6.5-suse/fs/ext3/xattr.c /* ext3_forget() calls bforget() for us, but we let our caller release old_bh, so we need to -@@ -1504,7 +1504,7 @@ - lock_buffer(bh); - if (HDR(bh)->h_refcount == cpu_to_le32(1)) { - ext3_xattr_cache_remove(bh); +@@ -1519,7 +1519,7 @@ + mb_cache_entry_free(ce); + ce = NULL; + } - ext3_free_blocks(handle, inode, EXT3_I(inode)->i_file_acl, 1); + ext3_free_blocks(handle, inode, EXT3_I(inode)->i_file_acl, 1, 1); get_bh(bh); ext3_forget(handle, 1, inode, bh, EXT3_I(inode)->i_file_acl); } else { -Index: linux-2.6.5-suse/include/linux/ext3_fs.h +Index: linux-stage/include/linux/ext3_fs.h =================================================================== ---- linux-2.6.5-suse.orig/include/linux/ext3_fs.h 2005-02-26 18:40:25.000000000 +0300 -+++ linux-2.6.5-suse/include/linux/ext3_fs.h 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/include/linux/ext3_fs.h 2005-07-28 16:09:49.626821776 -0400 ++++ linux-stage/include/linux/ext3_fs.h 2005-07-28 16:10:14.962970096 -0400 @@ -57,6 +57,14 @@ #define ext3_debug(f, a...) do {} while (0) #endif @@ -2121,7 +2121,7 @@ Index: linux-2.6.5-suse/include/linux/ext3_fs.h /* Compatibility, for having both ext2_fs.h and ext3_fs.h included at once */ #ifndef clear_opt -@@ -698,7 +707,7 @@ +@@ -700,7 +709,7 @@ extern unsigned long ext3_bg_num_gdb(struct super_block *sb, int group); extern int ext3_new_block (handle_t *, struct inode *, unsigned long, int *); extern void ext3_free_blocks (handle_t *, struct inode *, unsigned long, @@ -2130,7 +2130,7 @@ Index: linux-2.6.5-suse/include/linux/ext3_fs.h extern unsigned long ext3_count_free_blocks (struct super_block *); extern void ext3_check_blocks_bitmap (struct super_block *); extern struct ext3_group_desc * ext3_get_group_desc(struct super_block * sb, -@@ -820,6 +829,37 @@ +@@ -822,6 +831,37 @@ extern int ext3_ext_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); @@ -2168,10 +2168,10 @@ Index: linux-2.6.5-suse/include/linux/ext3_fs.h #endif /* __KERNEL__ */ #define EXT3_IOC_CREATE_INUM _IOW('f', 5, long) -Index: linux-2.6.5-suse/include/linux/ext3_fs_sb.h +Index: linux-stage/include/linux/ext3_fs_sb.h =================================================================== ---- linux-2.6.5-suse.orig/include/linux/ext3_fs_sb.h 2005-02-26 18:40:20.000000000 +0300 -+++ linux-2.6.5-suse/include/linux/ext3_fs_sb.h 2005-02-26 18:40:26.000000000 +0300 +--- linux-stage.orig/include/linux/ext3_fs_sb.h 2005-07-28 16:09:48.346016488 -0400 ++++ linux-stage/include/linux/ext3_fs_sb.h 2005-07-28 16:10:14.963969944 -0400 @@ -23,10 +23,30 @@ #define EXT_INCLUDE #include diff --git a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch index 24b2595..c8b3e48 100644 --- a/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch +++ b/ldiskfs/kernel_patches/patches/ext3-mballoc2-2.6.9-rhel4.patch @@ -4,7 +4,7 @@ Index: linux-stage/fs/ext3/mballoc.c +++ linux-stage/fs/ext3/mballoc.c 2005-02-25 17:28:41.859307576 +0200 @@ -0,0 +1,1861 @@ +/* -+ * Copyright (c) 2003, Cluster File Systems, Inc, info@clusterfs.com ++ * Copyright(c) 2003, 2004, 2005, Cluster File Systems, Inc, info@clusterfs.com + * Written by Alex Tomas + * + * This program is free software; you can redistribute it and/or modify @@ -110,7 +110,7 @@ Index: linux-stage/fs/ext3/mballoc.c + struct super_block *ac_sb; + + /* search goals */ -+struct ext3_free_extent ac_g_ex; ++ struct ext3_free_extent ac_g_ex; + + /* the best found extent */ + struct ext3_free_extent ac_b_ex; @@ -471,7 +471,7 @@ Index: linux-stage/fs/ext3/mballoc.c +} + +static int mb_find_extent(struct ext3_buddy *e3b, int order, int block, -+ int needed, struct ext3_free_extent *ex) ++ int needed, struct ext3_free_extent *ex) +{ + int next, max, ord; + void *buddy; @@ -1849,17 +1849,17 @@ Index: linux-stage/fs/ext3/mballoc.c + return ret; +} + -+void ext3_free_blocks(handle_t *handle, struct inode * inode, -+ unsigned long block, unsigned long count, int metadata) ++void ext3_free_blocks(handle_t *handle, struct inode *inode, ++ unsigned long block, unsigned long count, int metadata) +{ -+ struct super_block *sb; + int freed; + -+ sb = inode->i_sb; -+ if (!test_opt(sb, MBALLOC)) -+ ext3_free_blocks_sb(handle, sb, block, count, &freed); ++ if (!test_opt(inode->i_sb, MBALLOC) || ++ EXT3_SB(inode->i_sb)->s_buddy_blocks == NULL) ++ ext3_free_blocks_sb(handle, inode->i_sb, block, count, &freed); + else -+ ext3_mb_free_blocks(handle, inode, block, count, metadata, &freed); ++ ext3_mb_free_blocks(handle, inode, block,count,metadata,&freed); ++ + if (freed) + DQUOT_FREE_BLOCK(inode, freed); + return; diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series index 0980162..8e76197 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-rhel4.series @@ -9,4 +9,5 @@ ext3-include-fixes-2.6-rhel4.patch ext3-extents-2.6.9-rhel4.patch ext3-mballoc2-2.6.9-rhel4.patch ext3-nlinks-2.6.7.patch -ext3-htree-dot-2.6.patch +ext3-htree-dot-2.6.patch +ext3-ialloc-2.6.patch diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series index c44eea3..2584c1d 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series @@ -10,4 +10,5 @@ ext3-extents-2.6.5.patch ext3-mballoc2-2.6-suse.patch ext3-nlinks-2.6.7.patch ext3-rename-reserve-2.6-suse.patch -ext3-htree-dot-2.6.5-suse.patch +ext3-htree-dot-2.6.5-suse.patch +ext3-ialloc-2.6.patch diff --git a/ldiskfs/ldiskfs/autoMakefile.am b/ldiskfs/ldiskfs/autoMakefile.am index 53ca41e..0eff073 100644 --- a/ldiskfs/ldiskfs/autoMakefile.am +++ b/ldiskfs/ldiskfs/autoMakefile.am @@ -38,7 +38,7 @@ sources: $(ext3_sources) $(ext3_headers) $(linux_headers) $(series) cp $(ext3_sources) $(ext3_headers) $(ext3_extra) linux-stage/fs/ext3 cp $(linux_headers) linux-stage/include/linux if USE_QUILT - cd linux-stage && quilt setup -l ../$(series) -d ../$(patches) + cd linux-stage && quilt setup -d ../$(patches) ../$(series) cd linux-stage && quilt push -a -q else @echo -n "Applying ext3 patches:" diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 0fb9dff..20c2804 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -1,73 +1,267 @@ tbd Cluster File Systems, Inc. - * version 1.4.4 + * version 1.4.6 * bug fixes +Severity : major +Frequency : rare +Bugzilla : 7407 +Description: Running on many-way SMP OSTs can trigger oops in llcd_send() +Details : A race between allocating a new llcd and re-getting the llcd_lock + allowed another thread to grab newly-allocated llcd. + +Severity : enhancement +Bugzilla : 7116 +Description: 2.6 OST async journal commit and locking fix to improve performance +Details : The filter_direct_io()+filter_commitrw_write() journal commits for + 2.6 kernels are now async as they already were in 2.4 kernels so + that they can commit concurrently with the network bulk transfer. + For block-allocated files the filter allocation semaphore is held + to avoid filesystem fragmentation during allocation. BKL lock + removed for 2.6 xattr operations where it is no longer needed. + Severity : minor -Frequency : Clusters with multiple interfaces not on the same subnet -Bugzilla : 5541 -Description: Nodes will repeatedly try to reconnect to an interface which it - cannot reach and report an error to the log. -Details : Extra peer list entries will be created by lconf with some peers - unreachable. lconf now validates the peer before adding it. +Frequency : rare +Bugzilla : 8320 +Description: lconf incorrectly determined whether two IP networks could talk +Details : In some more complicated routing and multiple-network + configurations, lconf will avoid trying to make a network + connection to a disjoint part of the IP space. It was doing the + math incorrectly for one set of cases. Severity : major -Frequency : Only if a default stripe is set on the filesystem root. -Bugzilla : 6367 -Description: Setting a default stripe on the filesystem root prevented the - filesystem from being remounted. -Details : The client was sending extra request flags in the root getattr - request and did not allocate a reply buffer for the dir EA. +Frequency : rare +Bugzilla : 7359 +Description: Fix for potential infinite loop processing records in an llog. +Details : If an llog record is corrupted/zeroed, it is possible to loop + forever in llog_process(). Validate the llog record length + and skip the remainder of the block on error. + +Severity : minor +Frequency : occasional (liblustre only) +Bugzilla : 6363 +Description: liblustre could not open files whose last component is a symlink +Details : sysio_path_walk() would incorrectly pass the open intent to + intermediate path components. + +Severity : minor +Frequency : rare (liblustre only with non-standard tuning) +Bugzilla : 7201 (7350) +Description: Tuning the MDC DLM LRU size to zero triggers client LASSERT +Details : llu_lookup_finish_locks() tries to set lock data on a lock + after it has been released, only do this for referenced locks + +Severity : enhancement +Bugzilla : 7328 +Description: specifying an (invalid) directory default stripe_size of -1 + would reset the directory default striping +Details : stripe_size -1 was used internally to signal directory stripe + removal, now use "all default" to signal dir stripe removal + as a directory striping of "all default" is not useful + +Severity : minor +Frequency : common for large clusters running liblustre clients +Bugzilla : 7198 +Description: doing an ls when liblustre clients are running is slow +Details : sending a glimpse AST to a liblustre client waits for every AST + to time out, as liblustre clients will not respond. Since they + cannot cache data we refresh the OST lock LVB from disk instead. + +------------------------------------------------------------------------------ + +08-26-2005 Cluster File Systems, Inc. + * version 1.4.5 + * bug fixes Severity : major -Frequency : occasional, higher if lots of files are accessed by one client -Bugzilla : 6159, 6097 -Description: Client trips assertion regarding lsm mismatch/magic -Details : While revalidating inodes the VFS looks up inodes with ifind() - and in rare cases can find an inode that is being freed. - The ll_test_inode() code will free the lsm during ifind() - when it finds an existing inode and then the VFS later attaches - this free lsm to a new inode. +Frequency : rare +Bugzilla : 7264 +Description: Mounting an ldiskfs file system with mballoc may crash OST node. +Details : ldiskfs mballoc code may reference an uninitialized buddy struct + at startup during orphan unlinking. Instead, skip buddy update + before setup, as it will be regenerated after recovery is complete. Severity : minor -Frequency : occasional -Description: While starting a server, the fsfilt_ext3 module could not be - loaded. -Details : CFS's improved ext3 filesystem is named ldiskfs for 2.6 - kernels. Previously, lconf would still use the ext3 name - when trying to load modules. Now, it will correctly use - ext3 on 2.4 and ldiskfs on 2.6. +Frequency : rare +Bugzilla : 7039 +Description: If an OST is inactive, its locks might reference stale inodes. +Details : lov_change_cbdata() must iterate over all namespaces, even if + they are inactive to clear inode references from the lock. Severity : enhancement -Description: The default stripe count has been changed to 1 -Details : The interpretation of the default stripe count (0, to lfs - or lmc) has been changed to mean striping across a single - OST, rather than all available. For general usage we have - found a stripe count of 1 or 2 works best. +Frequency : occasional, if non-standard max_dirty_mb used +Bugzilla : 7138 +Description: Client will block write RPCs if not enough grant +Details : If a client has max_dirty_mb smaller than max_rpcs_in_flight, + then the client will block writes while waiting for another RPC + to complete instead of consuming its dirty limit. With change + we get improved performance when max_dirty_mb is small. + +Severity : enhancement +Bugzilla : 3389, 6253 +Description: Add support for supplementary groups on the MDS. +Details : The MDS has an upcall /proc/fs/lustre/mds/{mds}/group_upcall + (set to /usr/sbin/l_getgroups if enabled) which will do MDS-side + lookups for user supplementary groups into a cache. + +Severity : minor +Bugzilla : 7278 +Description: O_CREAT|O_EXCL open flags in liblustre always return -EEXIST +Details : Make libsysio to not enforce O_EXCL by clearing the flag, + for liblustre O_EXCL is enforced by MDS. + +Severity : minor +Bugzilla : 6455 +Description: readdir never returns NULL in liblustre. +Details : Corrected llu_iop_getdirentries logic, to return offset of next + dentry in struct dirent. + +Severity : minor +Bugzilla : 7137 +Frequency : liblustre only, depends on application IO pattern +Description: liblustre clients evicted if not contacting servers +Details : Don't put liblustre clients into the ping_evictor list, so + they will not be evicted by the pinger ever. + +Severity : enhancement +Bugzilla : 6902 +Description: Add ability to evict clients by NID from MDS. +Details : By echoing "nid:$NID" string into + /proc/fs/lustre/mds/.../evict_client client with nid that equals to + $NID would be instantly evicted from this MDS and from all active + OSTs connected to it. + +Severity : minor +Bugzilla : 7198 +Description: Do not query file size twice, somewhat slowing stat(2) calls. +Details : lookup_it_finish() used to query file size from OSTs that was not + needed. + +Severity : minor +Bugzilla : 6237 +Description: service threads change working directory to that of init +Details : Starting lustre service threads may pin the working directory + of the parent thread, making that filesystem busy. Threads + now change to the working directory of init to avoid this. + +Severity : minor +Bugzilla : 6827 +Frequency : during shutdown only +Description: shutdown with a failed MDS or OST can cause unmount to hang +Details : Don't resend DISCONNECT messages in ptlrpc_disconnect_import() + if server is down. + +Severity : minor +Bugzilla : 7331 +Frequency : 2.6 only +Description: chmod/chown may include an extra supplementary group +Details : ll{,u}_mdc_pack_op_data() does not properly initialize the + supplementary group and if none is specified this is used. + +Severity : minor +Bugzilla : 5479 (6816) +Frequency : rare +Description: Racing open + rm can assert client in mdc_set_open_replay_data() +Details : If lookup is in progress on a file that is unlinked we might try + to revalidate the inode and fail in revalidate after lookup is + complete and ll_file_open() enqueues the open again but + it_open_error() was not checking DISP_OPEN_OPEN errors correctly. + +------------------------------------------------------------------------------ + +2005-08-08 Cluster File Systems, Inc. + * version 1.4.4 + * bug fixes Severity : major -Frequency : occasional -Bugzilla : 6409, 6834 -Description: Creating files with an explicit stripe count may lead to - a failed assertion on the MDS -Details : If some OSTs are full or unavailable, creating files may - trigger a failed assertion on the MDS. Now, Lustre will - try to use other servers or return an error to the - client. +Frequency : rare (only unsupported configurations with a node running as an + OST and a client) +Bugzilla : 6514, 5137 +Description: Mounting a Lustre file system on a node running as an OST could + lead to deadlocks +Details : OSTs now allocate memory needed to write out data at + startup, instead of when needed, to avoid having to + allocate memory in possibly low memory situations. + Specifically, if the file system is mounted on on OST, + memory pressure could force it to try to write out data, + which it needed to allocate memory to do. Due to the low + memory, it would be unable to do so and the node would + become unresponsive. + +Severity : enhancement +Bugzilla : 7015 +Description: Addition of lconf --service command line option +Details : lconf now accepts a '--service ' option, which is + shorthand for 'lconf --group --select =' + +Severity : enhancement +Bugzilla : 6101 +Description: Failover mode is now the default for OSTs. +Details : By default, OSTs will now run in failover mode. To return to + the old behaviour, add '--failout' to the lmc line for OSTs. + +Severity : enhancement +Bugzilla : 1693 +Description: Health checks are now provided for MDS and OSTs +Details : Additional detailed health check information on MSD and OSTs + is now provided through the procfs health_check value. Severity : minor -Frequency : occasional -Bugzilla : 6469 -Description: Multiple concurrent overlapping read+write on multiple SMP nodes - caused lock timeout during readahead (since 1.4.2). -Details : Processes doing readahead might match a lock that hasn't been - granted yet if there are overlapping and conflicting lock - requests. The readahead process waits on ungranted lock - (original lock is CBPENDING), while OST waits for that process - to cancel CBPENDING read lock and eventually evicts client. +Frequency : occasional, depends on IO load +Bugzilla : 4466 +Description: Disk fragmentation on the OSTs could eventually cause slowdowns + after numerous create/delete cycles +Details : The ext3 inode allocation policy would not allocate new inodes + very well on the OSTs because there are no new directories + being created. Instead we look for groups with free space if + the parent directories are nearly full. + +Severity : major +Bugzilla : 6302 +Frequency : rare +Description: Network or server problems during mount may cause partially + mounted clients instead of returning an error. +Details : The config llog parsing code may overwrite the error return + code during mount error handling, returning success instead + of an error. + +Severity : minor +Bugzilla : 6266 +Frequency : rare (liblustre) +Description: fsx running with liblustre complained that using truncate() to + extend the file doesn't work. This patch corrects that issue. +Details : This is the liblustre equivalent of the fix for bug 6196. Fixes + ATTR_SIZE and lsm use in llu_setattr_raw. + +Severity : critical +Bugzilla : 6866 +Frequency : rare, only 2.6 kernels +Description: Unusual file access patterns on the MDS may result in inode + data being lost in very rare circumstances. +Details : Bad interaction between the ea-in-inode patch and the "no-read" + code in the 2.6 kernel caused the inode and/or EA data not to + be read from disk, causing single-file corruption. + +Severity : critical +Bugzilla : 6998 +Frequency : rare, only 2.6 filesystems using extents +Description: Heavy concurrent write and delete load may cause data corruption. +Details : It was possible under high-load situations to have an extent + metadata block in the block device cache from a just-unlinked + file overwrite a newly-allocated data block. We now unmap any + metadata buffers that alias just-allocated data blocks. + +Severity : minor +Bugzilla : 7241 +Frequency : filesystems with default stripe_count larger than 77 +Description: lconf+mke2fs fail when formatting filesystem with > 77 stripes +Details : lconf specifies an inode size of 4096 bytes when the default + stripe_count is larger than 77. This conflicts with the default + inode density of 1 per 4096 bytes. Allocate smaller inodes in + this case to avoid pinning too much memory for large EAs. ------------------------------------------------------------------------------ -2005-06-20 Cluster File Systems, Inc. +2005-07-07 Cluster File Systems, Inc. * version 1.4.3 * bug fixes @@ -164,7 +358,108 @@ Description: NFSD failed occasionally when looking up a path component Details : NFSD is looking up ".." which was broken in ext3 directories that had grown large enough to become hashed. ------------------------------------------------------------------------------- +Severity : minor +Frequency : Clusters with multiple interfaces not on the same subnet +Bugzilla : 5541 +Description: Nodes will repeatedly try to reconnect to an interface which it + cannot reach and report an error to the log. +Details : Extra peer list entries will be created by lconf with some peers + unreachable. lconf now validates the peer before adding it. + +Severity : major +Frequency : Only if a default stripe is set on the filesystem root. +Bugzilla : 6367 +Description: Setting a default stripe on the filesystem root prevented the + filesystem from being remounted. +Details : The client was sending extra request flags in the root getattr + request and did not allocate a reply buffer for the dir EA. + +Severity : major +Frequency : occasional, higher if lots of files are accessed by one client +Bugzilla : 6159, 6097 +Description: Client trips assertion regarding lsm mismatch/magic +Details : While revalidating inodes the VFS looks up inodes with ifind() + and in rare cases can find an inode that is being freed. + The ll_test_inode() code will free the lsm during ifind() + when it finds an existing inode and then the VFS later attaches + this free lsm to a new inode. + +Severity : major +Frequency : rare +Bugzilla : 6422, 7030 +Description: MDS deadlock between mkdir and client eviction +Details : Creating a new file via mkdir or mknod (starting a transaction + and getting the ns lock) can deadlock with client eviction + (gets ns lock and trying to finish a synchronous transaction). + +Severity : minor +Frequency : occasional +Description: While starting a server, the fsfilt_ext3 module could not be + loaded. +Details : CFS's improved ext3 filesystem is named ldiskfs for 2.6 + kernels. Previously, lconf would still use the ext3 name + when trying to load modules. Now, it will correctly use + ext3 on 2.4 and ldiskfs on 2.6. + +Severity : enhancement +Description: The default stripe count has been changed to 1 +Details : The interpretation of the default stripe count (0, to lfs + or lmc) has been changed to mean striping across a single + OST, rather than all available. For general usage we have + found a stripe count of 1 or 2 works best. + +Severity : enhancement +Description: Add support for compiling against Cray portals. +Details : Conditional compiling for some areas that are different + on Cray Portals. + +Severity : major +Frequency : occasional +Bugzilla : 6409, 6834 +Description: Creating files with an explicit stripe count may lead to + a failed assertion on the MDS +Details : If some OSTs are full or unavailable, creating files may + trigger a failed assertion on the MDS. Now, Lustre will + try to use other servers or return an error to the + client. + +Severity : minor +Frequency : occasional +Bugzilla : 6469 +Description: Multiple concurrent overlapping read+write on multiple SMP nodes + caused lock timeout during readahead (since 1.4.2). +Details : Processes doing readahead might match a lock that hasn't been + granted yet if there are overlapping and conflicting lock + requests. The readahead process waits on ungranted lock + (original lock is CBPENDING), while OST waits for that process + to cancel CBPENDING read lock and eventually evicts client. + +Severity : enhancement +Bugzilla : 6931 +Description: Initial enabling of flock support for clients +Details : Implements fcntl advisory locking and file status functions. + This feature is provided as an optional mount flag (default + off), and is NOT CURRENTLY SUPPORTED. Not all types of record + locking are implemented yet, and those that are are not guaranteed + to be completely correct in production environments. + mount -t lustre -o [flock|noflock] ... + +Severity : major +Frequency : occasional +Bugzilla : 6198 +Description: OSTs running 2.4 kernels but with extents enabled might trip an + assertion in the ext3 JBD (journaling) layer. +Details : The b_committed_data struct is protected by the big kernel lock + in 2.4 kernels, serializing journal_commit_transaction() and + ext3_get_block_handle->ext3_new_block->find_next_usable_block() + access to this struct. In 2.6 kernels there is finer grained + locking to improve SMP performance of the JBD layer. + +Severity : minor +Bugzilla : 6147 +Description: Changes the "SCSI I/O Stats" kernel patch to default to "enabled" + +----------------------------------------------------------------------------- 2005-05-05 Cluster File Systems, Inc. * version 1.4.2 diff --git a/lustre/LICENSE b/lustre/LICENSE index 6c14df9..edb73cd 100644 --- a/lustre/LICENSE +++ b/lustre/LICENSE @@ -1,18 +1,18 @@ -Each file in this distribution should contain a header stating the -copyright owner(s), and the licensing terms for that module. Some -files are not eligible for copyright protection, and contain neither. - -There are many files which may be covered by a separate Evaluation -License Agreement that you may have signed before downloading this -software. If you did not sign such an agreement, or if the file does -not mention that license, then you can redistribute and/or modify it -under the terms of version 2 of the GNU General Public License. -Each file is very clear about which license is applicable. - -In any case, Lustre is distributed in the hope that it will be -useful, but WITHOUT ANY WARRANTY; without even the implied warranty -of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -license text for more details. +Each file in this distribution contains a header stating the copyright +owner(s), and the licensing terms for that file. Some files are not +eligible for copyright protection, and contain neither. + +There are many files which may be covered by a separate license that +you signed or otherwise agreed to before downloading this software. +If you did not agree to such an agreement, or if the file does not +mention that license, then you can redistribute and/or modify it under +the terms of version 2 of the GNU General Public License. Each file +is very clear about which license is applicable. + +In any case, Lustre is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license +text for more details. Reproduced below is the GNU General Public License version 2, and Linus's clarifying statement from the Linux kernel source code: diff --git a/lustre/autoMakefile.am b/lustre/autoMakefile.am index 91ca0e1..75132e2 100644 --- a/lustre/autoMakefile.am +++ b/lustre/autoMakefile.am @@ -32,7 +32,8 @@ endif SUBDIRS += $(LIBLUSTRE_SUBDIRS) endif -DIST_SUBDIRS := $(ALWAYS_SUBDIRS) $(SERVER_SUBDIRS) $(CLIENT_SUBDIRS) $(LIBLUSTRE_SUBDIRS) +DIST_SUBDIRS := $(ALWAYS_SUBDIRS) $(SERVER_SUBDIRS) $(CLIENT_SUBDIRS) \ + $(LIBLUSTRE_SUBDIRS) EXTRA_DIST = BUGS FDL kernel_patches @@ -62,7 +63,7 @@ CSTKO=/tmp/checkstack.orig checkstack: [ -f ${CSTK} -a ! -s ${CSTKO} ] && mv ${CSTK} ${CSTKO} || true - for i in ${SUBDIRS} portals/knals/*; do \ + for i in ${SUBDIRS} lnet/klnds/*; do \ MOD=$$i/`basename $$i`.o; \ [ -f $$MOD ] && objdump -d $$MOD | perl tests/checkstack.pl; \ done | sort -nr > ${CSTK} diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4 index e1f502f..2b3db18 100644 --- a/lustre/autoconf/lustre-core.m4 +++ b/lustre/autoconf/lustre-core.m4 @@ -65,7 +65,7 @@ LB_LINUX_CONFIG([EXT3_FS_XATTR],[$1],[$3]) # If we have (and can build) fshooks.h # AC_DEFUN([LC_FSHOOKS], -[AC_CHECK_FILE([$LINUX/include/linux/fshooks.h],[ +[LB_CHECK_FILE([$LINUX/include/linux/fshooks.h],[ AC_MSG_CHECKING([if fshooks.h can be compiled]) LB_LINUX_TRY_COMPILE([ #include @@ -303,21 +303,13 @@ fi # # LC_CONFIG_BACKINGFS # -# whether to use extN or ldiskfs instead of ext3 +# whether to use ldiskfs instead of ext3 # AC_DEFUN([LC_CONFIG_BACKINGFS], [ BACKINGFS='ext3' -# LLNL patches their ext3 and calls it extN -AC_MSG_CHECKING([whether to use extN]) -AC_ARG_ENABLE([extN], - AC_HELP_STRING([--enable-extN], - [use extN instead of ext3 for lustre backend]), - [BACKINGFS='extN'],[enable_extN='no']) -AC_MSG_RESULT([$enable_extN]) - -# SuSE gets ldiskfs +# 2.6 gets ldiskfs AC_MSG_CHECKING([whether to enable ldiskfs]) AC_ARG_ENABLE([ldiskfs], AC_HELP_STRING([--enable-ldiskfs], @@ -456,17 +448,30 @@ AC_DEFUN([LC_CONFIG_LIBLUSTRE], AC_ARG_ENABLE([liblustre], AC_HELP_STRING([--disable-liblustre], [disable building of Lustre library]), - [],[enable_liblustre="no"]) + [],[enable_liblustre=$with_sysio]) AC_MSG_RESULT([$enable_liblustre]) # only build sysio if liblustre is built with_sysio="$enable_liblustre" +AC_MSG_CHECKING([whether to build liblustre tests]) +AC_ARG_ENABLE([liblustre-tests], + AC_HELP_STRING([--enable-liblustre-tests], + [enable liblustre tests, if --disable-tests is used]), + [],[enable_liblustre_tests=$enable_tests]) +if test x$enable_liblustre != xyes ; then + enable_liblustre_tests='no' +fi +AC_MSG_RESULT([$enable_liblustre_tests]) + AC_MSG_CHECKING([whether to build mpitests]) AC_ARG_ENABLE([mpitests], AC_HELP_STRING([--enable-mpitests], [build liblustre mpi tests]), [],[enable_mpitests=no]) AC_MSG_RESULT([$enable_mpitests]) + +AC_MSG_NOTICE([Enabling Lustre configure options for libsysio]) +ac_configure_args="$ac_configure_args --with-lustre-hack --with-sockets" ]) # @@ -482,6 +487,7 @@ AC_CHECK_HEADERS([asm/page.h sys/user.h stdint.h]) # include/lustre/lustre_user.h # See note there re: __ASM_X86_64_PROCESSOR_H +AC_CHECK_HEADERS([linux/quota.h]) AC_CHECK_TYPES([struct if_dqinfo],[],[],[ #define __ASM_X86_64_PROCESSOR_H @@ -511,10 +517,8 @@ AC_CHECK_FUNCS([inet_ntoa]) # AC_DEFUN([LC_CONDITIONALS], [AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes) -AM_CONDITIONAL(EXTN, test x$enable_extN = xyes) AM_CONDITIONAL(LDISKFS, test x$enable_ldiskfs = xyes) AM_CONDITIONAL(USE_QUILT, test x$QUILT != xno) -AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes) AM_CONDITIONAL(LIBLUSTRE_TESTS, test x$enable_liblustre_tests = xyes) AM_CONDITIONAL(MPITESTS, test x$enable_mpitests = xyes, Build MPI Tests) AM_CONDITIONAL(CLIENT, test x$enable_client = xyes) diff --git a/lustre/autoconf/lustre-version.ac b/lustre/autoconf/lustre-version.ac index b3d7ec7..37704bb 100644 --- a/lustre/autoconf/lustre-version.ac +++ b/lustre/autoconf/lustre-version.ac @@ -1 +1 @@ -m4_define([LUSTRE_VERSION],[1.4.3.3]) +m4_define([LUSTRE_VERSION],[1.4.5]) diff --git a/lustre/doc/lconf.8 b/lustre/doc/lconf.8 index aa16c34..6143c6b 100644 --- a/lustre/doc/lconf.8 +++ b/lustre/doc/lconf.8 @@ -1,4 +1,4 @@ -.TH lconf 1 "2003 Oct 8" Lustre "configuration utilities" +.TH lconf 1 "2004 Sep 16" Lustre "configuration utilities" .SH NAME lconf \- Lustre filesystem configuration utility .SH SYNOPSIS @@ -14,12 +14,24 @@ lconf \- Lustre filesystem configuration utility The arguments that can be used for lconf are: .PP .TP +--client_uuid +The failed client (required for recovery). +.TP +--clientoptions +Additional options for Lustre. +.TP --config Cluster configuration name used for LDAP query .TP +--conn_uuid +The failed connection (required for recovery). +.TP --d|--cleanup Unconfigure a node. The same config and --node argument used for configuration needs to be used for cleanup as well. This will attempt to undo all of the configuration steps done by lconf, including unloading the kernel modules. .TP +--debug_path +Path to save debug dumps. +.TP --dump Dump the kernel debug log to the specified file before portals is unloaded during cleanup. .TP @@ -41,6 +53,9 @@ Full name of gdb debug script. Default is /tmp/ogdb. --group The group of devices to cleanup/configure. .TP +--group_upcall +Pathname to the MDS upcall to resolve secondary group membership. Defaults to NONE, meaning that the MDS will use whatever group the client supplies, but this is limited to a single supplementary group. +.TP -h,--help Print help. .TP @@ -68,6 +83,12 @@ Perform configuration of devices and services up to level given. level can take --minlevel Specify the minimum level of services to configure/cleanup. Default is 0. .TP +--mkfsoptions +Specify additional options for the mk*fs command line. +.TP +--mountfsoptions +Specify additional options for mount fs command line. Mount options will be passed by this argument. For example, extents are to be enabled by adding ",extents" to the --mountfsoptions option. "errors=remount-ro" and "asyncdel" can also be added to it. +.TP --node node_name Specify a specific node to configure. By default, lconf will search for nodes with the local hostname and 'localhost'. When --node is used, only node_name is searched for. If a matching node is not found in the config, then lconf exits with an error. .TP @@ -80,12 +101,24 @@ Only setup devices and services, do not load modules. --nosetup Only load modules, do not configure devices or services. .TP +--portals +Specify portals source directory. If this is a relative path, then it is assumed to be relative to lustre. +.TP --portals_upcall Specify the location of the Portals upcall scripts used by the client for recovery .TP --ptldebug debug-level This options can be used to set the required debug level. .TP +--record +Write config information on mds. +.TP +--record_log +Specify the name of config record log. +.TP +--record_device +Specify MDS device name that will record the config commands. +.TP --recover Recover a device. .TP @@ -95,9 +128,15 @@ Reformat all the devices. This is essential on the first time the file system is --select Select a particular node for a service .TP +--service +Shorthand for --group --select = +.TP --subsystem Set the portals debug subsystem. .TP +--tgt_uuid +Specify the failed target (required for recovery). +.TP --timeout Set the recovery timeout period. .TP diff --git a/lustre/doc/lconf.lyx b/lustre/doc/lconf.lyx index 1c6d878..2846f48 100644 --- a/lustre/doc/lconf.lyx +++ b/lustre/doc/lconf.lyx @@ -56,10 +56,22 @@ This program configures a node following directives in the . on an LDAP server that can be reached from all the cluster nodes. \layout Description +--client_uuid\SpecialChar ~ + The failed client (required for recovery). +\layout Description + +--clientoptions\SpecialChar ~ + Additional options for Lustre. +\layout Description + --config\SpecialChar ~ Cluster configuration name used for LDAP query \layout Description +--conn_uuid\SpecialChar ~ + The failed connection (required for recovery). +\layout Description + --d|--cleanup Unconfigure a node. The same config and \emph on @@ -70,6 +82,10 @@ This program configures a node following directives in the . including unloading the kernel modules. \layout Description +--debug_path\SpecialChar ~ + Path to save debug dumps. +\layout Description + --dump\SpecialChar ~ Dump the kernel debug log to the specified file before portals is unloaded during cleanup. @@ -106,6 +122,12 @@ This program configures a node following directives in the . The group of devices to cleanup/configure. \layout Description +--group_upcall\SpecialChar ~ + Pathname to the MDS upcall to resolve secondary group membership. + Defaults to NONE, meaning that the MDS will use whatever group the client + supplies, but this is limited to a single supplementary group. +\layout Description + -h,--help Print help. \layout Description @@ -160,6 +182,43 @@ When used in conjunction with cleanup, services are torn down up to a certain Default is 0. \layout Description +--mkfsoptions\SpecialChar ~ + Specify additional options for the mk*fs command + line. +\layout Description + +--mountfsoptions\SpecialChar ~ + Specify additional options for mount fs command + line. + Mount options will be passed by this argument. + For example, extents are to be enabled by adding +\begin_inset Quotes eld +\end_inset + +,extents +\begin_inset Quotes erd +\end_inset + + to the --mountfsoptions option. + +\begin_inset Quotes eld +\end_inset + +errors=remount-ro +\begin_inset Quotes erd +\end_inset + + and +\begin_inset Quotes eld +\end_inset + +asyncdel +\begin_inset Quotes erd +\end_inset + + can also be added to it. +\layout Description + --node\SpecialChar ~ node_name Specify a specific node to configure. By default, lconf will search for nodes with the local hostname and 'localhost'. @@ -190,6 +249,11 @@ node_name --nosetup Only load modules, do not configure devices or services. \layout Description +--portals\SpecialChar ~ + Specify portals source directory. + If this is a relative path, then it is assumed to be relative to lustre. +\layout Description + --portals_upcall\SpecialChar ~ Specify the location of the Portals upcall scripts used by the client for recovery @@ -201,6 +265,18 @@ level This options can be used to set the required debug level. \layout Description +--record Write config information on mds. +\layout Description + +--record_log\SpecialChar ~ + Specify the name of config record log. +\layout Description + +--record_device\SpecialChar ~ + Specify MDS device name that will record the config + commands. +\layout Description + --recover\SpecialChar ~ Recover a device. \layout Description @@ -213,10 +289,17 @@ level This options can be used to set the required debug Select a particular node for a service \layout Description +--single_socket Specify socknal option: only use one socket instead of bundle. +\layout Description + --subsystem\SpecialChar ~ Set the portals debug subsystem. \layout Description +--tgt_uuid\SpecialChar ~ + Specify the failed target (required for recovery). +\layout Description + --timeout\SpecialChar ~ Set the recovery timeout period. \layout Description diff --git a/lustre/doc/lctl.8 b/lustre/doc/lctl.8 index 264fe27..58e5a80 100644 --- a/lustre/doc/lctl.8 +++ b/lustre/doc/lctl.8 @@ -35,18 +35,48 @@ To get a complete listing of available commands, type help at the lctl prompt. For non-interactive single-threaded use, one uses the second invocation, which runs command after connecting to the device. .B Network Configuration +.TP +--net +Indicate the network type to be used for the operation. .TP network Indicate what kind of network applies for the configuration commands that follow. +.TP +interface_list +Print the interface entries. +.TP +add_interface [netmask] +Add an interface entry. +.TP +del_interface [ip] +Delete an interface entry. +.TP +peer_list +Print the peer entries. +.TP +add_peer +Add a peer entry. +.TP +del_peer [] [] [ks] +Remove a peer entry. +.TP +conn_list +Print all the connected remote nid. .TP connect [[ ] | ] This will establish a connection to a remote network network id given by the hostname/port combination, or the elan id. .TP disconnect Disconnect from a remote nid. +.TP +active_tx +This command should print active transmits, and it is only used for elan network type. .TP mynid [nid] Informs the socknal of the local nid. It defaults to hostname for tcp networks and is automatically setup for elan/myrinet networks. +.TP +shownid +Print the local NID. .TP add_uuid Associate a given UUID with an nid. @@ -62,32 +92,26 @@ Add an entry to the routing table for the given target. .TP del_route Delete an entry for the target from the routing table. +.TP +set_route [