diff -NurpP --minimal linux-2.4.24-vs1.3.3/Makefile linux-2.4.24-vs1.3.4/Makefile
--- linux-2.4.24-vs1.3.3/Makefile	Mon Jan  5 20:52:23 2004
+++ linux-2.4.24-vs1.3.4/Makefile	Tue Jan  6 18:38:22 2004
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 24
-EXTRAVERSION = -vs1.3.3
+EXTRAVERSION = -vs1.3.4
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/ext2/ialloc.c linux-2.4.24-vs1.3.4/fs/ext2/ialloc.c
--- linux-2.4.24-vs1.3.3/fs/ext2/ialloc.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ext2/ialloc.c	Tue Jan  6 07:06:13 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-vs1.3.3/fs/ext2/inode.c linux-2.4.24-vs1.3.4/fs/ext2/inode.c
--- linux-2.4.24-vs1.3.3/fs/ext2/inode.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ext2/inode.c	Tue Jan  6 07:06:13 2004
@@ -879,7 +879,7 @@ do_indirects:
 
 void ext2_truncate (struct inode * inode)
 {
-	if (IS_APPEND(inode) || IS_IMMUTABLE_FILE(inode))
+	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
 		return;
 	ext2_truncate_nocheck(inode);
 }
@@ -888,15 +888,15 @@ void ext2_set_inode_flags(struct inode *
 {
 	unsigned int flags = inode->u.ext2_i.i_flags;
 
-	inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE_FILE|S_IMMUTABLE_LINK|S_NOATIME);
+	inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_IUNLINK|S_NOATIME);
 	if (flags & EXT2_SYNC_FL)
 		inode->i_flags |= S_SYNC;
 	if (flags & EXT2_APPEND_FL)
 		inode->i_flags |= S_APPEND;
-	if (flags & EXT2_IMMUTABLE_FILE_FL)
-		inode->i_flags |= S_IMMUTABLE_FILE;
-	if (flags & EXT2_IMMUTABLE_LINK_FL)
-		inode->i_flags |= S_IMMUTABLE_LINK;
+	if (flags & EXT2_IMMUTABLE_FL)
+		inode->i_flags |= S_IMMUTABLE;
+	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-vs1.3.3/fs/ext2/ioctl.c linux-2.4.24-vs1.3.4/fs/ext2/ioctl.c
--- linux-2.4.24-vs1.3.3/fs/ext2/ioctl.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ext2/ioctl.c	Tue Jan  6 07:06:13 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-vs1.3.3/fs/ext3/ialloc.c linux-2.4.24-vs1.3.4/fs/ext3/ialloc.c
--- linux-2.4.24-vs1.3.3/fs/ext3/ialloc.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ext3/ialloc.c	Tue Jan  6 07:06:13 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-vs1.3.3/fs/ext3/inode.c linux-2.4.24-vs1.3.4/fs/ext3/inode.c
--- linux-2.4.24-vs1.3.3/fs/ext3/inode.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ext3/inode.c	Tue Jan  6 07:06:13 2004
@@ -2002,7 +2002,7 @@ out_stop:
 
 void ext3_truncate(struct inode * inode)
 {
-	if (IS_APPEND(inode) || IS_IMMUTABLE_FILE(inode))
+	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
 		return;
 	ext3_truncate_nocheck(inode);
 }
@@ -2078,15 +2078,15 @@ void ext3_set_inode_flags(struct inode *
 {
 	unsigned int flags = inode->u.ext3_i.i_flags;
 
-	inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE_FILE|S_IMMUTABLE_LINK|S_NOATIME);
+	inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_IUNLINK|S_NOATIME);
 	if (flags & EXT3_SYNC_FL)
 		inode->i_flags |= S_SYNC;
 	if (flags & EXT3_APPEND_FL)
 		inode->i_flags |= S_APPEND;
