]> git.neil.brown.name Git - lafs-utils.git/blobdiff - lib/lafs_sched_blk.c
Assorted changes to scheduling
[lafs-utils.git] / lib / lafs_sched_blk.c
index 2a740f3dc3069219750cce35ed41cb3839ec5bd3..8f1f79ac9cc266faf78701df3f5f6926b4b8de65 100644 (file)
@@ -14,8 +14,11 @@ int lafs_sched_blk(struct lafs_blk *blk)
        struct lafs *fs = blk->ino->fs;
 
        blk->flags |= B_Dirty;
-       if (blk->flags & B_Sched)
+       if (blk->flags & B_Sched) {
+               if (list_empty(&blk->leafs))
+                       list_add_tail(&blk->leafs, &fs->leafs);
                return 0;
+       }
 
        if (!(blk->flags & B_Index)) {
                struct lafs_dblk *dblk = container_of(blk, struct lafs_dblk, b);
@@ -23,9 +26,13 @@ int lafs_sched_blk(struct lafs_blk *blk)
                        return -1;
        }
        blk->flags |= B_Sched;
-       if (blk->parent)
+       if (blk->parent) {
                blk->parent->sched_cnt++;
-       trace(1, "schedule %p\n", blk);
+               trace(1, "schedule %d/%d %d/%d %d\n", blk->ino->inum, (int)blk->fileaddr,
+                     blk->parent->b.ino->inum, (int)blk->parent->b.fileaddr,
+                     blk->parent->sched_cnt);
+       } else
+               trace(1, "schedule %d/%d\n", blk->ino->inum, (int)blk->fileaddr);
        list_move_tail(&blk->leafs, &fs->leafs);
        return 0;
 }