gcc-2.95 doesn't handle switch (long long) very well - it emits calls to the non-existent __cmpdi2(). Signed-off-by: Andrew Morton --- 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; } } _