]>
Commit | Line | Data |
---|---|---|
2a0424ce JR |
1 | diff -u -N -r linux.orig/fs/nfs/inode.c linux.nfs/fs/nfs/inode.c |
2 | --- linux.orig/fs/nfs/inode.c Tue Feb 13 19:14:28 2001 | |
3 | +++ linux.nfs/fs/nfs/inode.c Fri Mar 9 10:58:47 2001 | |
4 | @@ -548,6 +548,22 @@ | |
5 | nfs_zap_caches(inode); | |
6 | } | |
7 | ||
8 | +/* This kludge (of Lance's) converts 16bit DUNIX device numbers | |
9 | + * into 8-bit Linux ones. | |
10 | + */ | |
11 | +static u32 | |
12 | +do_that_magic(u32 rdev) | |
13 | +{ | |
14 | + if (((rdev & 0xffff0000) != 0) && | |
15 | + ((rdev & 0x0ff000ff) == rdev)) { | |
16 | + u32 tmp ; | |
17 | + tmp = ((rdev & 0x0ff00000) >> 12) | (rdev & 0xff) ; | |
18 | + //printk("doing that magic!! %08x -> %08x\n", rdev, tmp) ; | |
19 | + rdev = tmp ; | |
20 | + } | |
21 | + return rdev ; | |
22 | +} | |
23 | + | |
24 | /* | |
25 | * Fill in inode information from the fattr. | |
26 | */ | |
27 | @@ -575,7 +591,7 @@ | |
28 | inode->i_op = &nfs_symlink_inode_operations; | |
29 | else { | |
30 | inode->i_op = &nfs_special_inode_operations; | |
31 | - init_special_inode(inode, inode->i_mode, fattr->rdev); | |
32 | + init_special_inode(inode, inode->i_mode, do_that_magic(fattr->rdev)); | |
33 | } | |
34 | memcpy(&inode->u.nfs_i.fh, fh, sizeof(inode->u.nfs_i.fh)); | |
35 | } | |
36 | @@ -1010,7 +1026,7 @@ | |
37 | } | |
38 | inode->i_rdev = 0; | |
39 | if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) | |
40 | - inode->i_rdev = to_kdev_t(fattr->rdev); | |
41 | + inode->i_rdev = to_kdev_t(do_that_magic(fattr->rdev)); | |
42 | ||
43 | /* Update attrtimeo value */ | |
44 | if (!invalid && time_after(jiffies, NFS_ATTRTIMEO_UPDATE(inode)+NFS_ATTRTIMEO(inode))) { | |
45 | diff -u -N -r linux.orig/fs/nfs/mount_clnt.c linux.nfs/fs/nfs/mount_clnt.c | |
46 | --- linux.orig/fs/nfs/mount_clnt.c Thu Apr 13 10:54:19 2000 | |
47 | +++ linux.nfs/fs/nfs/mount_clnt.c Fri Mar 9 10:58:47 2001 | |
48 | @@ -87,7 +87,7 @@ | |
49 | ||
50 | clnt = rpc_create_client(xprt, hostname, | |
51 | &mnt_program, version, | |
52 | - RPC_AUTH_NULL); | |
53 | + RPC_AUTH_UNIX); | |
54 | if (!clnt) { | |
55 | xprt_destroy(xprt); | |
56 | } else { | |
57 | diff -u -N -r linux.orig/fs/nfs/proc.c linux.nfs/fs/nfs/proc.c | |
58 | --- linux.orig/fs/nfs/proc.c Fri Feb 9 14:29:44 2001 | |
59 | +++ linux.nfs/fs/nfs/proc.c Mon Apr 30 16:54:48 2001 | |
60 | @@ -181,6 +181,10 @@ | |
61 | return status; | |
62 | } | |
63 | ||
64 | +/* convert Linux major/minor number into Tru64 major/minor */ | |
65 | +#define linux2tru64(rdev) \ | |
66 | + (MAJOR((rdev))<<20 | MINOR((rdev))) | |
67 | + | |
68 | /* | |
69 | * In NFSv2, mknod is grafted onto the create call. | |
70 | */ | |
71 | @@ -201,7 +205,7 @@ | |
72 | sattr->ia_valid &= ~ATTR_SIZE; | |
73 | } else if (S_ISCHR(mode) || S_ISBLK(mode)) { | |
74 | sattr->ia_valid |= ATTR_SIZE; | |
75 | - sattr->ia_size = rdev; /* get out your barf bag */ | |
76 | + sattr->ia_size = linux2tru64(rdev); /* get out your barf bag */ | |
77 | } | |
78 | ||
79 | fattr->valid = 0; |