[LinuxPPS] aoe: allocate unused request_queue for sysfs

gitweb.enneenne.com Git - linuxpps/rss log: Ed Cashin <> webmaster at enneenne.com
Tue Oct 27 18:15:05 CET 2009


aoe: allocate unused request_queue for sysfs
    
    Andy Whitcroft reported an oops in aoe triggered by use of an
    incorrectly initialised request_queue object:
    
      [ 2645.959090] kobject '<NULL>' (ffff880059ca22c0): tried to add
    		an uninitialized object, something is seriously wrong.
      [ 2645.959104] Pid: 6, comm: events/0 Not tainted 2.6.31-5-generic #24-Ubuntu
      [ 2645.959107] Call Trace:
      [ 2645.959139] [<ffffffff8126ca2f>] kobject_add+0x5f/0x70
      [ 2645.959151] [<ffffffff8125b4ab>] blk_register_queue+0x8b/0xf0
      [ 2645.959155] [<ffffffff8126043f>] add_disk+0x8f/0x160
      [ 2645.959161] [<ffffffffa01673c4>] aoeblk_gdalloc+0x164/0x1c0 [aoe]
    
    The request queue of an aoe device is not used but can be allocated in
    code that does not sleep.
    
    Bruno bisected this regression down to
    
      cd43e26f071524647e660706b784ebcbefbd2e44
    
      block: Expose stacked device queues in sysfs
    
    "This seems to generate /sys/block/$device/queue and its contents for
     everyone who is using queues, not just for those queues that have a
     non-NULL queue->request_fn."
    
    Addresses http://bugs.launchpad.net/bugs/410198
    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=13942
    
    Note that embedding a queue inside another object has always been
    an illegal construct, since the queues are reference counted and
    must persist until the last reference is dropped. So aoe was
    always buggy in this respect (Jens).
    
    Signed-off-by: Ed Cashin <ecashin at coraid.com>
    Cc: Andy Whitcroft <apw at canonical.com>
    Cc: "Rafael J. Wysocki" <rjw at sisk.pl>
    Cc: Bruno Premont <bonbons at linux-vserver.org>
    Cc: Martin K. Petersen <martin.petersen at oracle.com>
    Cc: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Jens Axboe <jens.axboe at oracle.com>
    

  * [[D][1][H][2]] drivers/block/aoe/aoe.h
  * [[D][3][H][4]] drivers/block/aoe/aoeblk.c
  * [[D][5][H][6]] drivers/block/aoe/aoedev.c

   [1]: http://gitweb.enneenne.com/?p=linuxpps;a=blobdiff;f=drivers/block/aoe/aoe.h;fp=drivers/block/aoe/aoe.h;h=db195abad69889e4d499bde162ff5e818601f3b2;hp=5e41e6dd657b9a7326ba1347346c8147c428f3c2;hb=7135a71b19be1faf48b7148d77844d03bc0717d6;hpb=e6890f6f3dc2d9024a08b1a149d9bd5208eea350 (diff)
   [2]: http://gitweb.enneenne.com/?p=linuxpps;a=history;f=drivers/block/aoe/aoe.h;h=7135a71b19be1faf48b7148d77844d03bc0717d6 (history)
   [3]: http://gitweb.enneenne.com/?p=linuxpps;a=blobdiff;f=drivers/block/aoe/aoeblk.c;fp=drivers/block/aoe/aoeblk.c;h=1e15889c4b9819f837076c1b17df34fc8ef881c2;hp=2307a271bdc99e91b5c410083383a0595c4c08d0;hb=7135a71b19be1faf48b7148d77844d03bc0717d6;hpb=e6890f6f3dc2d9024a08b1a149d9bd5208eea350 (diff)
   [4]: http://gitweb.enneenne.com/?p=linuxpps;a=history;f=drivers/block/aoe/aoeblk.c;h=7135a71b19be1faf48b7148d77844d03bc0717d6 (history)
   [5]: http://gitweb.enneenne.com/?p=linuxpps;a=blobdiff;f=drivers/block/aoe/aoedev.c;fp=drivers/block/aoe/aoedev.c;h=fa67027789aab80ca8c11deccad4e2d3ec225697;hp=eeea477d96016596ccd729a6f75d37d5e3d30a0e;hb=7135a71b19be1faf48b7148d77844d03bc0717d6;hpb=e6890f6f3dc2d9024a08b1a149d9bd5208eea350 (diff)
   [6]: http://gitweb.enneenne.com/?p=linuxpps;a=history;f=drivers/block/aoe/aoedev.c;h=7135a71b19be1faf48b7148d77844d03bc0717d6 (history)

URL: http://gitweb.enneenne.com/?p=linuxpps;a=commitdiff;h=7135a71b19be1faf48b7148d77844d03bc0717d6



More information about the LinuxPPS mailing list