On Mon, Apr 16, 2012 at 11:52:07AM -0400, Vivek Goyal wrote: > On Mon, Apr 16, 2012 at 09:07:07PM +0800, Fengguang Wu wrote: > > [..] > > Vivek, I noticed these lines in cfq code > > > > sscanf(dev_name(bdi->dev), "%u:%u", &major, &minor); > > > > Why not use bdi->dev->devt? The problem is that dev_name() will > > return "btrfs-X" for btrfs rather than "major:minor". > > Isn't bdi->dev->devt 0? I see following code. > > add_disk() > bdi_register_dev() > bdi_register() > device_create_vargs(MKDEV(0,0)) > dev->devt = devt = MKDEV(0,0); > > So for normal block devices, I think bdi->dev->devt will be zero, that's > why probably we don't use it. Yes indeed. I can confirm this with tracing. There are two main cases - some filesystems do not have a real device for the bdi. - add_disk() calls bdi_register_dev() with the devt, however this information is not passed down for some reason. device_create_vargs() will try to create a sysfs dev file if the devt is not MKDEV(0,0). Thanks, Fengguang -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html