All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <jens.axboe@oracle.com>
To: Artem Bityutskiy <dedekind1@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	tytso@mit.edu, chris.mason@oracle.com, david@fromorbit.com,
	hch@infradead.org, akpm@linux-foundation.org, jack@suse.cz,
	yanmin_zhang@linux.intel.com, richard@rsk.demon.co.uk,
	damien.wyart@free.fr
Subject: Re: [PATCH 0/11] Per-bdi writeback flusher threads v9
Date: Fri, 29 May 2009 19:08:33 +0200	[thread overview]
Message-ID: <20090529170833.GJ11363@kernel.dk> (raw)
In-Reply-To: <4A200846.5050109@gmail.com>

On Fri, May 29 2009, Artem Bityutskiy wrote:
> Jens Axboe wrote:
>> Hi,
>>
>> Here's the 9th version of the writeback patches. Changes since v8:
>>
>> - Fix a bdi_work on-stack allocation hang. I hope this fixes Ted's
>>   issue.
>> - Get rid of the explicit wait queues, we can just use wake_up_process()
>>   since it's just for that one task.
>> - Add separate "sync_supers" thread that makes sure that the dirty
>>   super blocks get written. We cannot safely do this from bdi_forker_task(),
>>   as that risks deadlocking on ->s_umount. Artem, I implemented this
>>   by doing the wake ups from a timer so that it would be easier for you
>>   to just deactivate the timer when there are no super blocks.
>>
>> For ease of patching, I've put the full diff here:
>>
>>   http://kernel.dk/writeback-v9.patch
>>
>> and also stored this in a writeback-v9 branch that will not change,
>> you can pull that into Linus tree from here:
>>
>>   git://git.kernel.dk/linux-2.6-block.git writeback-v9
>
> I'm working with the above branch. Got the following twice.
> Not sure what triggers this, probably if I do nothing and
> cpufreq starts doing its magic, this is triggered.
>
> And I'm not sure it has something to do with your changes,
> it is just that I saw this only with your tree. Please,
> ignore if this is not relevant.

OK, doesn't look related, but if it only triggers with the writeback
patches, something fishy is going on. I'll check up on it.

