Messages in this thread | | | Date | Tue, 17 Apr 2012 10:14:24 +0800 | From | Fengguang Wu <> | Subject | Re: [Lsf] [RFC] writeback and cgroup |
| |
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
| |