On Thu, Dec 12, 2013 at 10:43:46AM -0800, Christoph Hellwig wrote: > > static void > > add_dotdot_update( > > @@ -64,12 +65,14 @@ add_dotdot_update( > > do_error(_("malloc failed add_dotdot_update (%zu bytes)\n"), > > sizeof(dotdot_update_t)); > > > > + pthread_mutex_lock(&dotdot_lock); > > dir->next = dotdot_update_list; > > dir->irec = irec; > > dir->agno = agno; > > dir->ino_offset = ino_offset; > > > > dotdot_update_list = dir; > > + pthread_mutex_unlock(&dotdot_lock); > > Would be nice to make this use a list_head if you touch it anyway. > (As a separate patch) > > > static void > > traverse_ags( > > - xfs_mount_t *mp) > > + xfs_mount_t *mp) > > Not quite sure what actually changed here, but if you touch it anyway > you might as well use the struct version.. Whitespace after xfs_mount_t, judging by the highlighting I see in the editor right now. > > + if (!ag_stride) { > > + work_queue_t queue; > > + > > + queue.mp = mp; > > + pf_args[0] = start_inode_prefetch(0, 1, NULL); > > + for (i = 0; i < glob_agcount; i++) { > > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, > > + pf_args[i & 1]); > > + traverse_function(&queue, i, pf_args[i & 1]); > > + } > > + return; > > } > > + > > + /* > > + * create one worker thread for each segment of the volume > > + */ > > + queues = malloc(thread_count * sizeof(work_queue_t)); > > + for (i = 0, agno = 0; i < thread_count; i++) { > > + create_work_queue(&queues[i], mp, 1); > > + pf_args[0] = NULL; > > + for (j = 0; j < ag_stride && agno < glob_agcount; j++, agno++) { > > + pf_args[0] = start_inode_prefetch(agno, 1, pf_args[0]); > > + queue_work(&queues[i], traverse_function, agno, > > + pf_args[0]); > > + } > > + } > > + > > + /* > > + * wait for workers to complete > > + */ > > + for (i = 0; i < thread_count; i++) > > + destroy_work_queue(&queues[i]); > > + free(queues); > > > This is the third copy of this code block, might make sense to > consolidate it. Agreed, just haven't got to it. > Btw, does anyone remember why we have the libxfs_bcache_overflowed() > special case in phase4, but not anywhere else? I recall something about memory consumption, but I doubt that code can even trigger given that if we get to overflow conditions we immediately double the cache size and so libxfs_bcache_overflowed() will never see an overflow condition.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs