From patchwork Wed Nov 11 08:30:16 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dasgupta, Romit" X-Patchwork-Id: 59293 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id nAB8VE4q031861 for ; Wed, 11 Nov 2009 08:31:14 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755794AbZKKIaw (ORCPT ); Wed, 11 Nov 2009 03:30:52 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755992AbZKKIaw (ORCPT ); Wed, 11 Nov 2009 03:30:52 -0500 Received: from arroyo.ext.ti.com ([192.94.94.40]:58426 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755738AbZKKIav (ORCPT ); Wed, 11 Nov 2009 03:30:51 -0500 Received: from dbdp31.itg.ti.com ([172.24.170.98]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id nAB8UIu4031180 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 11 Nov 2009 02:30:20 -0600 Received: from [172.24.190.181] (localhost [127.0.0.1]) by dbdp31.itg.ti.com (8.13.8/8.13.8) with ESMTP id nAB8UHpL012630; Wed, 11 Nov 2009 14:00:17 +0530 (IST) Subject: [PATCH 1/1]: Thaws refrigerated bdi flusher threads before invoking kthread_stop on them From: Romit Dasgupta Reply-To: romit@ti.com To: jens.axboe@oracle.com, rjw@sisk.pl, pavel@ucw.cz Cc: linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-pm@lists.linux-foundation.org Organization: Texas Instruments Date: Wed, 11 Nov 2009 14:00:16 +0530 Message-ID: <1257928216.15415.57.camel@boson> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 5a37e20..c757b05 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -606,8 +606,11 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi) * Finally, kill the kernel threads. We don't need to be RCU * safe anymore, since the bdi is gone from visibility. */ - list_for_each_entry(wb, &bdi->wb_list, list) + list_for_each_entry(wb, &bdi->wb_list, list) { + if (unlikely(frozen(wb->task))) + wb->task->flags &= ~PF_FROZEN; kthread_stop(wb->task); + } } void bdi_unregister(struct backing_dev_info *bdi)