]> TLD Linux GIT Repositories - packages/grub2.git/blob - grub2-xfs-Add-helper-for-inode-size.patch
- partial PLD merge
[packages/grub2.git] / grub2-xfs-Add-helper-for-inode-size.patch
1 From 34231b28cbb6b2e10d7668c5b6d2432e8563bd1d Mon Sep 17 00:00:00 2001
2 From: Jan Kara <jack@suse.cz>
3 Date: Thu, 5 Jun 2014 20:56:21 +0200
4 Subject: [PATCH 1/4] xfs: Add helper for inode size
5
6 Signed-off-by: Jan Kara <jack@suse.cz>
7 ---
8  grub-core/fs/xfs.c | 17 +++++++++++------
9  1 file changed, 11 insertions(+), 6 deletions(-)
10
11 diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
12 index 16ffd3f1ebd9..a2fc942707c1 100644
13 --- a/grub-core/fs/xfs.c
14 +++ b/grub-core/fs/xfs.c
15 @@ -255,6 +255,11 @@ grub_xfs_inode_offset (struct grub_xfs_data *data,
16           data->sblock.log2_inode);
17  }
18  
19 +static inline int
20 +grub_xfs_inode_size(struct grub_xfs_data *data)
21 +{
22 +       return 1 << data->sblock.log2_inode;
23 +}
24  
25  static grub_err_t
26  grub_xfs_read_inode (struct grub_xfs_data *data, grub_uint64_t ino,
27 @@ -264,8 +269,8 @@ grub_xfs_read_inode (struct grub_xfs_data *data, grub_uint64_t ino,
28    int offset = grub_xfs_inode_offset (data, ino);
29  
30    /* Read the inode.  */
31 -  if (grub_disk_read (data->disk, block, offset,
32 -                     1 << data->sblock.log2_inode, inode))
33 +  if (grub_disk_read (data->disk, block, offset, grub_xfs_inode_size(data),
34 +                     inode))
35      return grub_errno;
36  
37    if (grub_strncmp ((char *) inode->magic, "IN", 2))
38 @@ -297,7 +302,7 @@ grub_xfs_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
39        if (node->inode.fork_offset)
40         recoffset = (node->inode.fork_offset - 1) / 2;
41        else
42 -       recoffset = ((1 << node->data->sblock.log2_inode)
43 +       recoffset = (grub_xfs_inode_size(node->data)
44                      - ((char *) &node->inode.data.btree.keys
45                         - (char *) &node->inode))
46           / (2 * sizeof (grub_uint64_t));
47 @@ -458,7 +463,7 @@ static int iterate_dir_call_hook (grub_uint64_t ino, const char *filename,
48  
49    fdiro = grub_malloc (sizeof (struct grub_fshelp_node)
50                        - sizeof (struct grub_xfs_inode)
51 -                      + (1 << ctx->diro->data->sblock.log2_inode) + 1);
52 +                      + grub_xfs_inode_size(ctx->diro->data) + 1);
53    if (!fdiro)
54      {
55        grub_print_error ();
56 @@ -684,7 +689,7 @@ grub_xfs_mount (grub_disk_t disk)
57    data = grub_realloc (data,
58                        sizeof (struct grub_xfs_data)
59                        - sizeof (struct grub_xfs_inode)
60 -                      + (1 << data->sblock.log2_inode) + 1);
61 +                      + grub_xfs_inode_size(data) + 1);
62  
63    if (! data)
64      goto fail;
65 @@ -802,7 +807,7 @@ grub_xfs_open (struct grub_file *file, const char *name)
66        grub_memcpy (&data->diropen, fdiro,
67                    sizeof (struct grub_fshelp_node)
68                    - sizeof (struct grub_xfs_inode)
69 -                  + (1 << data->sblock.log2_inode));
70 +                  + grub_xfs_inode_size(data));
71        grub_free (fdiro);
72      }
73  
74 -- 
75 1.8.1.4
76