From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1X6i4e-0003Nw-34 for mharc-grub-devel@gnu.org; Mon, 14 Jul 2014 11:21:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33247) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6i4V-0003Ie-Lc for grub-devel@gnu.org; Mon, 14 Jul 2014 11:21:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X6i4O-00085P-Hy for grub-devel@gnu.org; Mon, 14 Jul 2014 11:21:43 -0400 Received: from cantor2.suse.de ([195.135.220.15]:44319 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X6i4O-00084T-CB for grub-devel@gnu.org; Mon, 14 Jul 2014 11:21:36 -0400 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id EFDA7AC9E for ; Mon, 14 Jul 2014 15:21:34 +0000 (UTC) Received: by quack.suse.cz (Postfix, from userid 1000) id 70BBB80D19; Mon, 14 Jul 2014 17:21:33 +0200 (CEST) From: Jan Kara To: grub-devel@gnu.org Subject: [PATCH 1/4] xfs: Add helper for inode size Date: Mon, 14 Jul 2014 17:21:28 +0200 Message-Id: <1405351291-24767-2-git-send-email-jack@suse.cz> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1405351291-24767-1-git-send-email-jack@suse.cz> References: <1405351291-24767-1-git-send-email-jack@suse.cz> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 195.135.220.15 Cc: Jan Kara X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jul 2014 15:21:50 -0000 Signed-off-by: Jan Kara --- grub-core/fs/xfs.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c index 16ffd3f1ebd9..a2fc942707c1 100644 --- a/grub-core/fs/xfs.c +++ b/grub-core/fs/xfs.c @@ -255,6 +255,11 @@ grub_xfs_inode_offset (struct grub_xfs_data *data, data->sblock.log2_inode); } +static inline int +grub_xfs_inode_size(struct grub_xfs_data *data) +{ + return 1 << data->sblock.log2_inode; +} static grub_err_t grub_xfs_read_inode (struct grub_xfs_data *data, grub_uint64_t ino, @@ -264,8 +269,8 @@ grub_xfs_read_inode (struct grub_xfs_data *data, grub_uint64_t ino, int offset = grub_xfs_inode_offset (data, ino); /* Read the inode. */ - if (grub_disk_read (data->disk, block, offset, - 1 << data->sblock.log2_inode, inode)) + if (grub_disk_read (data->disk, block, offset, grub_xfs_inode_size(data), + inode)) return grub_errno; if (grub_strncmp ((char *) inode->magic, "IN", 2)) @@ -297,7 +302,7 @@ grub_xfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock) if (node->inode.fork_offset) recoffset = (node->inode.fork_offset - 1) / 2; else - recoffset = ((1 << node->data->sblock.log2_inode) + recoffset = (grub_xfs_inode_size(node->data) - ((char *) &node->inode.data.btree.keys - (char *) &node->inode)) / (2 * sizeof (grub_uint64_t)); @@ -458,7 +463,7 @@ static int iterate_dir_call_hook (grub_uint64_t ino, const char *filename, fdiro = grub_malloc (sizeof (struct grub_fshelp_node) - sizeof (struct grub_xfs_inode) - + (1 << ctx->diro->data->sblock.log2_inode) + 1); + + grub_xfs_inode_size(ctx->diro->data) + 1); if (!fdiro) { grub_print_error (); @@ -684,7 +689,7 @@ grub_xfs_mount (grub_disk_t disk) data = grub_realloc (data, sizeof (struct grub_xfs_data) - sizeof (struct grub_xfs_inode) - + (1 << data->sblock.log2_inode) + 1); + + grub_xfs_inode_size(data) + 1); if (! data) goto fail; @@ -802,7 +807,7 @@ grub_xfs_open (struct grub_file *file, const char *name) grub_memcpy (&data->diropen, fdiro, sizeof (struct grub_fshelp_node) - sizeof (struct grub_xfs_inode) - + (1 << data->sblock.log2_inode)); + + grub_xfs_inode_size(data)); grub_free (fdiro); } -- 1.8.1.4