>
> =======================================================
> scaling: [ INFO: possible circular locking dependency detected ]
> 2.6.30-rc7-block-2.6 #1                                           
> -------------------------------------------------------           
> K99cpuspeed/9923 is trying to acquire lock:                       
> (&(&dbs_info->work)->work){+.+...}, at: [<ffffffff81051155>] 
> __cancel_work_timer+0xd9/0x21d
>
> but task is already holding lock:
> (dbs_mutex){+.+.+.}, at: [<ffffffffa0073aa8>] cpufreq_governor_dbs+0x23c/0x2cc [cpufreq_ondemand]
>
> which lock already depends on the new lock.
>
>
> the existing dependency chain (in reverse order) is:
>
> -> #2 (dbs_mutex){+.+.+.}:
>       [<ffffffff81063529>] __lock_acquire+0xa63/0xbeb
>       [<ffffffff8106379f>] lock_acquire+0xee/0x112         
> [<ffffffff812f4eb0>] __mutex_lock_common+0x5a/0x419
>       [<ffffffff812f5309>] mutex_lock_nested+0x30/0x35         
> [<ffffffffa00738f2>] cpufreq_governor_dbs+0x86/0x2cc [cpufreq_ondemand]
>       [<ffffffff8125eaa4>] __cpufreq_governor+0x84/0xc2                   
>          [<ffffffff8125ecae>] __cpufreq_set_policy+0x195/0x211            
>             [<ffffffff8125f6fb>] store_scaling_governor+0x1e7/0x223       
>                [<ffffffff8126038f>] store+0x5f/0x83                       
>                   [<ffffffff81125107>] sysfs_write_file+0xe4/0x119        
>                      [<ffffffff810d24ae>] vfs_write+0xab/0x105            
>                         [<ffffffff810d25cc>] sys_write+0x47/0x70          
>                            [<ffffffff8100bc2b>] 
> system_call_fastpath+0x16/0x1b                          
> [<ffffffffffffffff>] 0xffffffffffffffff                                
>
> -> #1 (&per_cpu(cpu_policy_rwsem, cpu)){+++++.}:
>       [<ffffffff81063529>] __lock_acquire+0xa63/0xbeb
>       [<ffffffff8106379f>] lock_acquire+0xee/0x112         
> [<ffffffff812f5561>] down_write+0x3d/0x49            [<ffffffff8125fc31>] 
> lock_policy_rwsem_write+0x48/0x78
>       [<ffffffffa007364c>] do_dbs_timer+0x5f/0x27f [cpufreq_ondemand]
>       [<ffffffff81050869>] worker_thread+0x24b/0x367                      
>  [<ffffffff810547c1>] kthread+0x56/0x83                               
> [<ffffffff8100cd3a>] child_rip+0xa/0x20                              
> [<ffffffffffffffff>] 0xffffffffffffffff                        
>
> -> #0 (&(&dbs_info->work)->work){+.+...}:
>       [<ffffffff8106341d>] __lock_acquire+0x957/0xbeb
>       [<ffffffff8106379f>] lock_acquire+0xee/0x112         
> [<ffffffff81051189>] __cancel_work_timer+0x10d/0x21d
>       [<ffffffff810512a6>] cancel_delayed_work_sync+0xd/0xf
>       [<ffffffffa0073abb>] cpufreq_governor_dbs+0x24f/0x2cc [cpufreq_ondemand]
>       [<ffffffff8125eaa4>] __cpufreq_governor+0x84/0xc2                   
>           [<ffffffff8125ec98>] __cpufreq_set_policy+0x17f/0x211           
>               [<ffffffff8125f6fb>] store_scaling_governor+0x1e7/0x223     
>                   [<ffffffff8126038f>] store+0x5f/0x83                    
>                       [<ffffffff81125107>] sysfs_write_file+0xe4/0x119    
>                           [<ffffffff810d24ae>] vfs_write+0xab/0x105       
>                               [<ffffffff810d25cc>] sys_write+0x47/0x70    
>                                   [<ffffffff8100bc2b>] 
> system_call_fastpath+0x16/0x1b                           
> [<ffffffffffffffff>] 0xffffffffffffffff                                 
>
> other info that might help us debug this:
>
> 3 locks held by K99cpuspeed/9923:
> #0:  (&buffer->mutex){+.+.+.}, at: [<ffffffff8112505b>] sysfs_write_file+0x38/0x119
> #1:  (&per_cpu(cpu_policy_rwsem, cpu)){+++++.}, at: [<ffffffff8125fc31>] lock_policy_rwsem_write+0x48/0x78
> #2:  (dbs_mutex){+.+.+.}, at: [<ffffffffa0073aa8>] cpufreq_governor_dbs+0x23c/0x2cc [cpufreq_ondemand]
>
> stack backtrace:
> Pid: 9923, comm: K99cpuspeed Not tainted 2.6.30-rc7-block-2.6 #1
> Call Trace:
> [<ffffffff81062750>] print_circular_bug_tail+0x71/0x7c
> [<ffffffff8106341d>] __lock_acquire+0x957/0xbeb
> [<ffffffff8106379f>] lock_acquire+0xee/0x112
> [<ffffffff81051155>] ? __cancel_work_timer+0xd9/0x21d
> [<ffffffff81051189>] __cancel_work_timer+0x10d/0x21d
> [<ffffffff81051155>] ? __cancel_work_timer+0xd9/0x21d
> [<ffffffff812f5218>] ? __mutex_lock_common+0x3c2/0x419
> [<ffffffffa0073aa8>] ? cpufreq_governor_dbs+0x23c/0x2cc [cpufreq_ondemand]
> [<ffffffff81061e66>] ? mark_held_locks+0x4d/0x6b
> [<ffffffffa0073aa8>] ? cpufreq_governor_dbs+0x23c/0x2cc [cpufreq_ondemand]
> [<ffffffff810512a6>] cancel_delayed_work_sync+0xd/0xf
> [<ffffffffa0073abb>] cpufreq_governor_dbs+0x24f/0x2cc [cpufreq_ondemand]
> [<ffffffff810580f1>] ? up_read+0x26/0x2b
> [<ffffffff8125eaa4>] __cpufreq_governor+0x84/0xc2
> [<ffffffff8125ec98>] __cpufreq_set_policy+0x17f/0x211
> [<ffffffff8125f6fb>] store_scaling_governor+0x1e7/0x223
> [<ffffffff812604dc>] ? handle_update+0x0/0x33
> [<ffffffff812f5569>] ? down_write+0x45/0x49
> [<ffffffff8126038f>] store+0x5f/0x83
> [<ffffffff81125107>] sysfs_write_file+0xe4/0x119
> [<ffffffff810d24ae>] vfs_write+0xab/0x105
> [<ffffffff810d25cc>] sys_write+0x47/0x70
> [<ffffffff8100bc2b>] system_call_fastpath+0x16/0x1b
>

