[Samba] Re: missing directory entries on irix

Jeremy Allison jra at samba.org
Thu Apr 21 07:45:04 GMT 2005


On Thu, Apr 21, 2005 at 05:23:19PM +1000, James Peach wrote:
> On 4/20/05, Cale Fairchild <cale at brocku.ca> wrote:
> > Thanks for the patch, unfortunately when I installed it I had a lot more
> > files missing from the directory listing and I have not taken much time to
> > look at why. But it certainly is the cast that off_t on the IRIX box is 8 bytes
> > in the current OS, however the compilers seem to convert the long values
> > properly so long as overflow does not occur.
> > 
> > Thanks to your suggestion on looking at the 'xfs_growfs -n' output I think that
> > I have finally tracked down the problem with the missing file. In IRIX systems
> > that have version 1 naming the last entry in that directory listing has a
> > dirent->d_off value of -1 if you treat it as a long. On systems with version 2
> > naming the value is not set to -1. In samba 3.0.11 there was no apparent test
> > of the dirent->d_off field, but in 3.0.12 it performs a telldir after reading
> > the last name and returns NULL if the offset it -1.
> 
> Nice work! I'm away from the lab this week, but I'll have a patch for
> you early next week. Thanks for digging into this.

If I'm not wrong just deleting these lines should do it...

Can you report back to me if this works please ?

Thanks,

	Jeremy.
-------------- next part --------------
Index: smbd/dir.c
===================================================================
--- smbd/dir.c	(revision 6413)
+++ smbd/dir.c	(working copy)
@@ -1038,9 +1038,6 @@
 	while ((n = vfs_readdirname(conn, dirp->dir))) {
 		struct name_cache_entry *e;
 		dirp->offset = SMB_VFS_TELLDIR(conn, dirp->dir);
-		if (dirp->offset == -1) {
-			return NULL;
-		}
 		dirp->name_cache_index = (dirp->name_cache_index+1) % NAME_CACHE_SIZE;
 
 		e = &dirp->name_cache[dirp->name_cache_index];


More information about the samba mailing list