X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fafs%2Fdir.c;h=6682d6d7f2940800bff6fe51e84bfe67cc5c3619;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=d19e7c5d28f2ccc8e07a4ae18e7e0fff9e46c91b;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/fs/afs/dir.c b/fs/afs/dir.c index d19e7c5d2..6682d6d7f 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c @@ -65,9 +65,9 @@ union afs_dirent { struct { uint8_t valid; uint8_t unused[1]; - uint16_t hash_next; - uint32_t vnode; - uint32_t unique; + __be16 hash_next; + __be32 vnode; + __be32 unique; uint8_t name[16]; uint8_t overflow[4]; /* if any char of the name (inc * NUL) reaches here, consume @@ -78,8 +78,8 @@ union afs_dirent { /* AFS directory page header (one at the beginning of every 2048-byte chunk) */ struct afs_dir_pagehdr { - uint16_t npages; - uint16_t magic; + __be16 npages; + __be16 magic; #define AFS_DIR_MAGIC htons(1234) uint8_t nentries; uint8_t bitmap[8]; @@ -308,7 +308,7 @@ static int afs_dir_iterate_block(unsigned *fpos, blkoff + offset * sizeof(union afs_dirent), ntohl(dire->u.vnode), filldir == afs_dir_lookup_filldir ? - dire->u.unique : DT_UNKNOWN); + ntohl(dire->u.unique) : DT_UNKNOWN); if (ret < 0) { _leave(" = 0 [full]"); return 0; @@ -416,7 +416,7 @@ static int afs_dir_lookup_filldir(void *_cookie, const char *name, int nlen, struct afs_dir_lookup_cookie *cookie = _cookie; _enter("{%s,%Zu},%s,%u,,%lu,%u", - cookie->name, cookie->nlen, name, nlen, ino, ntohl(dtype)); + cookie->name, cookie->nlen, name, nlen, ino, dtype); if (cookie->nlen != nlen || memcmp(cookie->name, name, nlen) != 0) { _leave(" = 0 [no]"); @@ -424,7 +424,7 @@ static int afs_dir_lookup_filldir(void *_cookie, const char *name, int nlen, } cookie->fid.vnode = ino; - cookie->fid.unique = ntohl(dtype); + cookie->fid.unique = dtype; cookie->found = 1; _leave(" = -1 [found]"); @@ -615,7 +615,9 @@ static int afs_d_revalidate(struct dentry *dentry, struct nameidata *nd) /* the dirent, if it exists, now points to a different vnode */ not_found: + spin_lock(&dentry->d_lock); dentry->d_flags |= DCACHE_NFSFS_RENAMED; + spin_unlock(&dentry->d_lock); out_bad: if (inode) {