-	if (flags & EXT3_IMMUTABLE_FILE_FL)
-		inode->i_flags |= S_IMMUTABLE_FILE;
-	if (flags & EXT3_IMMUTABLE_LINK_FL)
-		inode->i_flags |= S_IMMUTABLE_LINK;
+	if (flags & EXT3_IMMUTABLE_FL)
+		inode->i_flags |= S_IMMUTABLE;
+	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-vs1.3.3/fs/ext3/ioctl.c linux-2.4.24-vs1.3.4/fs/ext3/ioctl.c
--- linux-2.4.24-vs1.3.3/fs/ext3/ioctl.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ext3/ioctl.c	Tue Jan  6 07:06:13 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-vs1.3.3/fs/fat/file.c linux-2.4.24-vs1.3.4/fs/fat/file.c
--- linux-2.4.24-vs1.3.3/fs/fat/file.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/fat/file.c	Sun Aug 12 19:56:56 2001
@@ -119,7 +119,7 @@ void fat_truncate(struct inode *inode)
 	/* Why no return value?  Surely the disk could fail... */
 	if (IS_RDONLY (inode))
 		return /* -EPERM */;
-	if (IS_IMMUTABLE_FILE(inode))
+	if (IS_IMMUTABLE(inode))
 		return /* -EPERM */;
 	cluster = 1 << sbi->cluster_bits;
 	/* 
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/fat/inode.c linux-2.4.24-vs1.3.4/fs/fat/inode.c
--- linux-2.4.24-vs1.3.3/fs/fat/inode.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/fat/inode.c	Mon Aug 25 13:44:43 2003
@@ -950,7 +950,7 @@ static void fat_fill_inode(struct inode 
 	}
 	if(de->attr & ATTR_SYS)
 		if (sbi->options.sys_immutable)
-			inode->i_flags |= S_IMMUTABLE_FILE;
+			inode->i_flags |= S_IMMUTABLE;
 	MSDOS_I(inode)->i_attrs = de->attr & ATTR_UNUSED;
 	/* this is as close to the truth as we can get ... */
 	inode->i_blksize = 1 << sbi->cluster_bits;
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/hpfs/file.c linux-2.4.24-vs1.3.4/fs/hpfs/file.c
--- linux-2.4.24-vs1.3.3/fs/hpfs/file.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/hpfs/file.c	Mon Aug 13 02:37:53 2001
@@ -60,7 +60,7 @@ secno hpfs_bmap(struct inode *inode, uns
 
 void hpfs_truncate(struct inode *i)
 {
-	if (IS_IMMUTABLE_FILE(i)) return /*-EPERM*/;
+	if (IS_IMMUTABLE(i)) return /*-EPERM*/;
 	i->i_hpfs_n_secs = 0;
 	i->i_blocks = 1 + ((i->i_size + 511) >> 9);
 	i->u.hpfs_i.mmu_private = i->i_size;
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/intermezzo/vfs.c linux-2.4.24-vs1.3.4/fs/intermezzo/vfs.c
--- linux-2.4.24-vs1.3.3/fs/intermezzo/vfs.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/intermezzo/vfs.c	Tue Jan  6 07:06:13 2004
@@ -140,7 +140,7 @@ static inline int may_delete(struct inod
         if (IS_APPEND(dir))
                 return -EPERM;
         if (check_sticky(dir, victim->d_inode)||IS_APPEND(victim->d_inode)||
-            IS_IMMUTABLE_LINK(victim->d_inode))
+            IS_IUNLINK(victim->d_inode))
                 return -EPERM;
         if (isdir) {
                 if (!S_ISDIR(victim->d_inode->i_mode))
@@ -262,7 +262,7 @@ int presto_settime(struct presto_file_se
                         return -EROFS;
                 }
 
-                if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode)) {
+                if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) {
                         EXIT;
                         return -EPERM;
                 }
@@ -377,7 +377,7 @@ int presto_do_setattr(struct presto_file
                 return -EROFS;
         }
 
-        if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode)) {
+        if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) {
                 EXIT;
                 return -EPERM;
         }
