Re: [PATCH v2] block/laptop_mode: Convert timers to use timer_setup()

From: Jens Axboe
Date: Fri Oct 06 2017 - 10:28:53 EST


On 10/06/2017 02:20 AM, Christoph Hellwig wrote:
>> -static void blk_rq_timed_out_timer(unsigned long data)
>> +static void blk_rq_timed_out_timer(struct timer_list *t)
>> {
>> - struct request_queue *q = (struct request_queue *)data;
>> + struct request_queue *q = from_timer(q, t, timeout);
>>
>> kblockd_schedule_work(&q->timeout_work);
>> }
>
> This isn't the laptop_mode timer, although the change itself looks fine.
>
>> + timer_setup(&q->backing_dev_info->laptop_mode_wb_timer,
>> + laptop_mode_timer_fn, 0);
>
> And I already pointed out to Jens when he did the previous changes
> to this one that it has no business being in the block code, it
> really should move to mm/page-writeback.c with the rest of the
> handling of this timer. Once that is fixed up your automated script
> should pick it up, so we wouldn't need the manual change.

Looks reasonable to me, one comment:

> @@ -916,6 +950,8 @@ EXPORT_SYMBOL(bdi_register_owner);
> */
> static void bdi_remove_from_list(struct backing_dev_info *bdi)
> {
> + del_timer_sync(&bdi->laptop_mode_wb_timer);
> +
> spin_lock_bh(&bdi_lock);
> list_del_rcu(&bdi->bdi_list);
> spin_unlock_bh(&bdi_lock);

This should go into bdi_unregister() instead.

The rest is mostly mechanical and looks fine to me.

--
Jens Axboe