Messages in this thread | | | Date | Thu, 22 May 2003 15:19:54 -0700 | From | Andrew Morton <> | Subject | Re: kernel BUG at include/linux/dcache.h:271! |
| |
Maneesh Soni <maneesh@in.ibm.com> wrote: > > The problem is that we have multiple ramdisks but all have > common request queue and common elevator. In terms of sysfs we > have multiple kobjects for multiple ramdisks, but one single kobject for the > ramdisks' common elevator. > > While initializing, different kobjects are allocated for the ramdisks but, > the common elevator uses the same kobject. In other words, every init > of a ramdisk, the common elevator.kobj->parent will be different and it will > allocate a new dentry, overwrite the elevator.kobj->dentry > and loose the earlier allocated dentries. (see: elv_register_queue()) > > While exiting, it ends up in removing the same dentry (allocated at the last) > again and BUGs in dget on dentry with zero ref count. > > Not sure where it should be fixed > ramdisk > - should have separate queues on for each ramdisk > > elevator > - should not re-register already registered queue in elv_register_queue > > sysfs > - should handle kobject with multiple parent kobjects
I can't think of anywhere else where we are likely to want to support multiple devices from a single queue in this manner, so perhaps the best solution is to remove the exceptional case: allocate a separate queue for each ramdisk instance.
Jens, do you agree?
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |