? directory_version.patch
Index: src/kernel/linux-2.6/dir.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/dir.c,v
retrieving revision 1.46
diff -r1.46 dir.c
34d33
<     readdir->directory_version = rd->directory_version;
136d134
<         pvfs2_inode->directory_version = 0;
140,142c138,139
<     gossip_debug(GOSSIP_DIR_DEBUG, "pvfs2_readdir called on %s (pos=%d, "
<                 "v=%llu)\n", dentry->d_name.name, (int)pos,
<                 llu(pvfs2_inode->directory_version));
---
>     gossip_debug(GOSSIP_DIR_DEBUG, "pvfs2_readdir called on %s (pos=%d)\n",
>                  dentry->d_name.name, (int)pos);
152c149,152
<         if (pvfs2_inode->directory_version == 0)
---
>         ino = get_ino_from_handle(dentry->d_inode);
>         gossip_debug(GOSSIP_DIR_DEBUG, 
>                      "calling filldir of . with pos = %d\n", pos);
>         if (filldir(dirent, ".", 1, pos, ino, DT_DIR) < 0)
154,160c154
<             ino = get_ino_from_handle(dentry->d_inode);
<             gossip_debug(GOSSIP_DIR_DEBUG, 
<                          "calling filldir of . with pos = %d\n", pos);
<             if (filldir(dirent, ".", 1, pos, ino, DT_DIR) < 0)
<             {
<                 break;
<             }
---
>             break;
167c161,164
<         if (pvfs2_inode->directory_version == 0)
---
>         ino = get_parent_ino_from_dentry(dentry);
>         gossip_debug(GOSSIP_DIR_DEBUG, 
>                      "calling filldir of .. with pos = %d\n", pos);
>         if (filldir(dirent, "..", 2, pos, ino, DT_DIR) < 0)
169,175c166
<             ino = get_parent_ino_from_dentry(dentry);
<             gossip_debug(GOSSIP_DIR_DEBUG, 
<                          "calling filldir of .. with pos = %d\n", pos);
<             if (filldir(dirent, "..", 2, pos, ino, DT_DIR) < 0)
<             {
<                 break;
<             }
---
>             break;
265,276d255
<             if (rhandle.readdir_response.pvfs_dirent_outcount == 0)
<             {
<                 goto graceful_termination_path;
<             }
< 
<             if (pvfs2_inode->directory_version !=
<                 rhandle.readdir_response.directory_version)
<             {
<                 pvfs2_inode->directory_version =
<                     rhandle.readdir_response.directory_version;
<             }
< 
290,291d268
< graceful_termination_path:
<                     pvfs2_inode->directory_version = 0;
517d493
<         pvfs2_inode->directory_version = 0;
520,522c496,497
<     gossip_debug(GOSSIP_DIR_DEBUG, "pvfs2_readdirplus called on %s (pos=%d, "
<                 "v=%llu)\n", dentry->d_name.name, (int)pos,
<                 llu(pvfs2_inode->directory_version));
---
>     gossip_debug(GOSSIP_DIR_DEBUG, "pvfs2_readdirplus called on %s (pos=%d)\n",
>                  dentry->d_name.name, (int)pos);
534c509,513
<             if (pvfs2_inode->directory_version == 0)
---
>             ino = get_ino_from_handle(dentry->d_inode);
>             ref.fs_id = get_fsid_from_ino(dentry->d_inode);
>             ref.handle = get_handle_from_ino(dentry->d_inode);
>             inode = pvfs2_iget(dentry->d_inode->i_sb, &ref);
>             if (inode)
536,540c515
<                 ino = get_ino_from_handle(dentry->d_inode);
<                 ref.fs_id = get_fsid_from_ino(dentry->d_inode);
<                 ref.handle = get_handle_from_ino(dentry->d_inode);
<                 inode = pvfs2_iget(dentry->d_inode->i_sb, &ref);
<                 if (inode)
---
>                 if (info->lite == 0)
542,552c517,527
<                     if (info->lite == 0)
<                     {
<                         generic_fillattr(inode, &info->u.plus.ks);
<                     }
<                     else
<                     {
<                         generic_fillattr_lite(inode, &info->u.plus_lite.ks);
<                     }
<                     iput(inode);
<                     gossip_debug(GOSSIP_DIR_DEBUG, "calling filldirplus of . with pos = %d\n", pos);
<                     if (info->lite == 0)
---
>                     generic_fillattr(inode, &info->u.plus.ks);
>                 }
>                 else
>                 {
>                     generic_fillattr_lite(inode, &info->u.plus_lite.ks);
>                 }
>                 iput(inode);
>                 gossip_debug(GOSSIP_DIR_DEBUG, "calling filldirplus of . with pos = %d\n", pos);
>                 if (info->lite == 0)
>                 {
>                     if (filldirplus(direntplus, ".", 1, pos, ino, DT_DIR, &info->u.plus.ks) < 0)
554,557c529
<                         if (filldirplus(direntplus, ".", 1, pos, ino, DT_DIR, &info->u.plus.ks) < 0)
<                         {
<                             break;
<                         }
---
>                         break;
559c531,534
<                     else 
---
>                 }
>                 else 
>                 {
>                     if (filldirplus_lite(direntplus, ".", 1, pos, ino, DT_DIR, &info->u.plus_lite.ks) < 0)
561,564c536
<                         if (filldirplus_lite(direntplus, ".", 1, pos, ino, DT_DIR, &info->u.plus_lite.ks) < 0)
<                         {
<                             break;
<                         }
---
>                         break;
576c548,552
<             if (pvfs2_inode->directory_version == 0)
---
>             ino = get_parent_ino_from_dentry(dentry);
>             ref.fs_id = get_fsid_from_ino(dentry->d_parent->d_inode);
>             ref.handle = get_handle_from_ino(dentry->d_parent->d_inode);
>             inode = pvfs2_iget(dentry->d_inode->i_sb, &ref);
>             if (inode) 
578,582c554
<                 ino = get_parent_ino_from_dentry(dentry);
<                 ref.fs_id = get_fsid_from_ino(dentry->d_parent->d_inode);
<                 ref.handle = get_handle_from_ino(dentry->d_parent->d_inode);
<                 inode = pvfs2_iget(dentry->d_inode->i_sb, &ref);
<                 if (inode) 
---
>                 if (info->lite == 0)
584,594c556,566
<                     if (info->lite == 0)
<                     {
<                         generic_fillattr(inode, &info->u.plus.ks);
<                     }
<                     else
<                     {
<                         generic_fillattr_lite(inode, &info->u.plus_lite.ks);
<                     }
<                     iput(inode);
<                     gossip_debug(GOSSIP_DIR_DEBUG, "calling filldirplus of .. with pos = %d\n", pos);
<                     if (info->lite == 0)
---
>                     generic_fillattr(inode, &info->u.plus.ks);
>                 }
>                 else
>                 {
>                     generic_fillattr_lite(inode, &info->u.plus_lite.ks);
>                 }
>                 iput(inode);
>                 gossip_debug(GOSSIP_DIR_DEBUG, "calling filldirplus of .. with pos = %d\n", pos);
>                 if (info->lite == 0)
>                 {
>                     if (filldirplus(direntplus, "..", 2, pos, ino, DT_DIR, &info->u.plus.ks) < 0)
596,599c568
<                         if (filldirplus(direntplus, "..", 2, pos, ino, DT_DIR, &info->u.plus.ks) < 0)
<                         {
<                             break;
<                         }
---
>                         break;
601c570,573
<                     else
---
>                 }
>                 else
>                 {
>                     if (filldirplus_lite(direntplus, "..", 2, pos, ino, DT_DIR, &info->u.plus_lite.ks) < 0)
603,606c575
<                         if (filldirplus_lite(direntplus, "..", 2, pos, ino, DT_DIR, &info->u.plus_lite.ks) < 0)
<                         {
<                             break;
<                         }
---
>                         break;
702,714d670
<                 if (pvfs2_inode->directory_version == 0)
<                 {
<                     pvfs2_inode->directory_version =
<                         rhandle.readdirplus_response.directory_version;
<                 }
< 
<                 if (pvfs2_inode->directory_version !=
<                     rhandle.readdirplus_response.directory_version)
<                 {
<                     pvfs2_inode->directory_version =
<                         rhandle.readdirplus_response.directory_version;
<                 }
< 
827,829d782
< graceful_termination_path:
<                         pvfs2_inode->directory_version = 0;
< 
Index: src/kernel/linux-2.6/pvfs2-kernel.h
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/pvfs2-kernel.h,v
retrieving revision 1.137
diff -r1.137 pvfs2-kernel.h
363d362
<     uint64_t directory_version;
Index: src/kernel/linux-2.6/pvfs2-utils.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/pvfs2-utils.c,v
retrieving revision 1.146
diff -r1.146 pvfs2-utils.c
1960d1959
<         pvfs2_inode->directory_version = 0;
1975d1973
<     pvfs2_inode->directory_version = 0;
