From patchwork Wed May 30 22:55:04 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Dilger X-Patchwork-Id: 162094 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id CEBFAB7083 for ; Thu, 31 May 2012 08:55:10 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751196Ab2E3WzH (ORCPT ); Wed, 30 May 2012 18:55:07 -0400 Received: from idcmail-mo2no.shaw.ca ([64.59.134.9]:34563 "EHLO idcmail-mo2no.shaw.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751085Ab2E3WzH (ORCPT ); Wed, 30 May 2012 18:55:07 -0400 Received: from lb7f8hsrpno-svcs.dcs.int.inet (HELO pd6ml2no-ssvc.prod.shaw.ca) ([10.0.144.222]) by pd7mo1no-svcs.prod.shaw.ca with ESMTP; 30 May 2012 16:55:05 -0600 X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.1 cv=oQE6vNJ3d7oTBHj4PDKYH99BAdyPlqTp0xAtaaBYR4E= c=1 sm=1 a=5AGrxK79ETgA:10 a=CYDyCxVgLFAA:10 a=BLceEmwcHowA:10 a=akHhUqyx16pf1Jmt3m6W8Q==:17 a=ySfo2T4IAAAA:8 a=lEXXs_N19x-nFGTcroQA:9 a=axWQYnUQhmgA:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 Received: from unknown (HELO sookie-gig.adilger.int) ([68.147.209.146]) by pd6ml2no-dmz.prod.shaw.ca with ESMTP; 30 May 2012 16:55:05 -0600 From: Andreas Dilger To: tytso@mit.edu, linux-ext4@vger.kernel.org Cc: Andreas Dilger Subject: [PATCH] e2fsck: allow checking on mounted root fs (v2) Date: Wed, 30 May 2012 16:55:04 -0600 Message-Id: <1338418504-3408-1-git-send-email-adilger@whamcloud.com> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1338403182-2253-1-git-send-email-adilger@whamcloud.com> References: <1338403182-2253-1-git-send-email-adilger@whamcloud.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Commit 732e26b98e5c79a4298dbe341f43b54b354bb241 added checks to prevent e2fsck from being run in filesystem-modifying mode against a mounted or otherwise busy device, due to several bug reports of users doing this even with the verbose warnings in check_mount(). However, it also prevented e2fsck from checking a mounted root filesystem, which will prevent the node from booting. Once again allow e2fsck to run against the mounted root filesystem if it is also mounted read-only at the time. Signed-off-by: Andreas Dilger --- e2fsck/unix.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/e2fsck/unix.c b/e2fsck/unix.c index 6161e46..94260bd 100644 --- a/e2fsck/unix.c +++ b/e2fsck/unix.c @@ -1221,8 +1221,12 @@ restart: &old_bitmaps); if (!old_bitmaps) flags |= EXT2_FLAG_64BITS; - if ((ctx->options & E2F_OPT_READONLY) == 0) - flags |= EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE; + if ((ctx->options & E2F_OPT_READONLY) == 0) { + flags |= EXT2_FLAG_RW; + if (!(ctx->mount_flags & EXT2_MF_ISROOT && + ctx->mount_flags & EXT2_MF_READONLY)) + flags |= EXT2_FLAG_EXCLUSIVE; + } retval = try_open_fs(ctx, flags, io_ptr, &fs);