-- 
Jens Axboe


  parent reply	other threads:[~2009-05-29 17:08 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-28 11:46 [PATCH 0/11] Per-bdi writeback flusher threads v9 Jens Axboe
2009-05-28 11:46 ` [PATCH 01/11] ntfs: remove old debug check for dirty data in ntfs_put_super() Jens Axboe
2009-05-28 11:46 ` [PATCH 02/11] btrfs: properly register fs backing device Jens Axboe
2009-05-28 11:46 ` [PATCH 03/11] writeback: move dirty inodes from super_block to backing_dev_info Jens Axboe
2009-05-28 11:46 ` [PATCH 04/11] writeback: switch to per-bdi threads for flushing data Jens Axboe
2009-05-28 14:13   ` Artem Bityutskiy
2009-05-28 22:28     ` Jens Axboe
2009-05-28 11:46 ` [PATCH 05/11] writeback: get rid of pdflush completely Jens Axboe
2009-05-28 11:46 ` [PATCH 06/11] writeback: separate the flushing state/task from the bdi Jens Axboe
2009-05-28 11:46 ` [PATCH 07/11] writeback: support > 1 flusher thread per bdi Jens Axboe
2009-05-28 11:46 ` [PATCH 08/11] writeback: allow sleepy exit of default writeback task Jens Axboe
2009-05-28 11:46 ` [PATCH 09/11] writeback: add some debug inode list counters to bdi stats Jens Axboe
2009-05-28 11:46 ` [PATCH 10/11] writeback: add name to backing_dev_info Jens Axboe
2009-05-28 11:46 ` [PATCH 11/11] writeback: check for registered bdi in flusher add and inode dirty Jens Axboe
2009-05-28 13:56 ` [PATCH 0/11] Per-bdi writeback flusher threads v9 Peter Zijlstra
2009-05-28 22:28   ` Jens Axboe
2009-05-28 14:17 ` Artem Bityutskiy
2009-05-28 14:19   ` Artem Bityutskiy
2009-05-28 20:35     ` Peter Zijlstra
2009-05-28 22:27       ` Jens Axboe
2009-05-29 15:37       ` Artem Bityutskiy
2009-05-29 15:37         ` Artem Bityutskiy
2009-05-29 15:50         ` Jens Axboe
2009-05-29 16:02           ` Artem Bityutskiy
2009-05-29 16:02             ` Artem Bityutskiy
2009-05-29 17:07             ` Jens Axboe
2009-06-03  7:39               ` Artem Bityutskiy
2009-06-03  7:44                 ` Jens Axboe
2009-06-03  7:46                   ` Artem Bityutskiy
2009-06-03  7:46                     ` Artem Bityutskiy
2009-06-03  7:50                     ` Jens Axboe
2009-06-03  7:54                       ` Artem Bityutskiy
2009-06-03  7:54                         ` Artem Bityutskiy
2009-06-03  7:59                   ` Artem Bityutskiy
2009-06-03  7:59                     ` Artem Bityutskiy
2009-06-03  8:07                     ` Jens Axboe
2009-05-28 14:41 ` Theodore Tso
2009-05-29 16:07 ` Artem Bityutskiy
2009-05-29 16:20   ` Artem Bityutskiy
2009-05-29 16:20     ` Artem Bityutskiy
2009-05-29 17:09     ` Jens Axboe
2009-06-03  8:11       ` Artem Bityutskiy
2009-06-03  8:11         ` Artem Bityutskiy
2009-05-29 17:08   ` Jens Axboe [this message]
2009-06-03 11:12 ` Artem Bityutskiy
2009-06-03 11:12   ` Artem Bityutskiy
2009-06-03 11:42   ` Jens Axboe
2009-06-04 15:20 ` Frederic Weisbecker
2009-06-04 19:07   ` Andrew Morton
2009-06-04 19:13     ` Frederic Weisbecker
2009-06-04 19:50       ` Jens Axboe
2009-06-04 20:10         ` Jens Axboe
2009-06-04 22:34           ` Frederic Weisbecker
2009-06-05 19:15             ` Jens Axboe
2009-06-05 21:14               ` Jan Kara
2009-06-06  0:18                 ` Chris Mason
2009-06-06  0:23                   ` Jan Kara
2009-06-06  0:23                     ` Jan Kara
2009-06-06  1:06                     ` Frederic Weisbecker
2009-06-08  9:23                       ` Jens Axboe
2009-06-08 12:23                         ` Jan Kara
2009-06-08 12:28                           ` Jens Axboe
2009-06-08 13:01                             ` Jan Kara
2009-06-09 18:39                             ` Frederic Weisbecker
2009-06-06  1:00                 ` Frederic Weisbecker
2009-06-06  0:35               ` Frederic Weisbecker
2009-06-04 21:37         ` Frederic Weisbecker
2009-06-05  1:14   ` Zhang, Yanmin
2009-06-05  1:14     ` Zhang, Yanmin
2009-06-05 19:16     ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090529170833.GJ11363@kernel.dk \
    --to=jens.axboe@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=chris.mason@oracle.com \
    --cc=damien.wyart@free.fr \
    --cc=david@fromorbit.com \
    --cc=dedekind1@gmail.com \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=richard@rsk.demon.co.uk \
    --cc=tytso@mit.edu \
    --cc=yanmin_zhang@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.