From patchwork Mon May 9 16:41:36 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Amir G." X-Patchwork-Id: 94810 X-Patchwork-Delegate: tytso@mit.edu 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 7E926B6EDF for ; Tue, 10 May 2011 02:44:02 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753520Ab1EIQoA (ORCPT ); Mon, 9 May 2011 12:44:00 -0400 Received: from mail-ww0-f44.google.com ([74.125.82.44]:35313 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753511Ab1EIQn7 (ORCPT ); Mon, 9 May 2011 12:43:59 -0400 Received: by mail-ww0-f44.google.com with SMTP id 36so5955868wwa.1 for ; Mon, 09 May 2011 09:43:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:to:cc:subject:date:message-id :x-mailer:in-reply-to:references; bh=sm+68NqtKounAwh6IM5zI3OL9vceEnaWra+OpVlwKrA=; b=kOUfriCwz5QS2e8ONxWrK6lAUL1FsyRjsCn8fF/ZoSrsogVbkTEB2lSq63WDmQC182 KZrviFzp9M4Qj+uR/u5oZHsXti5nc+setUdC15fSp7dsoMTha8VmDzvC/FQwiGY85sc2 ZDIVkjTogCVE5qfLx4D0sVOlGM8+BkNlRyEOc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; b=jObEZIxppDrdXLRAeJOaKzCEuOISN/6Mfw5ZCtWrXNgW0YoD/rlxVhCSOCjk6AG2cu EgeJ8w2i5Z4Af+2HA36pwY2c1A6fk/o36v2N1x0lVOVxy6TBgpZCX7NdmuCP7G5cNj70 NWXmoPQspyCiddEh4mEsoLY61Z1T2pTxjiRiY= Received: by 10.227.172.7 with SMTP id j7mr923232wbz.60.1304959439270; Mon, 09 May 2011 09:43:59 -0700 (PDT) Received: from localhost.localdomain (bzq-79-179-43-50.red.bezeqint.net [79.179.43.50]) by mx.google.com with ESMTPS id o23sm2034877wbc.27.2011.05.09.09.43.56 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 09 May 2011 09:43:57 -0700 (PDT) From: amir73il@users.sourceforge.net To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, Amir Goldstein , Yongqiang Yang Subject: [PATCH RFC 18/30] ext4: snapshot control - fix new snapshot Date: Mon, 9 May 2011 19:41:36 +0300 Message-Id: <1304959308-11122-19-git-send-email-amir73il@users.sourceforge.net> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1304959308-11122-1-git-send-email-amir73il@users.sourceforge.net> References: <1304959308-11122-1-git-send-email-amir73il@users.sourceforge.net> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Amir Goldstein On snapshot take, after copying the pre-allocated blocks, some are fixed to make the snapshot image appear as a valid Ext4 file system. The has_snapshot flags is cleared from the super block as well as the last_snapshot field and all snapshot inodes are cleared (to appear as empty inodes). Signed-off-by: Amir Goldstein Signed-off-by: Yongqiang Yang --- fs/ext4/ext4.h | 2 ++ fs/ext4/inode.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 3cf6602..c04a031 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1850,6 +1850,8 @@ struct buffer_head *ext4_bread(handle_t *, struct inode *, int ext4_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create); +extern blkcnt_t ext4_inode_blocks(struct ext4_inode *raw_inode, + struct ext4_inode_info *ei); extern struct inode *ext4_iget(struct super_block *, unsigned long); extern int ext4_write_inode(struct inode *, struct writeback_control *); extern int ext4_setattr(struct dentry *, struct iattr *); diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index c3d4e7a..4bc60f1 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -5203,8 +5203,8 @@ void ext4_get_inode_flags(struct ext4_inode_info *ei) } while (cmpxchg(&ei->i_flags, old_fl, new_fl) != old_fl); } -static blkcnt_t ext4_inode_blocks(struct ext4_inode *raw_inode, - struct ext4_inode_info *ei) +blkcnt_t ext4_inode_blocks(struct ext4_inode *raw_inode, + struct ext4_inode_info *ei) { blkcnt_t i_blocks ; struct inode *inode = &(ei->vfs_inode);