• Dave Chinner's avatar
    aio: annotate aio_read_event_ring for sleep patterns · 9c9ce763
    Dave Chinner authored
    Under CONFIG_DEBUG_ATOMIC_SLEEP=y, aio_read_event_ring() will throw
    warnings like the following due to being called from wait_event
    context:
    
     WARNING: CPU: 0 PID: 16006 at kernel/sched/core.c:7300 __might_sleep+0x7f/0x90()
     do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffff810d85a3>] prepare_to_wait_event+0x63/0x110
     Modules linked in:
     CPU: 0 PID: 16006 Comm: aio-dio-fcntl-r Not tainted 3.19.0-rc6-dgc+ #705
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      ffffffff821c0372 ffff88003c117cd8 ffffffff81daf2bd 000000000000d8d8
      ffff88003c117d28 ffff88003c117d18 ffffffff8109beda ffff88003c117cf8
      ffffffff821c115e 0000000000000061 0000000000000000 00007ffffe4aa300
     Call Trace:
      [<ffffffff81daf2bd>] dump_stack+0x4c/0x65
      [<ffffffff8109beda>] warn_slowpath_common+0x8a/0xc0
      [<ffffffff8109bf56>] warn_slowpath_fmt+0x46/0x50
      [<ffffffff810d85a3>] ? prepare_to_wait_event+0x63/0x110
      [<ffffffff810d85a3>] ? prepare_to_wait_event+0x63/0x110
      [<ffffffff810bdfcf>] __might_sleep+0x7f/0x90
      [<ffffffff81db8344>] mutex_lock+0x24/0x45
      [<ffffffff81216b7c>] aio_read_events+0x4c/0x290
      [<ffffffff81216fac>] read_events+0x1ec/0x220
      [<ffffffff810d8650>] ? prepare_to_wait_event+0x110/0x110
      [<ffffffff810fdb10>] ? hrtimer_get_res+0x50/0x50
      [<ffffffff8121899d>] SyS_io_getevents+0x4d/0xb0
      [<ffffffff81dba5a9>] system_call_fastpath+0x12/0x17
     ---[ end trace bde69eaf655a4fea ]---
    
    There is not actually a bug here, so annotate the code to tell the
    debug logic that everything is just fine and not to fire a false
    positive.
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarBenjamin LaHaise <bcrl@kvack.org>
    9c9ce763
aio.c 43.1 KB