X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fafs%2FLINUX24%2Fosi_vfsops.c;h=702177c0a3dfcf28d33685da9680abd27074cd60;hp=078035f82f1f82ca1a9e912a03cd1f24aaac9655;hb=76158df491f47de56d1febe1d1d2d17d316c9a74;hpb=b7cc8bf2850c5650a9e47416af8bd488f9be9161 diff --git a/src/afs/LINUX24/osi_vfsops.c b/src/afs/LINUX24/osi_vfsops.c index 078035f..702177c 100644 --- a/src/afs/LINUX24/osi_vfsops.c +++ b/src/afs/LINUX24/osi_vfsops.c @@ -92,13 +92,11 @@ afs_read_super(struct super_block *sb, void *data, int silent) MOD_INC_USE_COUNT; afs_globalVFS = sb; + sb->s_flags |= MS_NOATIME; sb->s_blocksize = 1024; sb->s_blocksize_bits = 10; sb->s_magic = AFS_VFSMAGIC; sb->s_op = &afs_sops; /* Super block (vfs) ops */ -#if defined(HAVE_BDI_INIT) - bdi_init(&afs_backing_dev_info); -#endif #if defined(MAX_NON_LFS) #ifdef AFS_64BIT_CLIENT #if !defined(MAX_LFS_FILESIZE) @@ -132,9 +130,9 @@ afs_read_super(struct super_block *sb, void *data, int silent) static int afs_root(struct super_block *afsp) { - register afs_int32 code = 0; + afs_int32 code = 0; struct vrequest treq; - register struct vcache *tvp = 0; + struct vcache *tvp = 0; AFS_STATCNT(afs_root); if (afs_globalVp && (afs_globalVp->f.states & CStatd)) { @@ -204,7 +202,7 @@ afs_notify_change(struct dentry *dp, struct iattr *iattrp) } -#if defined(STRUCT_SUPER_HAS_ALLOC_INODE) +#if defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE) #if defined(HAVE_KMEM_CACHE_T) static kmem_cache_t *afs_inode_cachep; #else @@ -306,7 +304,7 @@ afs_clear_inode(struct inode *ip) if (vcp->hnext) osi_Panic("inode freed while still hashed"); -#if !defined(STRUCT_SUPER_HAS_ALLOC_INODE) +#if !defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE) afs_osi_Free(ip->u.generic_ip, sizeof(struct vcache)); #endif } @@ -334,9 +332,6 @@ afs_put_super(struct super_block *sbp) #endif osi_linux_verify_alloced_memory(); -#if defined(HAVE_BDI_INIT) - bdi_destroy(&afs_backing_dev_info); -#endif AFS_GUNLOCK(); sbp->s_dev = 0; @@ -390,7 +385,7 @@ afs_statfs(struct super_block *sbp, struct statfs *__statp, int size) } struct super_operations afs_sops = { -#if defined(STRUCT_SUPER_HAS_ALLOC_INODE) +#if defined(STRUCT_SUPER_OPERATIONS_HAS_ALLOC_INODE) .alloc_inode = afs_alloc_inode, .destroy_inode = afs_destroy_inode, #endif @@ -470,13 +465,17 @@ osi_linux_free_inode_pages(void) struct vcache *tvc, *nvc; extern struct vcache *afs_vhashT[VCSIZE]; + retry: for (i = 0; i < VCSIZE; i++) { for (tvc = afs_vhashT[i]; tvc; ) { int slept; nvc = tvc->hnext; - if (afs_FlushVCache(tvc, &slept)) /* slept always 0 for linux? */ + if (afs_FlushVCache(tvc, &slept)) printf("Failed to invalidate all pages on inode 0x%p\n", tvc); + if (slept) { + goto retry; + } tvc = nvc; } }