@@ -772,7 +772,7 @@ int presto_do_link(struct presto_file_se
          * A link to an append-only or immutable file cannot be created.
          */
         error = -EPERM;
-        if (IS_APPEND(inode) || IS_IMMUTABLE_LINK(inode)) {
+        if (IS_APPEND(inode) || IS_IUNLINK(inode)) {
                 EXIT;
                 goto exit_lock;
         }
@@ -2362,7 +2362,7 @@ int presto_do_set_ext_attr(struct presto
                 return -EROFS;
         }
 
-        if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode)) {
+        if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) {
                 EXIT;
                 return -EPERM;
         }
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/jfs/xattr.c linux-2.4.24-vs1.3.4/fs/jfs/xattr.c
--- linux-2.4.24-vs1.3.3/fs/jfs/xattr.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/jfs/xattr.c	Fri Nov 28 19:26:21 2003
@@ -653,7 +653,7 @@ static int can_set_xattr(struct inode *i
 	if (IS_RDONLY(inode))
 		return -EROFS;
 
-	if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode) || S_ISLNK(inode->i_mode))
+	if (IS_IMMUTABLE(inode) || IS_APPEND(inode) || S_ISLNK(inode->i_mode))
 		return -EPERM;
 
 	if((strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN) != 0) &&
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/namei.c linux-2.4.24-vs1.3.4/fs/namei.c
--- linux-2.4.24-vs1.3.3/fs/namei.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/namei.c	Tue Jan  6 07:06:13 2004
@@ -173,7 +173,7 @@ int vfs_permission(struct inode * inode,
 		/*
 		 * Nobody gets write access to an immutable file.
 		 */
-		if (IS_IMMUTABLE_FILE(inode))
+		if (IS_IMMUTABLE(inode))
 			return -EACCES;
 	}
 
@@ -914,7 +914,7 @@ static inline int may_delete(struct inod
 		return error;
 	if (IS_APPEND(dir))
 		return -EPERM;
-	if (check_sticky(dir, victim->d_inode)||IS_APPEND(victim->d_inode)||IS_IMMUTABLE_LINK(victim->d_inode))
+	if (check_sticky(dir, victim->d_inode)||IS_APPEND(victim->d_inode)||IS_IUNLINK(victim->d_inode))
 		return -EPERM;
 	if (isdir) {
 		if (!S_ISDIR(victim->d_inode->i_mode))
@@ -1627,7 +1627,7 @@ int vfs_link(struct dentry *old_dentry, 
 	 * A link to an append-only or immutable file cannot be created.
 	 */
 	error = -EPERM;
-	if (IS_APPEND(inode) || IS_IMMUTABLE_LINK(inode))
+	if (IS_APPEND(inode) || IS_IUNLINK(inode))
 		goto exit_lock;
 	if (!dir->i_op || !dir->i_op->link)
 		goto exit_lock;
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/nfsd/vfs.c linux-2.4.24-vs1.3.4/fs/nfsd/vfs.c
--- linux-2.4.24-vs1.3.3/fs/nfsd/vfs.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/nfsd/vfs.c	Tue Jan  6 07:06:13 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_FILE(inode)? " immut(F)" : "",
-		IS_IMMUTABLE_LINK(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",
@@ -1510,7 +1510,7 @@ nfsd_permission(struct svc_export *exp, 
 	 && (acc & (MAY_WRITE | MAY_SATTR | MAY_TRUNC))) {
 		if (EX_RDONLY(exp) || IS_RDONLY(inode))
 			return nfserr_rofs;
-		if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE_FILE(inode))
+		if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode))
 			return nfserr_perm;
 	}
 	if ((acc & MAY_TRUNC) && IS_APPEND(inode))
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/open.c linux-2.4.24-vs1.3.4/fs/open.c
--- linux-2.4.24-vs1.3.3/fs/open.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/open.c	Mon Aug 25 13:44:43 2003
@@ -148,7 +148,7 @@ static inline long do_sys_truncate(const
 		goto dput_and_out;
 
 	error = -EPERM;
-	if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode))
+	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
 		goto dput_and_out;
 
 	/*
@@ -480,7 +480,7 @@ asmlinkage long sys_fchmod(unsigned int 
 	if (IS_RDONLY(inode))
 		goto out_putf;
 	err = -EPERM;
-	if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode))
+	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
 		goto out_putf;
 	if (mode == (mode_t) -1)
 		mode = inode->i_mode;
@@ -511,7 +511,7 @@ asmlinkage long sys_chmod(const char * f
 		goto dput_and_out;
 
 	error = -EPERM;
-	if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode))
+	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
 		goto dput_and_out;
 
 	if (mode == (mode_t) -1)
@@ -541,7 +541,7 @@ static int chown_common(struct dentry * 
 	if (IS_RDONLY(inode))
 		goto out;
 	error = -EPERM;
-	if (IS_IMMUTABLE_FILE(inode) || IS_APPEND(inode))
+	if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
 		goto out;
 	if (user == (uid_t) -1)
 		user = inode->i_uid;
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/proc/base.c linux-2.4.24-vs1.3.4/fs/proc/base.c
--- linux-2.4.24-vs1.3.3/fs/proc/base.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/proc/base.c	Tue Jan  6 07:06:13 2004
@@ -1094,7 +1094,7 @@ struct dentry *proc_pid_lookup(struct in
 	inode->i_op = &proc_base_inode_operations;
 	inode->i_fop = &proc_base_operations;
 	inode->i_nlink = 3;
-	inode->i_flags|=S_IMMUTABLE_FILE;
+	inode->i_flags|=S_IMMUTABLE;
 
 	dentry->d_op = &pid_base_dentry_operations;
 	d_add(dentry, inode);
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/reiserfs/inode.c linux-2.4.24-vs1.3.4/fs/reiserfs/inode.c
--- linux-2.4.24-vs1.3.3/fs/reiserfs/inode.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/reiserfs/inode.c	Tue Jan  6 07:06:13 2004
@@ -1574,7 +1574,7 @@ int reiserfs_new_inode (struct reiserfs_
 
     /* symlink cannot be immutable or append only, right? */
     if( S_ISLNK( inode -> i_mode ) )
