struct osd_thread_info *oifb_info;
struct osd_device *oifb_dev;
struct dentry *oifb_dentry;
+ int oifb_items;
};
static inline struct dentry *
int rc;
ENTRY;
+ fill_buf->oifb_items++;
+
/* skip any '.' started names */
if (name[0] == '.')
RETURN(0);
int rc;
ENTRY;
+ fill_buf->oifb_items++;
+
/* skip any '.' started names */
if (name[0] == '.')
RETURN(0);
int rc = 0;
ENTRY;
+ fill_buf->oifb_items++;
+
/* skip any '.' started names */
if (name[0] == '.')
RETURN(0);
int rc = 0;
ENTRY;
+ fill_buf->oifb_items++;
+
/* skip any non-DFID format name */
if (name[0] != '[')
RETURN(0);
int rc = 0;
ENTRY;
+ fill_buf->oifb_items++;
+
/* skip any '.' started names */
if (name[0] == '.')
RETURN(0);
filp->private_data = NULL;
set_file_inode(filp, inode);
+ do {
+ buf.oifb_items = 0;
#ifdef HAVE_DIR_CONTEXT
- buf.ctx.pos = filp->f_pos;
- rc = fops->iterate(filp, &buf.ctx);
- filp->f_pos = buf.ctx.pos;
+ buf.ctx.pos = filp->f_pos;
+ rc = fops->iterate(filp, &buf.ctx);
+ filp->f_pos = buf.ctx.pos;
#else
- rc = fops->readdir(filp, &buf, filldir);
+ rc = fops->readdir(filp, &buf, filldir);
#endif
+ } while (rc >= 0 && buf.oifb_items > 0 &&
+ filp->f_pos != LDISKFS_HTREE_EOF_64BIT);
fops->release(inode, filp);
RETURN(rc);