diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/Makefile linux-2.4.24-ck1-vs1.3.4/Makefile
--- linux-2.4.24-ck1-vs1.3.3/Makefile	Mon Jan  5 21:13:42 2004
+++ linux-2.4.24-ck1-vs1.3.4/Makefile	Tue Jan  6 07:06:56 2004
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 24
-EXTRAVERSION = -ck1-vs1.3.3
+EXTRAVERSION = -ck1-vs1.3.4
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/ext2/ialloc.c linux-2.4.24-ck1-vs1.3.4/fs/ext2/ialloc.c
--- linux-2.4.24-ck1-vs1.3.3/fs/ext2/ialloc.c	Mon Jan  5 21:13:44 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/ext2/ialloc.c	Tue Jan  6 07:07:00 2004
@@ -388,7 +388,7 @@ repeat:
 	inode->u.ext2_i.i_new_inode = 1;
 	inode->u.ext2_i.i_flags = dir->u.ext2_i.i_flags & ~EXT2_BTREE_FL;
 	if (S_ISLNK(mode))
-		inode->u.ext2_i.i_flags &= ~(EXT2_IMMUTABLE_FILE_FL|EXT2_IMMUTABLE_LINK_FL|EXT2_APPEND_FL);
+		inode->u.ext2_i.i_flags &= ~(EXT2_IMMUTABLE_FL|EXT2_IUNLINK_FL|EXT2_APPEND_FL);
 	inode->u.ext2_i.i_block_group = group;
 	ext2_set_inode_flags(inode);
 	insert_inode_hash(inode);
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/ext2/inode.c linux-2.4.24-ck1-vs1.3.4/fs/ext2/inode.c
--- linux-2.4.24-ck1-vs1.3.3/fs/ext2/inode.c	Tue Jan  6 00:20:24 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/ext2/inode.c	Tue Jan  6 07:07:00 2004
@@ -899,9 +899,9 @@ void ext2_set_inode_flags(struct inode *
 		inode->i_flags |= S_SYNC;
 	if (flags & EXT2_APPEND_FL)
 		inode->i_flags |= S_APPEND;
-	if (flags & EXT2_IMMUTABLE_FILE_FL)
+	if (flags & EXT2_IMMUTABLE_FL)
 		inode->i_flags |= S_IMMUTABLE;
-	if (flags & EXT2_IMMUTABLE_LINK_FL)
+	if (flags & EXT2_IUNLINK_FL)
 		inode->i_flags |= S_IUNLINK;
 	if (flags & EXT2_NOATIME_FL)
 		inode->i_flags |= S_NOATIME;
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/ext2/ioctl.c linux-2.4.24-ck1-vs1.3.4/fs/ext2/ioctl.c
--- linux-2.4.24-ck1-vs1.3.3/fs/ext2/ioctl.c	Mon Jan  5 21:13:44 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/ext2/ioctl.c	Tue Jan  6 07:07:00 2004
@@ -39,12 +39,12 @@ int ext2_ioctl (struct inode * inode, st
 		oldflags = inode->u.ext2_i.i_flags;
 
 		/*
-		 * The IMMUTABLE_* and APPEND_ONLY flags can only be changed
-		 * by the relevant capability.
+		 * The IMMUTABLE, IUNLINK and APPEND_ONLY flags can only be
+		 * changed by the relevant capability.
 		 *
 		 * This test looks nicer. Thanks to Pauline Middelink
 		 */
-		if ((flags ^ oldflags) & (EXT2_APPEND_FL | EXT2_IMMUTABLE_FILE_FL | EXT2_IMMUTABLE_LINK_FL)) {
+		if ((flags ^ oldflags) & (EXT2_APPEND_FL | EXT2_IMMUTABLE_FL | EXT2_IUNLINK_FL)) {
 			if (!capable(CAP_LINUX_IMMUTABLE))
 				return -EPERM;
 		}
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/ext3/ialloc.c linux-2.4.24-ck1-vs1.3.4/fs/ext3/ialloc.c
--- linux-2.4.24-ck1-vs1.3.3/fs/ext3/ialloc.c	Mon Jan  5 21:13:44 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/ext3/ialloc.c	Tue Jan  6 07:07:00 2004
@@ -485,7 +485,7 @@ repeat:
 	inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;
 	inode->u.ext3_i.i_flags = dir->u.ext3_i.i_flags & ~EXT3_INDEX_FL;
 	if (S_ISLNK(mode))
-		inode->u.ext3_i.i_flags &= ~(EXT3_IMMUTABLE_FILE_FL|EXT3_IMMUTABLE_LINK_FL|EXT3_APPEND_FL);
+		inode->u.ext3_i.i_flags &= ~(EXT3_IMMUTABLE_FL|EXT3_IUNLINK_FL|EXT3_APPEND_FL);
 #ifdef EXT3_FRAGMENTS
 	inode->u.ext3_i.i_faddr = 0;
 	inode->u.ext3_i.i_frag_no = 0;
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/ext3/inode.c linux-2.4.24-ck1-vs1.3.4/fs/ext3/inode.c
--- linux-2.4.24-ck1-vs1.3.3/fs/ext3/inode.c	Tue Jan  6 00:20:24 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/ext3/inode.c	Tue Jan  6 07:07:00 2004
@@ -2087,9 +2087,9 @@ void ext3_set_inode_flags(struct inode *
 		inode->i_flags |= S_SYNC;
 	if (flags & EXT3_APPEND_FL)
 		inode->i_flags |= S_APPEND;
-	if (flags & EXT3_IMMUTABLE_FILE_FL)
+	if (flags & EXT3_IMMUTABLE_FL)
 		inode->i_flags |= S_IMMUTABLE;
-	if (flags & EXT3_IMMUTABLE_LINK_FL)
+	if (flags & EXT3_IUNLINK_FL)
 		inode->i_flags |= S_IUNLINK;
 	if (flags & EXT3_NOATIME_FL)
 		inode->i_flags |= S_NOATIME;
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/ext3/ioctl.c linux-2.4.24-ck1-vs1.3.4/fs/ext3/ioctl.c
--- linux-2.4.24-ck1-vs1.3.3/fs/ext3/ioctl.c	Mon Jan  5 21:13:44 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/ext3/ioctl.c	Tue Jan  6 07:07:00 2004
@@ -48,12 +48,12 @@ int ext3_ioctl (struct inode * inode, st
 		jflag = flags & EXT3_JOURNAL_DATA_FL;
 
 		/*
-		 * The IMMUTABLE_* and APPEND_ONLY flags can only be changed
-		 * by the relevant capability.
+		 * The IMMUTABLE, IUNLINK and APPEND_ONLY flags can only be
+		 * changed by the relevant capability.
 		 *
 		 * This test looks nicer. Thanks to Pauline Middelink
 		 */
-		if ((flags ^ oldflags) & (EXT3_APPEND_FL | EXT3_IMMUTABLE_FILE_FL | EXT3_IMMUTABLE_LINK_FL)) {
+		if ((flags ^ oldflags) & (EXT3_APPEND_FL | EXT3_IMMUTABLE_FL | EXT3_IUNLINK_FL)) {
 			if (!capable(CAP_LINUX_IMMUTABLE))
 				return -EPERM;
 		}
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/nfsd/vfs.c linux-2.4.24-ck1-vs1.3.4/fs/nfsd/vfs.c
--- linux-2.4.24-ck1-vs1.3.3/fs/nfsd/vfs.c	Tue Jan  6 00:20:24 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/nfsd/vfs.c	Tue Jan  6 07:07:00 2004
@@ -1490,8 +1490,8 @@ nfsd_permission(struct svc_export *exp, 
 		(acc & MAY_LOCK)?	" lock"  : "",
 		(acc & MAY_OWNER_OVERRIDE)? " owneroverride" : "",
 		inode->i_mode,
-		IS_IMMUTABLE(inode)? " immut(F)" : "",
-		IS_IUNLINK(inode)? " immut(L)" : "",
+		IS_IMMUTABLE(inode)?	" immut" : "",
+		IS_IUNLINK(inode)?	" iunlink" : "",
 		IS_APPEND(inode)?	" append" : "",
 		IS_RDONLY(inode)?	" ro" : "");
 	dprintk("      owner %d/%d user %d/%d\n",
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/dmapi/dmapi_xfs.c linux-2.4.24-ck1-vs1.3.4/fs/xfs/dmapi/dmapi_xfs.c
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/dmapi/dmapi_xfs.c	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/dmapi/dmapi_xfs.c	Tue Jan  6 07:07:00 2004
@@ -346,6 +346,8 @@ xfs_ip_to_stat(
 		buf->dt_xfs_xflags |= DM_XFLAG_NOATIME;
 	if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP)
 		buf->dt_xfs_xflags |= DM_XFLAG_NODUMP;
+	if (ip->i_d.di_flags & XFS_DIFLAG_IUNLINK)
+		buf->dt_xfs_xflags |= DM_XFLAG_IUNLINK;
 	if (XFS_IFORK_Q(ip))
 		buf->dt_xfs_xflags |= DM_XFLAG_HASATTR;
 	buf->dt_xfs_extsize = ip->i_d.di_extsize << mp->m_sb.sb_blocklog;
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/linux/xfs_ioctl.c linux-2.4.24-ck1-vs1.3.4/fs/xfs/linux/xfs_ioctl.c
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/linux/xfs_ioctl.c	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/linux/xfs_ioctl.c	Tue Jan  6 07:07:00 2004
@@ -1029,6 +1029,7 @@ xfs_ioc_fsgeometry(
 #define LINUX_XFLAG_APPEND	0x00000020 /* writes to file may only append */
 #define LINUX_XFLAG_NODUMP	0x00000040 /* do not dump file */
 #define LINUX_XFLAG_NOATIME	0x00000080 /* do not update atime */
+#define LINUX_XFLAG_IUNLINK	0x00008000 /* allow removal of immutable file */
 
 STATIC unsigned int
 xfs_merge_ioc_xflags(
@@ -1057,6 +1058,10 @@ xfs_merge_ioc_xflags(
 		xflags |= XFS_XFLAG_NODUMP;
 	else
 		xflags &= ~XFS_XFLAG_NODUMP;
+	if (flags & LINUX_XFLAG_IUNLINK)
+		xflags |= XFS_XFLAG_IUNLINK;
+	else
+		xflags &= ~XFS_XFLAG_IUNLINK;
 
 	return xflags;
 }
@@ -1136,6 +1141,8 @@ xfs_ioc_xattr(
 			flags |= LINUX_XFLAG_NOATIME;
 		if (ip->i_d.di_flags & XFS_XFLAG_NODUMP)
 			flags |= LINUX_XFLAG_NODUMP;
+		if (ip->i_d.di_flags & XFS_XFLAG_IUNLINK)
+			flags |= LINUX_XFLAG_IUNLINK;
 		if (copy_to_user((unsigned int *)arg, &flags, sizeof(flags)))
 			return -XFS_ERROR(EFAULT);
 		return 0;
@@ -1147,7 +1154,7 @@ xfs_ioc_xattr(
 
 		if (flags & ~(LINUX_XFLAG_IMMUTABLE | LINUX_XFLAG_APPEND | \
 			      LINUX_XFLAG_NOATIME | LINUX_XFLAG_NODUMP | \
-			      LINUX_XFLAG_SYNC))
+			      LINUX_XFLAG_SYNC | LINUX_XFLAG_IUNLINK))
 			return -XFS_ERROR(EOPNOTSUPP);
 
 		attr_flags = 0;
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/linux/xfs_super.c linux-2.4.24-ck1-vs1.3.4/fs/xfs/linux/xfs_super.c
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/linux/xfs_super.c	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/linux/xfs_super.c	Tue Jan  6 07:07:00 2004
@@ -197,6 +197,10 @@ xfs_revalidate_inode(
 		inode->i_flags |= S_NOATIME;
 	else
 		inode->i_flags &= ~S_NOATIME;
+	if (ip->i_d.di_flags & XFS_DIFLAG_IUNLINK)
+		inode->i_flags |= S_IUNLINK;
+	else
+		inode->i_flags &= ~S_IUNLINK;
 
 	vp->v_flag &= ~VMODIFIED;
 }
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/linux/xfs_vnode.c linux-2.4.24-ck1-vs1.3.4/fs/xfs/linux/xfs_vnode.c
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/linux/xfs_vnode.c	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/linux/xfs_vnode.c	Tue Jan  6 07:07:00 2004
@@ -241,6 +241,10 @@ vn_revalidate(
 			inode->i_flags |= S_NOATIME;
 		else
 			inode->i_flags &= ~S_NOATIME;
+		if (va.va_xflags & XFS_XFLAG_IUNLINK)
+			inode->i_flags |= S_IUNLINK;
+		else
+			inode->i_flags &= ~S_IUNLINK;
 
 		VUNMODIFY(vp);
 	}
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_dinode.h linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_dinode.h
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_dinode.h	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_dinode.h	Tue Jan  6 07:07:00 2004
@@ -456,6 +456,7 @@ xfs_dinode_t *xfs_buf_to_dinode(struct x
 #define XFS_DIFLAG_SYNC_BIT      5	/* inode is written synchronously */
 #define XFS_DIFLAG_NOATIME_BIT   6	/* do not update atime */
 #define XFS_DIFLAG_NODUMP_BIT    7	/* do not dump */
+#define XFS_DIFLAG_IUNLINK_BIT   15	/* allow unlink of immutable */
 #define XFS_DIFLAG_REALTIME      (1 << XFS_DIFLAG_REALTIME_BIT)
 #define XFS_DIFLAG_PREALLOC      (1 << XFS_DIFLAG_PREALLOC_BIT)
 #define XFS_DIFLAG_NEWRTBM       (1 << XFS_DIFLAG_NEWRTBM_BIT)
@@ -464,5 +465,6 @@ xfs_dinode_t *xfs_buf_to_dinode(struct x
 #define XFS_DIFLAG_SYNC          (1 << XFS_DIFLAG_SYNC_BIT)
 #define XFS_DIFLAG_NOATIME       (1 << XFS_DIFLAG_NOATIME_BIT)
 #define XFS_DIFLAG_NODUMP        (1 << XFS_DIFLAG_NODUMP_BIT)
+#define XFS_DIFLAG_IUNLINK       (1 << XFS_DIFLAG_IUNLINK_BIT)
 
 #endif	/* __XFS_DINODE_H__ */
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_fs.h linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_fs.h
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_fs.h	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_fs.h	Tue Jan  6 07:07:00 2004
@@ -76,6 +76,7 @@ struct fsxattr {
 #define XFS_XFLAG_SYNC		0x00000020	/* all writes synchronous */
 #define XFS_XFLAG_NOATIME	0x00000040	/* do not update access time */
 #define XFS_XFLAG_NODUMP	0x00000080	/* do not include in backups */
+#define XFS_XFLAG_IUNLINK	0x00008000	/* allow unlink of immutable */
 #define XFS_XFLAG_HASATTR	0x80000000	/* no DIFLAG for this	*/
 
 /*
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_itable.c linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_itable.c
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_itable.c	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_itable.c	Tue Jan  6 07:07:00 2004
@@ -180,6 +180,8 @@ xfs_bulkstat_one(
 		        XFS_XFLAG_NOATIME : 0) |
 		((di_flags & XFS_DIFLAG_NODUMP) ?
 		        XFS_XFLAG_NODUMP : 0) |
+		((di_flags & XFS_DIFLAG_IUNLINK) ?
+		        XFS_XFLAG_IUNLINK : 0) |
 		(XFS_CFORK_Q_ARCH(dic, arch) ?
 			XFS_XFLAG_HASATTR : 0);
 
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_vnodeops.c linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_vnodeops.c
--- linux-2.4.24-ck1-vs1.3.3/fs/xfs/xfs_vnodeops.c	Mon Jan  5 21:12:34 2004
+++ linux-2.4.24-ck1-vs1.3.4/fs/xfs/xfs_vnodeops.c	Tue Jan  6 07:07:00 2004
@@ -263,6 +263,8 @@ xfs_getattr(
 		vap->va_xflags |= XFS_XFLAG_NOATIME;
 	if (ip->i_d.di_flags & XFS_DIFLAG_NODUMP)
 		vap->va_xflags |= XFS_XFLAG_NODUMP;
+	if (ip->i_d.di_flags & XFS_DIFLAG_IUNLINK)
+		vap->va_xflags |= XFS_XFLAG_IUNLINK;
 	if (XFS_IFORK_Q(ip))
 		vap->va_xflags |= XFS_XFLAG_HASATTR;
 	/*
@@ -863,6 +865,8 @@ xfs_setattr(
 				ip->i_d.di_flags |= XFS_DIFLAG_NOATIME;
 			if (vap->va_xflags & XFS_XFLAG_NODUMP)
 				ip->i_d.di_flags |= XFS_DIFLAG_NODUMP;
+			if (vap->va_xflags & XFS_XFLAG_IUNLINK)
+				ip->i_d.di_flags |= XFS_DIFLAG_IUNLINK;
 			/* can't set PREALLOC this way, just ignore it */
 		}
 		xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/include/linux/capability.h linux-2.4.24-ck1-vs1.3.4/include/linux/capability.h
--- linux-2.4.24-ck1-vs1.3.3/include/linux/capability.h	Tue Jan  6 00:52:22 2004
+++ linux-2.4.24-ck1-vs1.3.4/include/linux/capability.h	Tue Jan  6 07:08:16 2004
@@ -130,7 +130,7 @@ typedef __u32 kernel_cap_t;
 
 #define CAP_SETPCAP          8
 
-/* Allow modification of S_IMMUTABLE_* and S_APPEND file
+/* Allow modification of S_IMMUTABLE, S_IUNLINK and S_APPEND file
    attributes */
 
 #define CAP_LINUX_IMMUTABLE  9
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/include/linux/ext2_fs.h linux-2.4.24-ck1-vs1.3.4/include/linux/ext2_fs.h
--- linux-2.4.24-ck1-vs1.3.3/include/linux/ext2_fs.h	Tue Jan  6 00:25:38 2004
+++ linux-2.4.24-ck1-vs1.3.4/include/linux/ext2_fs.h	Tue Jan  6 07:09:16 2004
@@ -187,7 +187,7 @@ struct ext2_group_desc
 #define	EXT2_UNRM_FL			0x00000002 /* Undelete */
 #define	EXT2_COMPR_FL			0x00000004 /* Compress file */
 #define EXT2_SYNC_FL			0x00000008 /* Synchronous updates */
-#define EXT2_IMMUTABLE_FILE_FL		0x00000010 /* Immutable file */
+#define EXT2_IMMUTABLE_FL		0x00000010 /* Immutable file */
 #define EXT2_APPEND_FL			0x00000020 /* writes to file may only append */
 #define EXT2_NODUMP_FL			0x00000040 /* do not dump file */
 #define EXT2_NOATIME_FL			0x00000080 /* do not update atime */
@@ -198,7 +198,7 @@ struct ext2_group_desc
 #define EXT2_ECOMPR_FL			0x00000800 /* Compression error */
 /* End compression flags --- maybe not all used */	
 #define EXT2_BTREE_FL			0x00001000 /* btree format dir */
-#define EXT2_IMMUTABLE_LINK_FL		0x00008000 /* Immutable link */
+#define EXT2_IUNLINK_FL			0x00008000 /* Immutable unlink */
 #define EXT2_RESERVED_FL		0x80000000 /* reserved for ext2 lib */
 
 #define EXT2_FL_USER_VISIBLE		0x00009FFF /* User visible flags */
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/include/linux/ext3_fs.h linux-2.4.24-ck1-vs1.3.4/include/linux/ext3_fs.h
--- linux-2.4.24-ck1-vs1.3.3/include/linux/ext3_fs.h	Tue Jan  6 00:25:46 2004
+++ linux-2.4.24-ck1-vs1.3.4/include/linux/ext3_fs.h	Tue Jan  6 07:09:26 2004
@@ -190,7 +190,7 @@ struct ext3_group_desc
 #define	EXT3_UNRM_FL			0x00000002 /* Undelete */
 #define	EXT3_COMPR_FL			0x00000004 /* Compress file */
 #define EXT3_SYNC_FL			0x00000008 /* Synchronous updates */
-#define EXT3_IMMUTABLE_FILE_FL		0x00000010 /* Immutable file */
+#define EXT3_IMMUTABLE_FL		0x00000010 /* Immutable file */
 #define EXT3_APPEND_FL			0x00000020 /* writes to file may only append */
 #define EXT3_NODUMP_FL			0x00000040 /* do not dump file */
 #define EXT3_NOATIME_FL			0x00000080 /* do not update atime */
@@ -203,7 +203,7 @@ struct ext3_group_desc
 #define EXT3_INDEX_FL			0x00001000 /* hash-indexed directory */
 #define EXT3_IMAGIC_FL			0x00002000 /* AFS directory */
 #define EXT3_JOURNAL_DATA_FL		0x00004000 /* file data should be journaled */
-#define EXT3_IMMUTABLE_LINK_FL		0x00008000 /* Immutable link */
+#define EXT3_IUNLINK_FL			0x00008000 /* Immutable unlink */
 #define EXT3_RESERVED_FL		0x80000000 /* reserved for ext3 lib */
 
 #define EXT3_FL_USER_VISIBLE		0x0000DFFF /* User visible flags */
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/include/linux/fs.h linux-2.4.24-ck1-vs1.3.4/include/linux/fs.h
--- linux-2.4.24-ck1-vs1.3.3/include/linux/fs.h	Tue Jan  6 00:52:22 2004
+++ linux-2.4.24-ck1-vs1.3.4/include/linux/fs.h	Tue Jan  6 07:08:16 2004
@@ -138,7 +138,7 @@ extern int leases_enable, dir_notify_ena
 #define S_IMMUTABLE	16	/* Immutable file */
 #define S_DEAD		32	/* removed, but still open directory */
 #define S_NOQUOTA	64	/* Inode is not counted to quota */
-#define S_IUNLINK	128	/* Immutable links */
+#define S_IUNLINK	128	/* Immutable unlink */
 
 /*
  * Note that nosuid etc flags are inode-specific: setting some file-system
@@ -163,7 +163,7 @@ extern int leases_enable, dir_notify_ena
 #define IS_NOQUOTA(inode)	((inode)->i_flags & S_NOQUOTA)
 #define IS_APPEND(inode)	((inode)->i_flags & S_APPEND)
 #define IS_IMMUTABLE(inode)	((inode)->i_flags & S_IMMUTABLE)
-#define IS_IUNLINK(inode) ((((inode)->i_flags & S_IMMUTABLE) << 3) ^ ((inode)->i_flags & S_IUNLINK) )
+#define IS_IUNLINK(inode)	(IS_IMMUTABLE(inode) && !((inode)->i_flags & S_IUNLINK))
 #define IS_NOATIME(inode)	(__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME))
 #define IS_NODIRATIME(inode)	__IS_FLG(inode, MS_NODIRATIME)
 #define IS_POSIXACL(inode)	__IS_FLG(inode, MS_POSIXACL)
@@ -375,9 +375,9 @@ struct iattr {
 #define ATTR_FLAG_SYNCRONOUS	1 	/* Syncronous write */
 #define ATTR_FLAG_NOATIME	2 	/* Don't update atime */
 #define ATTR_FLAG_APPEND	4 	/* Append-only file */
-#define ATTR_FLAG_IMMUTABLE_FILE	8	/* Immutable file */
+#define ATTR_FLAG_IMMUTABLE	8	/* Immutable file */
 #define ATTR_FLAG_NODIRATIME	16 	/* Don't update atime for directory */
-#define ATTR_FLAG_IMMUTABLE_LINK	32	/* Immutable file */
+#define ATTR_FLAG_IUNLINK	32	/* Immutable unlink */
 
 /*
  * Includes for diskquotas and mount structures.
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/include/linux/reiserfs_fs.h linux-2.4.24-ck1-vs1.3.4/include/linux/reiserfs_fs.h
--- linux-2.4.24-ck1-vs1.3.3/include/linux/reiserfs_fs.h	Tue Jan  6 00:55:15 2004
+++ linux-2.4.24-ck1-vs1.3.4/include/linux/reiserfs_fs.h	Tue Jan  6 07:11:15 2004
@@ -866,8 +866,8 @@ struct stat_data_v1
 
 /* we want common flags to have the same values as in ext2,
    so chattr(1) will work without problems */
-#define REISERFS_IMMUTABLE_FL EXT2_IMMUTABLE_FILE_FL
-#define REISERFS_IUNLINK_FL EXT2_IMMUTABLE_LINK_FL
+#define REISERFS_IMMUTABLE_FL EXT2_IMMUTABLE_FL
+#define REISERFS_IUNLINK_FL   EXT2_IUNLINK_FL
 #define REISERFS_APPEND_FL    EXT2_APPEND_FL
 #define REISERFS_SYNC_FL      EXT2_SYNC_FL
 #define REISERFS_NOATIME_FL   EXT2_NOATIME_FL
diff -NurpP --minimal linux-2.4.24-ck1-vs1.3.3/kernel/sys.c linux-2.4.24-ck1-vs1.3.4/kernel/sys.c
--- linux-2.4.24-ck1-vs1.3.3/kernel/sys.c	Mon Jan  5 21:13:46 2004
+++ linux-2.4.24-ck1-vs1.3.4/kernel/sys.c	Tue Jan  6 07:07:01 2004
@@ -288,8 +288,8 @@ asmlinkage long sys_getpriority(int whic
  *      the following arguments
  *
  *      argv [0] = vshelper_path;
- *      argv [1] = context identifier
- *      argv [2] = "restart", "halt", "poweroff", ...
+ *      argv [1] = action: "restart", "halt", "poweroff", ...
+ *      argv [2] = context identifier
  *      argv [3] = additional argument (restart2)
  *
  *      envp [*] = type-specific parameters
@@ -302,7 +302,7 @@ long vs_reboot(unsigned int cmd, void * 
 	char uid_buf[32], pid_buf[32];
 	char buffer[256];
 
-	char *argv[] = {vshelper_path, id_buf, NULL, NULL, 0};
+	char *argv[] = {vshelper_path, NULL, id_buf, NULL, 0};
 	char *envp[] = {"HOME=/", "TERM=linux",
 			"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
 			uid_buf, pid_buf, cmd_buf, 0};
@@ -315,15 +315,15 @@ long vs_reboot(unsigned int cmd, void * 
 
 	switch (cmd) {
 	case LINUX_REBOOT_CMD_RESTART:
-		argv[2] = "restart";
+		argv[1] = "restart";
 		break;	
 
 	case LINUX_REBOOT_CMD_HALT:
-		argv[2] = "halt";
+		argv[1] = "halt";
 		break;	
 
 	case LINUX_REBOOT_CMD_POWER_OFF:
-		argv[2] = "poweroff";
+		argv[1] = "poweroff";
 		break;	
 
 	case LINUX_REBOOT_CMD_RESTART2:
@@ -331,7 +331,7 @@ long vs_reboot(unsigned int cmd, void * 
 			return -EFAULT;
 		argv[3] = buffer;
 	default:
-		argv[2] = "restart2";
+		argv[1] = "restart2";
 		break;	
 	}
 