-	    inode -> i_flags &= ~ ( S_IMMUTABLE_FILE | S_APPEND );
+	    inode -> i_flags &= ~ ( S_IMMUTABLE | S_APPEND );
 
     /* item head of new item */
     ih.ih_key.k_dir_id = INODE_PKEY (dir)->k_objectid;
@@ -2177,14 +2177,14 @@ void sd_attrs_to_i_attrs( __u16 sd_attrs
 			inode -> i_flags |= S_SYNC;
 		else
 			inode -> i_flags &= ~S_SYNC;
-		if( sd_attrs & REISERFS_IMMUTABLE_FILE_FL )
-			inode -> i_flags |= S_IMMUTABLE_FILE;
+		if( sd_attrs & REISERFS_IMMUTABLE_FL )
+			inode -> i_flags |= S_IMMUTABLE;
 		else
-			inode -> i_flags &= ~S_IMMUTABLE_FILE;
-		if( sd_attrs & REISERFS_IMMUTABLE_LINK_FL )
-			inode -> i_flags |= S_IMMUTABLE_LINK;
+			inode -> i_flags &= ~S_IMMUTABLE;
+		if( sd_attrs & REISERFS_IUNLINK_FL )
+			inode -> i_flags |= S_IUNLINK;
 		else
-			inode -> i_flags &= ~S_IMMUTABLE_LINK;
+			inode -> i_flags &= ~S_IUNLINK;
 		if( sd_attrs & REISERFS_APPEND_FL )
 			inode -> i_flags |= S_APPEND;
 		else
@@ -2203,14 +2203,14 @@ void sd_attrs_to_i_attrs( __u16 sd_attrs
 void i_attrs_to_sd_attrs( struct inode *inode, __u16 *sd_attrs )
 {
 	if( reiserfs_attrs( inode -> i_sb ) ) {
-		if( inode -> i_flags & S_IMMUTABLE_FILE )
-			*sd_attrs |= REISERFS_IMMUTABLE_FILE_FL;
+		if( inode -> i_flags & S_IMMUTABLE )
+			*sd_attrs |= REISERFS_IMMUTABLE_FL;
 		else
-			*sd_attrs &= ~REISERFS_IMMUTABLE_FILE_FL;
-		if( inode -> i_flags & S_IMMUTABLE_LINK )
-			*sd_attrs |= REISERFS_IMMUTABLE_LINK_FL;
+			*sd_attrs &= ~REISERFS_IMMUTABLE_FL;
+		if( inode -> i_flags & S_IUNLINK )
+			*sd_attrs |= REISERFS_IUNLINK_FL;
 		else
-			*sd_attrs &= ~REISERFS_IMMUTABLE_LINK_FL;
+			*sd_attrs &= ~REISERFS_IUNLINK_FL;
 		if( inode -> i_flags & S_SYNC )
 			*sd_attrs |= REISERFS_SYNC_FL;
 		else
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/reiserfs/ioctl.c linux-2.4.24-vs1.3.4/fs/reiserfs/ioctl.c
--- linux-2.4.24-vs1.3.3/fs/reiserfs/ioctl.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/reiserfs/ioctl.c	Tue Jan  6 07:06:13 2004
@@ -52,7 +52,7 @@ int reiserfs_ioctl (struct inode * inode
 			return -EFAULT;
 
 		if ( ( ( flags ^ inode->u.reiserfs_i.i_attrs) &
-		     ( REISERFS_IMMUTABLE_FILE_FL | REISERFS_IMMUTABLE_LINK_FL | REISERFS_APPEND_FL )) &&
+		     ( REISERFS_IMMUTABLE_FL | REISERFS_IUNLINK_FL | REISERFS_APPEND_FL )) &&
 		     !capable( CAP_LINUX_IMMUTABLE ) )
 			return -EPERM;
 			
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/udf/inode.c linux-2.4.24-vs1.3.4/fs/udf/inode.c
--- linux-2.4.24-vs1.3.3/fs/udf/inode.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/udf/inode.c	Sat Aug  3 02:39:45 2002
@@ -860,7 +860,7 @@ void udf_truncate(struct inode * inode)
 	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
 			S_ISLNK(inode->i_mode)))
 		return;
-	if (IS_APPEND(inode) || IS_IMMUTABLE_FILE(inode))
+	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
 		return;
 
 	if (UDF_I_ALLOCTYPE(inode) == ICBTAG_FLAG_AD_IN_ICB)
diff -NurpP --minimal linux-2.4.24-vs1.3.3/fs/ufs/truncate.c linux-2.4.24-vs1.3.4/fs/ufs/truncate.c
--- linux-2.4.24-vs1.3.3/fs/ufs/truncate.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/fs/ufs/truncate.c	Fri Nov 29 00:53:15 2002
@@ -434,7 +434,7 @@ void ufs_truncate (struct inode * inode)
 
 	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode)))
 		return;
