

gcc-2.95 doesn't handle switch (long long) very well - it emits calls to the
non-existent __cmpdi2(). 

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/fs/cachefs/rootdir.c |   16 ++++------------
 1 files changed, 4 insertions(+), 12 deletions(-)

diff -puN fs/cachefs/rootdir.c~cachefs-linkage-fix fs/cachefs/rootdir.c
--- 25/fs/cachefs/rootdir.c~cachefs-linkage-fix	2004-09-06 22:28:35.991486896 -0700
+++ 25-akpm/fs/cachefs/rootdir.c	2004-09-06 22:28:35.995486288 -0700
@@ -278,45 +278,37 @@ static int cachefs_root_readdir(struct f
 	cachefs_metadata_postread(inode, metadata);
 
 	/* do the usual . and .. */
-	switch (file->f_pos) {
-	case 0:
+	if (file->f_pos == 0) {
 		ret = filldir(cookie, ".", 1, file->f_pos,
 			      inode->vfs_inode.i_ino, DT_DIR);
 		if (ret < 0)
 			goto done;
 		file->f_pos++;
-	case 1:
+	} else if (file->f_pos == 1) {
 		ret = filldir(cookie, "..", 2, file->f_pos,
 			      parent_ino(file->f_dentry), DT_DIR);
 		if (ret < 0)
 			goto done;
 		file->f_pos++;
-	default:
-		break;
 	}
 
 	/* deal with root directory only entries */
 	if (inode->vfs_inode.i_ino == CACHEFS_INO_ROOTDIR) {
 		rec.dpos_off = 4;
-		switch (file->f_pos) {
-		case 2:
+		if (file->f_pos == 2) {
 			ret = filldir(cookie, "metadata_catalogue", 18,
 				      file->f_pos, CACHEFS_INO_METADATA,
 				      DT_REG);
 			if (ret < 0)
 				goto done;
 			file->f_pos++;
-
-		case 3:
+		} else if (file->f_pos == 3) {
 			ret = filldir(cookie, "status", 6,
 				      file->f_pos, CACHEFS_INO_STATUS,
 				      DT_REG);
 			if (ret < 0)
 				goto done;
 			file->f_pos++;
-
-		default:
-			break;
 		}
 	}
 
_
