diff --git a/block/genhd.c b/block/genhd.c index ed926b7..b76c56b 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -655,8 +655,11 @@ static void *disk_seqf_start(struct seq_file *seqf, loff_t *pos) struct device *dev; iter = kmalloc(sizeof(*iter), GFP_KERNEL); - if (!iter) + if (!iter) { + printk("XXX disk_seqf_start: -ENOMEM\n"); return ERR_PTR(-ENOMEM); + } + printk("XXX disk_seqf_start: iter=%p pos=%lld\n", iter, (long long)*pos); seqf->private = iter; class_dev_iter_init(iter, &block_class, NULL, &disk_type); @@ -673,6 +676,8 @@ static void *disk_seqf_next(struct seq_file *seqf, void *v, loff_t *pos) { struct device *dev; + printk("XXX disk_seqf_next: iter=%p pos=%lld\n", + seqf->private, (long long)*pos); (*pos)++; dev = class_dev_iter_next(seqf->private); if (dev) @@ -685,6 +690,7 @@ static void disk_seqf_stop(struct seq_file *seqf, void *v) { struct class_dev_iter *iter = seqf->private; + printk("XXX disk_seqf_stop: iter=%p\n", seqf->private); /* stop is called even after start failed :-( */ if (iter) { class_dev_iter_exit(iter); @@ -697,7 +703,7 @@ static void *show_partition_start(struct seq_file *seqf, loff_t *pos) static void *p; p = disk_seqf_start(seqf, pos); - if (!IS_ERR(p) && p) + if (!IS_ERR(p) && p && !*pos) seq_puts(seqf, "major minor #blocks name\n\n"); return p; }