-	if (IS_APPEND(inode) || IS_IMMUTABLE_FILE(inode))
+	if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
 		return;
 	while (1) {
 		retry = ufs_trunc_direct(inode);
diff -NurpP --minimal linux-2.4.24-vs1.3.3/include/linux/capability.h linux-2.4.24-vs1.3.4/include/linux/capability.h
--- linux-2.4.24-vs1.3.3/include/linux/capability.h	Mon Jan  5 20:52:46 2004
+++ linux-2.4.24-vs1.3.4/include/linux/capability.h	Tue Jan  6 07:08:09 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-vs1.3.3/include/linux/ext2_fs.h linux-2.4.24-vs1.3.4/include/linux/ext2_fs.h
--- linux-2.4.24-vs1.3.3/include/linux/ext2_fs.h	Mon Jan  5 20:54:07 2004
+++ linux-2.4.24-vs1.3.4/include/linux/ext2_fs.h	Tue Jan  6 07:08:14 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-vs1.3.3/include/linux/ext3_fs.h linux-2.4.24-vs1.3.4/include/linux/ext3_fs.h
--- linux-2.4.24-vs1.3.3/include/linux/ext3_fs.h	Mon Jan  5 20:54:15 2004
+++ linux-2.4.24-vs1.3.4/include/linux/ext3_fs.h	Tue Jan  6 07:08:23 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-vs1.3.3/include/linux/fs.h linux-2.4.24-vs1.3.4/include/linux/fs.h
--- linux-2.4.24-vs1.3.3/include/linux/fs.h	Mon Jan  5 20:52:46 2004
+++ linux-2.4.24-vs1.3.4/include/linux/fs.h	Tue Jan  6 07:08:09 2004
@@ -132,10 +132,10 @@ extern int leases_enable, dir_notify_ena
 #define S_NOATIME	2	/* Do not update access times */
 #define S_QUOTA		4	/* Quota initialized for file */
 #define S_APPEND	8	/* Append-only file */
-#define S_IMMUTABLE_FILE	16	/* Immutable file */
+#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_IMMUTABLE_LINK	128	/* Immutable links */
+#define S_IUNLINK	128	/* Immutable unlink */
 
 /*
  * Note that nosuid etc flags are inode-specific: setting some file-system
@@ -159,8 +159,8 @@ extern int leases_enable, dir_notify_ena
 #define IS_QUOTAINIT(inode)	((inode)->i_flags & S_QUOTA)
 #define IS_NOQUOTA(inode)	((inode)->i_flags & S_NOQUOTA)
 #define IS_APPEND(inode)	((inode)->i_flags & S_APPEND)
-#define IS_IMMUTABLE_FILE(inode)	((inode)->i_flags & S_IMMUTABLE_FILE)
-#define IS_IMMUTABLE_LINK(inode) ((((inode)->i_flags & S_IMMUTABLE_FILE) << 3) ^ ((inode)->i_flags & S_IMMUTABLE_LINK) )
+#define IS_IMMUTABLE(inode)	((inode)->i_flags & S_IMMUTABLE)
+#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)
 
@@ -369,9 +369,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-vs1.3.3/include/linux/reiserfs_fs.h linux-2.4.24-vs1.3.4/include/linux/reiserfs_fs.h
--- linux-2.4.24-vs1.3.3/include/linux/reiserfs_fs.h	Mon Jan  5 20:55:22 2004
+++ linux-2.4.24-vs1.3.4/include/linux/reiserfs_fs.h	Tue Jan  6 07:09:52 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_FILE_FL EXT2_IMMUTABLE_FILE_FL
-#define REISERFS_IMMUTABLE_LINK_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
@@ -884,8 +884,8 @@ struct stat_data_v1
 #define REISERFS_NOTAIL_FL    (0x00008000) /* EXT2_NOTAIL_FL */
 
 /* persistent flags that file inherits from the parent directory */
-#define REISERFS_INHERIT_MASK ( REISERFS_IMMUTABLE_FILE_FL |	\
-				REISERFS_IMMUTABLE_LINK_FL |	\
+#define REISERFS_INHERIT_MASK ( REISERFS_IMMUTABLE_FL |	\
+				REISERFS_IUNLINK_FL |	\
 				REISERFS_SYNC_FL |	\
 				REISERFS_NOATIME_FL |	\
 				REISERFS_NODUMP_FL |	\
diff -NurpP --minimal linux-2.4.24-vs1.3.3/kernel/sys.c linux-2.4.24-vs1.3.4/kernel/sys.c
--- linux-2.4.24-vs1.3.3/kernel/sys.c	Mon Jan  5 20:52:24 2004
+++ linux-2.4.24-vs1.3.4/kernel/sys.c	Tue Jan  6 07:06:13 2004
@@ -285,8 +285,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
@@ -299,7 +299,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};
@@ -312,15 +312,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:
@@ -328,7 +328,7 @@ long vs_reboot(unsigned int cmd, void * 
 			return -EFAULT;
 		argv[3] = buffer;
 	default:
-		argv[2] = "restart2";
+		argv[1] = "restart2";
 		break;	
 	}
 
