patch-2.4.10 linux/fs/sysv/inode.c

Next file: linux/fs/sysv/super.c
Previous file: linux/fs/sysv/balloc.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.9/linux/fs/sysv/inode.c linux/fs/sysv/inode.c
@@ -131,8 +131,11 @@
 		inode->i_fop = &sysv_dir_operations;
 		inode->i_mapping->a_ops = &sysv_aops;
 	} else if (S_ISLNK(inode->i_mode)) {
-		inode->i_op = &sysv_symlink_inode_operations;
-		inode->i_mapping->a_ops = &sysv_aops;
+		if (inode->i_blocks) {
+			inode->i_op = &sysv_symlink_inode_operations;
+			inode->i_mapping->a_ops = &sysv_aops;
+		} else
+			inode->i_op = &sysv_fast_symlink_inode_operations;
 	} else
 		init_special_inode(inode, inode->i_mode, rdev);
 }
@@ -195,9 +198,7 @@
 			if (attr->ia_mode == COH_KLUDGE_SYMLINK_MODE)
 				attr->ia_mode = COH_KLUDGE_NOT_SYMLINK;
 
-	inode_setattr(inode, attr);
-
-	return 0;
+	return inode_setattr(inode, attr);
 }
 
 static struct buffer_head * sysv_update_inode(struct inode * inode)

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)