fs: Remove trailing whitespaces
Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
f1f912f9c1
commit
5b077d05b3
@ -345,7 +345,7 @@ grub_affs_create_node (grub_fshelp_node_t dir,
|
||||
if (len > sizeof (fil->name))
|
||||
len = sizeof (fil->name);
|
||||
*grub_latin1_to_utf8 (name_u8, fil->name, len) = '\0';
|
||||
|
||||
|
||||
(*node)->di = *fil;
|
||||
for (nest = 0; nest < 8; nest++)
|
||||
{
|
||||
@ -417,7 +417,7 @@ grub_affs_iterate_dir (grub_fshelp_node_t dir,
|
||||
node = orig_node = grub_zalloc (sizeof (*node));
|
||||
if (!node)
|
||||
return 1;
|
||||
|
||||
|
||||
*node = *dir;
|
||||
if (hook (".", GRUB_FSHELP_DIR, node, hook_data))
|
||||
return 1;
|
||||
|
||||
@ -75,7 +75,7 @@ handle_symlink (struct grub_archelp_data *data,
|
||||
|| !arcops->get_link_target)
|
||||
return GRUB_ERR_NONE;
|
||||
flen = grub_strlen (fn);
|
||||
if (grub_memcmp (*name, fn, flen) != 0
|
||||
if (grub_memcmp (*name, fn, flen) != 0
|
||||
|| ((*name)[flen] != 0 && (*name)[flen] != '/'))
|
||||
return GRUB_ERR_NONE;
|
||||
rest = *name + flen;
|
||||
@ -251,7 +251,7 @@ grub_archelp_open (struct grub_archelp_data *data,
|
||||
grub_uint32_t mode;
|
||||
grub_int32_t mtime;
|
||||
int restart;
|
||||
|
||||
|
||||
if (arcops->find_file (data, &fn, &mtime, &mode))
|
||||
goto fail;
|
||||
|
||||
|
||||
@ -530,13 +530,13 @@ iterate_in_b_tree (grub_disk_t disk,
|
||||
err = read_b_node (disk, sb, ino,
|
||||
node_off,
|
||||
&node,
|
||||
&key_data,
|
||||
&key_data,
|
||||
&keylen_idx,
|
||||
&key_values);
|
||||
|
||||
if (err)
|
||||
return 0;
|
||||
|
||||
|
||||
for (i = 0; i < grub_bfs_to_cpu_treehead (node->count_keys); i++)
|
||||
{
|
||||
char c;
|
||||
@ -682,7 +682,7 @@ find_in_b_tree (grub_disk_t disk,
|
||||
level--;
|
||||
grub_free (node);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (level != 0
|
||||
&& i + 1 < grub_bfs_to_cpu_treehead (node->count_keys))
|
||||
@ -827,7 +827,7 @@ mount (grub_disk_t disk, struct grub_bfs_superblock *sb)
|
||||
grub_err_t err;
|
||||
err = grub_disk_read (disk, SUPERBLOCK, 0, sizeof (*sb), sb);
|
||||
if (err == GRUB_ERR_OUT_OF_RANGE)
|
||||
return grub_error (GRUB_ERR_BAD_FS,
|
||||
return grub_error (GRUB_ERR_BAD_FS,
|
||||
#ifdef MODE_AFS
|
||||
"not an AFS filesystem"
|
||||
#else
|
||||
@ -843,7 +843,7 @@ mount (grub_disk_t disk, struct grub_bfs_superblock *sb)
|
||||
|| (grub_bfs_to_cpu32 (sb->bsize)
|
||||
!= (1U << grub_bfs_to_cpu32 (sb->log2_bsize)))
|
||||
|| grub_bfs_to_cpu32 (sb->log2_bsize) < GRUB_DISK_SECTOR_BITS)
|
||||
return grub_error (GRUB_ERR_BAD_FS,
|
||||
return grub_error (GRUB_ERR_BAD_FS,
|
||||
#ifdef MODE_AFS
|
||||
"not an AFS filesystem"
|
||||
#else
|
||||
|
||||
@ -117,7 +117,7 @@ grub_cpio_get_link_target (struct grub_archelp_data *data)
|
||||
if (!ret)
|
||||
return NULL;
|
||||
|
||||
err = grub_disk_read (data->disk, 0, data->dofs, data->size,
|
||||
err = grub_disk_read (data->disk, 0, data->dofs, data->size,
|
||||
ret);
|
||||
if (err)
|
||||
{
|
||||
|
||||
@ -246,7 +246,7 @@ grub_fat_mount (grub_disk_t disk)
|
||||
#ifdef MODE_EXFAT
|
||||
if (grub_memcmp ((const char *) bpb.oem_name, "EXFAT ",
|
||||
sizeof (bpb.oem_name)) != 0)
|
||||
goto fail;
|
||||
goto fail;
|
||||
#endif
|
||||
|
||||
/* Get the sizes of logical sectors and clusters. */
|
||||
@ -321,7 +321,7 @@ grub_fat_mount (grub_disk_t disk)
|
||||
#endif
|
||||
|
||||
#ifdef MODE_EXFAT
|
||||
data->cluster_sector = (grub_le_to_cpu32 (bpb.cluster_offset)
|
||||
data->cluster_sector = (grub_le_to_cpu32 (bpb.cluster_offset)
|
||||
<< data->logical_sector_bits);
|
||||
data->num_clusters = (grub_le_to_cpu32 (bpb.cluster_count)
|
||||
<< data->logical_sector_bits);
|
||||
@ -694,7 +694,7 @@ grub_fat_iterate_dir_next (grub_fshelp_node_t node,
|
||||
{
|
||||
int j;
|
||||
for (j = 0; j < 15; j++)
|
||||
ctxt->unibuf[slots * 15 + j]
|
||||
ctxt->unibuf[slots * 15 + j]
|
||||
= grub_le_to_cpu16 (sec.type_specific.file_name.str[j]);
|
||||
slots++;
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ find_file (char *currpath,
|
||||
break;
|
||||
|
||||
push_node (ctx, foundnode, foundtype);
|
||||
|
||||
|
||||
/* Read in the symlink and follow it. */
|
||||
if (ctx->currnode->type == GRUB_FSHELP_SYMLINK)
|
||||
{
|
||||
@ -326,7 +326,7 @@ grub_fshelp_find_file (const char *path, grub_fshelp_node_t rootnode,
|
||||
enum grub_fshelp_filetype expecttype)
|
||||
{
|
||||
return grub_fshelp_find_file_real (path, rootnode, foundnode,
|
||||
iterate_dir, NULL,
|
||||
iterate_dir, NULL,
|
||||
read_symlink, expecttype);
|
||||
|
||||
}
|
||||
@ -339,7 +339,7 @@ grub_fshelp_find_file_lookup (const char *path, grub_fshelp_node_t rootnode,
|
||||
enum grub_fshelp_filetype expecttype)
|
||||
{
|
||||
return grub_fshelp_find_file_real (path, rootnode, foundnode,
|
||||
NULL, lookup_file,
|
||||
NULL, lookup_file,
|
||||
read_symlink, expecttype);
|
||||
|
||||
}
|
||||
|
||||
@ -883,7 +883,7 @@ grub_hfs_iterate_dir_it_dir (struct grub_hfs_node *hnd __attribute ((unused)),
|
||||
{
|
||||
struct grub_hfs_catalog_key *ckey = rec->key;
|
||||
struct grub_hfs_iterate_dir_node_found_ctx *ctx = hook_arg;
|
||||
|
||||
|
||||
/* Stop when the entries do not match anymore. */
|
||||
if (ckey->parent_dir != ctx->dir_be)
|
||||
return 1;
|
||||
@ -1077,7 +1077,7 @@ macroman_to_utf8 (char *to, const grub_uint8_t *from, grub_size_t len,
|
||||
{
|
||||
*optr++ = ':';
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!(*iptr & 0x80))
|
||||
{
|
||||
*optr++ = *iptr;
|
||||
@ -1094,7 +1094,7 @@ utf8_to_macroman (grub_uint8_t *to, const char *from)
|
||||
grub_uint8_t *end = to + 31;
|
||||
grub_uint8_t *optr = to;
|
||||
const char *iptr = from;
|
||||
|
||||
|
||||
while (*iptr && optr < end)
|
||||
{
|
||||
int i, clen;
|
||||
@ -1104,7 +1104,7 @@ utf8_to_macroman (grub_uint8_t *to, const char *from)
|
||||
*optr++ = '/';
|
||||
iptr++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!(*iptr & 0x80))
|
||||
{
|
||||
*optr++ = *iptr++;
|
||||
@ -1165,7 +1165,7 @@ lookup_file (grub_fshelp_node_t dir,
|
||||
*foundnode = grub_malloc (sizeof (struct grub_fshelp_node));
|
||||
if (!*foundnode)
|
||||
return grub_errno;
|
||||
|
||||
|
||||
(*foundnode)->inode = grub_be_to_cpu32 (fdrec.dir.dirid);
|
||||
(*foundnode)->fdrec = fdrec;
|
||||
(*foundnode)->data = dir->data;
|
||||
@ -1266,7 +1266,7 @@ grub_hfs_dir (grub_device_t device, const char *path, grub_fs_dir_hook_t hook,
|
||||
.hook_data = hook_data
|
||||
};
|
||||
grub_fshelp_node_t found = NULL;
|
||||
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
data = grub_hfs_mount (device->disk);
|
||||
@ -1295,7 +1295,7 @@ grub_hfs_open (struct grub_file *file, const char *name)
|
||||
{
|
||||
struct grub_hfs_data *data;
|
||||
grub_fshelp_node_t found = NULL;
|
||||
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
data = grub_hfs_mount (file->device->disk);
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
/* HFS+ is documented at http://developer.apple.com/technotes/tn/tn1150.html */
|
||||
|
||||
#define grub_fshelp_node grub_hfsplus_file
|
||||
#define grub_fshelp_node grub_hfsplus_file
|
||||
#include <grub/err.h>
|
||||
#include <grub/file.h>
|
||||
#include <grub/mm.h>
|
||||
@ -146,7 +146,7 @@ grub_hfsplus_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
{
|
||||
struct grub_hfsplus_btnode *nnode = 0;
|
||||
grub_disk_addr_t blksleft = fileblock;
|
||||
struct grub_hfsplus_extent *extents = node->compressed
|
||||
struct grub_hfsplus_extent *extents = node->compressed
|
||||
? &node->resource_extents[0] : &node->extents[0];
|
||||
|
||||
while (1)
|
||||
@ -477,7 +477,7 @@ grub_hfsplus_cmp_extkey (struct grub_hfsplus_key *keya,
|
||||
|
||||
if (extkey_a->type < extkey_b->type)
|
||||
return -1;
|
||||
|
||||
|
||||
akey = grub_be_to_cpu32 (extkey_a->start);
|
||||
if (akey > extkey_b->start)
|
||||
return 1;
|
||||
@ -568,7 +568,7 @@ grub_hfsplus_btree_search (struct grub_hfsplus_btree *btree,
|
||||
struct grub_hfsplus_key_internal *key,
|
||||
int (*compare_keys) (struct grub_hfsplus_key *keya,
|
||||
struct grub_hfsplus_key_internal *keyb),
|
||||
struct grub_hfsplus_btnode **matchnode,
|
||||
struct grub_hfsplus_btnode **matchnode,
|
||||
grub_off_t *keyoffset)
|
||||
{
|
||||
grub_uint64_t currnode;
|
||||
|
||||
@ -179,7 +179,7 @@ hfsplus_read_compressed_real (struct grub_hfsplus_file *node,
|
||||
return len0;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
hfsplus_open_compressed_real (struct grub_hfsplus_file *node)
|
||||
{
|
||||
grub_err_t err;
|
||||
@ -306,8 +306,8 @@ hfsplus_open_compressed_real (struct grub_hfsplus_file *node)
|
||||
|
||||
GRUB_MOD_INIT(hfspluscomp)
|
||||
{
|
||||
grub_hfsplus_open_compressed = hfsplus_open_compressed_real;
|
||||
grub_hfsplus_read_compressed = hfsplus_read_compressed_real;
|
||||
grub_hfsplus_open_compressed = hfsplus_open_compressed_real;
|
||||
grub_hfsplus_read_compressed = hfsplus_read_compressed_real;
|
||||
}
|
||||
|
||||
GRUB_MOD_FINI(hfspluscomp)
|
||||
|
||||
@ -181,7 +181,7 @@ static grub_err_t
|
||||
iso9660_to_unixtime (const struct grub_iso9660_date *i, grub_int64_t *nix)
|
||||
{
|
||||
struct grub_datetime datetime;
|
||||
|
||||
|
||||
if (! i->year[0] && ! i->year[1]
|
||||
&& ! i->year[2] && ! i->year[3]
|
||||
&& ! i->month[0] && ! i->month[1]
|
||||
@ -198,7 +198,7 @@ iso9660_to_unixtime (const struct grub_iso9660_date *i, grub_int64_t *nix)
|
||||
datetime.hour = (i->hour[0] - '0') * 10 + (i->hour[1] - '0');
|
||||
datetime.minute = (i->minute[0] - '0') * 10 + (i->minute[1] - '0');
|
||||
datetime.second = (i->second[0] - '0') * 10 + (i->second[1] - '0');
|
||||
|
||||
|
||||
if (!grub_datetime2unixtime (&datetime, nix))
|
||||
return grub_error (GRUB_ERR_BAD_NUMBER, "incorrect date");
|
||||
*nix -= i->offset * 60 * 15;
|
||||
@ -216,7 +216,7 @@ iso9660_to_unixtime2 (const struct grub_iso9660_date2 *i, grub_int64_t *nix)
|
||||
datetime.hour = i->hour;
|
||||
datetime.minute = i->minute;
|
||||
datetime.second = i->second;
|
||||
|
||||
|
||||
if (!grub_datetime2unixtime (&datetime, nix))
|
||||
return 0;
|
||||
*nix -= i->offset * 60 * 15;
|
||||
@ -499,7 +499,7 @@ grub_iso9660_mount (grub_disk_t disk)
|
||||
static char *
|
||||
grub_iso9660_read_symlink (grub_fshelp_node_t node)
|
||||
{
|
||||
return node->have_symlink
|
||||
return node->have_symlink
|
||||
? grub_strdup (node->symlink
|
||||
+ (node->have_dirents) * sizeof (node->dirents[0])
|
||||
- sizeof (node->dirents)) : grub_strdup ("");
|
||||
@ -549,7 +549,7 @@ add_part (struct iterate_dir_ctx *ctx,
|
||||
ctx->symlink = new;
|
||||
|
||||
grub_memcpy (ctx->symlink + size, part, len2);
|
||||
ctx->symlink[size + len2] = 0;
|
||||
ctx->symlink[size + len2] = 0;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
@ -1106,7 +1106,7 @@ grub_iso9660_uuid (grub_device_t device, char **uuid)
|
||||
}
|
||||
|
||||
/* Get writing time of filesystem. */
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
grub_iso9660_mtime (grub_device_t device, grub_int64_t *timebuf)
|
||||
{
|
||||
struct grub_iso9660_data *data;
|
||||
|
||||
@ -98,10 +98,10 @@ struct grub_minix_sblock
|
||||
grub_uint32_t max_file_size;
|
||||
grub_uint32_t zones;
|
||||
grub_uint16_t magic;
|
||||
|
||||
|
||||
grub_uint16_t pad2;
|
||||
grub_uint16_t block_size;
|
||||
grub_uint8_t disk_version;
|
||||
grub_uint8_t disk_version;
|
||||
};
|
||||
#else
|
||||
struct grub_minix_sblock
|
||||
@ -351,7 +351,7 @@ grub_minix_read_inode (struct grub_minix_data *data, grub_minix_ino_t ino)
|
||||
int offs = (ino % (GRUB_DISK_SECTOR_SIZE
|
||||
/ sizeof (struct grub_minix_inode))
|
||||
* sizeof (struct grub_minix_inode));
|
||||
|
||||
|
||||
grub_disk_read (data->disk, block, offs,
|
||||
sizeof (struct grub_minix_inode), &data->inode);
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* nilfs2.c - New Implementation of Log filesystem
|
||||
/*
|
||||
* nilfs2.c - New Implementation of Log filesystem
|
||||
*
|
||||
* Written by Jiro SEKIBA <jir@unicus.jp>
|
||||
*
|
||||
@ -680,12 +680,12 @@ grub_nilfs2_read_checkpoint (struct grub_nilfs2_data *data,
|
||||
grub_disk_t disk = data->disk;
|
||||
unsigned int nilfs2_block_count = (1 << LOG2_NILFS2_BLOCK_SIZE (data));
|
||||
|
||||
/* Assume sizeof(struct grub_nilfs2_cpfile_header) <
|
||||
/* Assume sizeof(struct grub_nilfs2_cpfile_header) <
|
||||
sizeof(struct grub_nilfs2_checkpoint).
|
||||
*/
|
||||
blockno = grub_divmod64 (cpno, NILFS2_BLOCK_SIZE (data) /
|
||||
sizeof (struct grub_nilfs2_checkpoint), &offset);
|
||||
|
||||
|
||||
pptr = grub_nilfs2_bmap_lookup (data, &data->sroot.sr_cpfile, blockno, 1);
|
||||
if (pptr == (grub_uint64_t) - 1)
|
||||
{
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define grub_fshelp_node grub_ntfs_file
|
||||
#define grub_fshelp_node grub_ntfs_file
|
||||
|
||||
#include <grub/file.h>
|
||||
#include <grub/mm.h>
|
||||
@ -32,7 +32,7 @@ GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
static grub_dl_t my_mod;
|
||||
|
||||
#define grub_fshelp_node grub_ntfs_file
|
||||
#define grub_fshelp_node grub_ntfs_file
|
||||
|
||||
static inline grub_uint16_t
|
||||
u16at (void *ptr, grub_size_t ofs)
|
||||
@ -725,7 +725,7 @@ grub_ntfs_read_symlink (grub_fshelp_node_t node)
|
||||
&& grub_isalpha (buf[4]))
|
||||
{
|
||||
grub_memmove (buf, buf + 6, end - buf + 1 - 6);
|
||||
end -= 6;
|
||||
end -= 6;
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
@ -992,7 +992,7 @@ grub_ntfs_dir_iter (const char *filename, enum grub_fshelp_filetype filetype,
|
||||
grub_memset (&info, 0, sizeof (info));
|
||||
info.dir = ((filetype & GRUB_FSHELP_TYPE_MASK) == GRUB_FSHELP_DIR);
|
||||
info.mtimeset = 1;
|
||||
info.mtime = grub_divmod64 (node->mtime, 10000000, 0)
|
||||
info.mtime = grub_divmod64 (node->mtime, 10000000, 0)
|
||||
- 86400ULL * 365 * (1970 - 1601)
|
||||
- 86400ULL * ((1970 - 1601) / 4) + 86400ULL * ((1970 - 1601) / 100);
|
||||
grub_free (node);
|
||||
|
||||
@ -785,7 +785,7 @@ grub_reiserfs_iterate_dir (grub_fshelp_node_t item,
|
||||
char *entry_name;
|
||||
char *entry_name_end = 0;
|
||||
char c;
|
||||
|
||||
|
||||
if (!(entry_state & GRUB_REISERFS_VISIBLE_MASK))
|
||||
continue;
|
||||
|
||||
|
||||
@ -112,7 +112,7 @@ grub_romfs_mount (grub_device_t dev)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_FS, "not romfs");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
err = do_checksum (&sb, sizeof (sb) < grub_be_to_cpu32 (sb.sb.total_size) ?
|
||||
sizeof (sb) : grub_be_to_cpu32 (sb.sb.total_size));
|
||||
if (err)
|
||||
@ -271,7 +271,7 @@ grub_romfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
while (1)
|
||||
{
|
||||
char buf[16];
|
||||
err = grub_disk_read (dir->data->disk,
|
||||
err = grub_disk_read (dir->data->disk,
|
||||
laddr >> GRUB_DISK_SECTOR_BITS,
|
||||
laddr & (GRUB_DISK_SECTOR_SIZE - 1),
|
||||
16, buf);
|
||||
@ -298,7 +298,7 @@ grub_romfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
node->data_addr = grub_be_to_cpu32 (node->file.spec);
|
||||
filetype = GRUB_FSHELP_DIR;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -402,7 +402,7 @@ grub_romfs_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
data->data->disk->read_hook_data = file->read_hook_data;
|
||||
grub_disk_read (data->data->disk,
|
||||
(data->data_addr + file->offset) >> GRUB_DISK_SECTOR_BITS,
|
||||
(data->data_addr + file->offset) & (GRUB_DISK_SECTOR_SIZE - 1),
|
||||
(data->data_addr + file->offset) & (GRUB_DISK_SECTOR_SIZE - 1),
|
||||
len, buf);
|
||||
data->data->disk->read_hook = NULL;
|
||||
|
||||
|
||||
@ -210,7 +210,7 @@ struct grub_fshelp_node
|
||||
struct grub_squash_data *data;
|
||||
struct grub_squash_inode ino;
|
||||
grub_size_t stsize;
|
||||
struct
|
||||
struct
|
||||
{
|
||||
grub_disk_addr_t ino_chunk;
|
||||
grub_uint16_t ino_offset;
|
||||
@ -243,7 +243,7 @@ read_chunk (struct grub_squash_data *data, void *buf, grub_size_t len,
|
||||
csize = SQUASH_CHUNK_SIZE - offset;
|
||||
if (csize > len)
|
||||
csize = len;
|
||||
|
||||
|
||||
if (grub_le_to_cpu16 (d) & SQUASH_CHUNK_UNCOMPRESSED)
|
||||
{
|
||||
grub_disk_addr_t a = chunk_start + 2 + offset;
|
||||
@ -256,7 +256,7 @@ read_chunk (struct grub_squash_data *data, void *buf, grub_size_t len,
|
||||
else
|
||||
{
|
||||
char *tmp;
|
||||
grub_size_t bsize = grub_le_to_cpu16 (d) & ~SQUASH_CHUNK_FLAGS;
|
||||
grub_size_t bsize = grub_le_to_cpu16 (d) & ~SQUASH_CHUNK_FLAGS;
|
||||
grub_disk_addr_t a = chunk_start + 2;
|
||||
tmp = grub_malloc (bsize);
|
||||
if (!tmp)
|
||||
@ -339,7 +339,7 @@ xz_decompress (char *inbuf, grub_size_t insize, grub_off_t off,
|
||||
while (len)
|
||||
{
|
||||
enum xz_ret xzret;
|
||||
|
||||
|
||||
buf.out_pos = 0;
|
||||
|
||||
xzret = xz_dec_run (data->xzdec, &buf);
|
||||
@ -399,9 +399,9 @@ squash_mount (grub_disk_t disk)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
err = grub_disk_read (disk,
|
||||
err = grub_disk_read (disk,
|
||||
grub_le_to_cpu64 (sb.unk1offset)
|
||||
>> GRUB_DISK_SECTOR_BITS,
|
||||
>> GRUB_DISK_SECTOR_BITS,
|
||||
grub_le_to_cpu64 (sb.unk1offset)
|
||||
& (GRUB_DISK_SECTOR_SIZE - 1), sizeof (frag), &frag);
|
||||
if (grub_errno == GRUB_ERR_OUT_OF_RANGE)
|
||||
@ -448,7 +448,7 @@ squash_mount (grub_disk_t disk)
|
||||
}
|
||||
|
||||
data->blksz = grub_le_to_cpu32 (data->sb.block_size);
|
||||
for (data->log2_blksz = 0;
|
||||
for (data->log2_blksz = 0;
|
||||
(1U << data->log2_blksz) < data->blksz;
|
||||
data->log2_blksz++);
|
||||
|
||||
@ -643,7 +643,7 @@ make_root_node (struct grub_squash_data *data, struct grub_fshelp_node *root)
|
||||
root->stack[0].ino_chunk = grub_le_to_cpu32 (data->sb.root_ino_chunk);
|
||||
root->stack[0].ino_offset = grub_cpu_to_le16 (data->sb.root_ino_offset);
|
||||
return read_chunk (data, &root->ino, sizeof (root->ino),
|
||||
grub_le_to_cpu64 (data->sb.inodeoffset)
|
||||
grub_le_to_cpu64 (data->sb.inodeoffset)
|
||||
+ root->stack[0].ino_chunk,
|
||||
root->stack[0].ino_offset);
|
||||
}
|
||||
@ -765,7 +765,7 @@ grub_squash_open (struct grub_file *file, const char *name)
|
||||
}
|
||||
|
||||
static grub_ssize_t
|
||||
direct_read (struct grub_squash_data *data,
|
||||
direct_read (struct grub_squash_data *data,
|
||||
struct grub_squash_cache_inode *ino,
|
||||
grub_off_t off, char *buf, grub_size_t len)
|
||||
{
|
||||
@ -882,7 +882,7 @@ direct_read (struct grub_squash_data *data,
|
||||
grub_free (block);
|
||||
}
|
||||
else
|
||||
err = grub_disk_read (data->disk,
|
||||
err = grub_disk_read (data->disk,
|
||||
(ino->cumulated_block_sizes[i] + a + boff)
|
||||
>> GRUB_DISK_SECTOR_BITS,
|
||||
(ino->cumulated_block_sizes[i] + a + boff)
|
||||
@ -946,7 +946,7 @@ grub_squash_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
}
|
||||
else
|
||||
off -= direct_len;
|
||||
|
||||
|
||||
err = read_chunk (data, &frag, sizeof (frag),
|
||||
data->fragments, sizeof (frag) * fragment);
|
||||
if (err)
|
||||
@ -957,7 +957,7 @@ grub_squash_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
b = grub_le_to_cpu32 (ino->ino.long_file.offset) + off;
|
||||
else
|
||||
b = grub_le_to_cpu32 (ino->ino.file.offset) + off;
|
||||
|
||||
|
||||
/* FIXME: cache uncompressed chunks. */
|
||||
if (compressed)
|
||||
{
|
||||
@ -1013,7 +1013,7 @@ grub_squash_mtime (grub_device_t dev, grub_int64_t *tm)
|
||||
*tm = grub_le_to_cpu32 (data->sb.creation_time);
|
||||
squash_unmount (data);
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
static struct grub_fs grub_squash_fs =
|
||||
{
|
||||
|
||||
@ -567,7 +567,7 @@ grub_udf_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
||||
(buf + sizeof (struct grub_udf_aed));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (filebytes < adlen)
|
||||
{
|
||||
grub_uint32_t ad_block_num = ad->block.block_num;
|
||||
|
||||
@ -568,7 +568,7 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char *path)
|
||||
{
|
||||
dirino = data->ino;
|
||||
grub_ufs_read_inode (data, grub_ufs_to_cpu32 (dirent.ino), 0);
|
||||
|
||||
|
||||
if ((INODE_MODE(data) & GRUB_UFS_ATTR_TYPE)
|
||||
== GRUB_UFS_ATTR_LNK)
|
||||
{
|
||||
@ -613,7 +613,7 @@ grub_ufs_mount (grub_disk_t disk)
|
||||
&& ((data->sblock.bsize & (data->sblock.bsize - 1)) == 0)
|
||||
&& data->sblock.ino_per_group != 0)
|
||||
{
|
||||
for (data->log2_blksz = 0;
|
||||
for (data->log2_blksz = 0;
|
||||
(1U << data->log2_blksz) < grub_ufs_to_cpu32 (data->sblock.bsize);
|
||||
data->log2_blksz++);
|
||||
|
||||
|
||||
@ -894,7 +894,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
|
||||
tag, which is not used by GRUB. So it can be overwritten. */
|
||||
filename[direntry->len] = '\0';
|
||||
|
||||
if (iterate_dir_call_hook (grub_be_to_cpu64(direntry->inode),
|
||||
if (iterate_dir_call_hook (grub_be_to_cpu64(direntry->inode),
|
||||
filename, &ctx))
|
||||
{
|
||||
grub_free (dirblock);
|
||||
|
||||
@ -176,7 +176,7 @@ typedef struct decomp_entry
|
||||
/*
|
||||
* Signature for checksum functions.
|
||||
*/
|
||||
typedef void zio_checksum_t(const void *data, grub_uint64_t size,
|
||||
typedef void zio_checksum_t(const void *data, grub_uint64_t size,
|
||||
grub_zfs_endian_t endian, zio_cksum_t *zcp);
|
||||
|
||||
/*
|
||||
@ -297,7 +297,7 @@ check_feature(const char *name, grub_uint64_t val, struct grub_zfs_dir_ctx *ctx)
|
||||
static grub_err_t
|
||||
check_mos_features(dnode_phys_t *mosmdn_phys,grub_zfs_endian_t endian,struct grub_zfs_data* data );
|
||||
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
zlib_decompress (void *s, void *d,
|
||||
grub_size_t slen, grub_size_t dlen)
|
||||
{
|
||||
@ -310,7 +310,7 @@ zlib_decompress (void *s, void *d,
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
zle_decompress (void *s, void *d,
|
||||
grub_size_t slen, grub_size_t dlen)
|
||||
{
|
||||
@ -415,7 +415,7 @@ static zio_checksum_info_t zio_checksum_table[ZIO_CHECKSUM_FUNCTIONS] = {
|
||||
*/
|
||||
static grub_err_t
|
||||
zio_checksum_verify (zio_cksum_t zc, grub_uint32_t checksum,
|
||||
grub_zfs_endian_t endian,
|
||||
grub_zfs_endian_t endian,
|
||||
char *buf, grub_size_t size)
|
||||
{
|
||||
zio_eck_t *zec = (zio_eck_t *) (buf + size) - 1;
|
||||
@ -425,14 +425,14 @@ zio_checksum_verify (zio_cksum_t zc, grub_uint32_t checksum,
|
||||
if (checksum >= ZIO_CHECKSUM_FUNCTIONS || ci->ci_func == NULL)
|
||||
{
|
||||
grub_dprintf ("zfs", "unknown checksum function %d\n", checksum);
|
||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
"unknown checksum function %d", checksum);
|
||||
}
|
||||
|
||||
if (ci->ci_eck)
|
||||
{
|
||||
expected_cksum = zec->zec_cksum;
|
||||
zec->zec_cksum = zc;
|
||||
expected_cksum = zec->zec_cksum;
|
||||
zec->zec_cksum = zc;
|
||||
ci->ci_func (buf, size, endian, &actual_cksum);
|
||||
zec->zec_cksum = expected_cksum;
|
||||
zc = expected_cksum;
|
||||
@ -445,14 +445,14 @@ zio_checksum_verify (zio_cksum_t zc, grub_uint32_t checksum,
|
||||
{
|
||||
grub_dprintf ("zfs", "checksum %s verification failed\n", ci->ci_name);
|
||||
grub_dprintf ("zfs", "actual checksum %016llx %016llx %016llx %016llx\n",
|
||||
(unsigned long long) actual_cksum.zc_word[0],
|
||||
(unsigned long long) actual_cksum.zc_word[0],
|
||||
(unsigned long long) actual_cksum.zc_word[1],
|
||||
(unsigned long long) actual_cksum.zc_word[2],
|
||||
(unsigned long long) actual_cksum.zc_word[2],
|
||||
(unsigned long long) actual_cksum.zc_word[3]);
|
||||
grub_dprintf ("zfs", "expected checksum %016llx %016llx %016llx %016llx\n",
|
||||
(unsigned long long) zc.zc_word[0],
|
||||
(unsigned long long) zc.zc_word[0],
|
||||
(unsigned long long) zc.zc_word[1],
|
||||
(unsigned long long) zc.zc_word[2],
|
||||
(unsigned long long) zc.zc_word[2],
|
||||
(unsigned long long) zc.zc_word[3]);
|
||||
return grub_error (GRUB_ERR_BAD_FS, N_("checksum verification failed"));
|
||||
}
|
||||
@ -485,17 +485,17 @@ vdev_uberblock_compare (uberblock_t * ub1, uberblock_t * ub2)
|
||||
else
|
||||
ub2_endian = GRUB_ZFS_BIG_ENDIAN;
|
||||
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_txg, ub1_endian)
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_txg, ub1_endian)
|
||||
< grub_zfs_to_cpu64 (ub2->ub_txg, ub2_endian))
|
||||
return -1;
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_txg, ub1_endian)
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_txg, ub1_endian)
|
||||
> grub_zfs_to_cpu64 (ub2->ub_txg, ub2_endian))
|
||||
return 1;
|
||||
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_timestamp, ub1_endian)
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_timestamp, ub1_endian)
|
||||
< grub_zfs_to_cpu64 (ub2->ub_timestamp, ub2_endian))
|
||||
return -1;
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_timestamp, ub1_endian)
|
||||
if (grub_zfs_to_cpu64 (ub1->ub_timestamp, ub1_endian)
|
||||
> grub_zfs_to_cpu64 (ub2->ub_timestamp, ub2_endian))
|
||||
return 1;
|
||||
|
||||
@ -573,7 +573,7 @@ find_bestub (uberblock_phys_t * ub_array,
|
||||
grub_errno = GRUB_ERR_NONE;
|
||||
continue;
|
||||
}
|
||||
if (ubbest == NULL
|
||||
if (ubbest == NULL
|
||||
|| vdev_uberblock_compare (&(ubptr->ubp_uberblock),
|
||||
&(ubbest->ubp_uberblock)) > 0)
|
||||
ubbest = ubptr;
|
||||
@ -594,10 +594,10 @@ get_psize (blkptr_t * bp, grub_zfs_endian_t endian)
|
||||
static grub_uint64_t
|
||||
dva_get_offset (const dva_t *dva, grub_zfs_endian_t endian)
|
||||
{
|
||||
grub_dprintf ("zfs", "dva=%llx, %llx\n",
|
||||
(unsigned long long) dva->dva_word[0],
|
||||
grub_dprintf ("zfs", "dva=%llx, %llx\n",
|
||||
(unsigned long long) dva->dva_word[0],
|
||||
(unsigned long long) dva->dva_word[1]);
|
||||
return grub_zfs_to_cpu64 ((dva)->dva_word[1],
|
||||
return grub_zfs_to_cpu64 ((dva)->dva_word[1],
|
||||
endian) << SPA_MINBLOCKSHIFT;
|
||||
}
|
||||
|
||||
@ -720,7 +720,7 @@ fill_vdev_info_real (struct grub_zfs_data *data,
|
||||
if (!fill->children)
|
||||
{
|
||||
fill->n_children = nelm;
|
||||
|
||||
|
||||
fill->children = grub_zalloc (fill->n_children
|
||||
* sizeof (fill->children[0]));
|
||||
}
|
||||
@ -839,7 +839,7 @@ nvlist_next_nvpair (const char *nvl, const char *nvpair)
|
||||
{
|
||||
/* skip over header, nvl_version and nvl_nvflag */
|
||||
nvpair = nvl + 4 * 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* skip to the next nvpair */
|
||||
@ -873,10 +873,10 @@ nvlist_next_nvpair (const char *nvl, const char *nvpair)
|
||||
name_len = grub_be_to_cpu32 (grub_get_unaligned32 (nvp));
|
||||
nvp += 4;
|
||||
|
||||
nvp = nvp + ((name_len + 3) & ~3); // align
|
||||
if (nvp + 4 >= nvl + VDEV_PHYS_SIZE
|
||||
nvp = nvp + ((name_len + 3) & ~3); // align
|
||||
if (nvp + 4 >= nvl + VDEV_PHYS_SIZE
|
||||
|| encode_size < 0
|
||||
|| nvp + 4 + encode_size > nvl + VDEV_PHYS_SIZE)
|
||||
|| nvp + 4 + encode_size > nvl + VDEV_PHYS_SIZE)
|
||||
{
|
||||
grub_dprintf ("zfs", "nvlist overflow\n");
|
||||
grub_error (GRUB_ERR_BAD_FS, "incorrect nvlist");
|
||||
@ -896,7 +896,7 @@ nvpair_name (const char *nvp, char **buf, grub_size_t *buflen)
|
||||
{
|
||||
/* skip over encode/decode size */
|
||||
nvp += 4 * 2;
|
||||
|
||||
|
||||
*buf = (char *) (nvp + 4);
|
||||
*buflen = grub_be_to_cpu32 (grub_get_unaligned32 (nvp));
|
||||
|
||||
@ -943,7 +943,7 @@ nvpair_value (const char *nvp,char **val,
|
||||
|
||||
/* skip over name */
|
||||
nvp = nvp + ((name_len + 3) & ~3); /* align */
|
||||
|
||||
|
||||
/* skip over type */
|
||||
nvp += 4;
|
||||
nelm = grub_be_to_cpu32 (grub_get_unaligned32 (nvp));
|
||||
@ -957,7 +957,7 @@ nvpair_value (const char *nvp,char **val,
|
||||
*size_out = encode_size;
|
||||
if (nelm_out)
|
||||
*nelm_out = nelm;
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1183,7 +1183,7 @@ scan_disk (grub_device_t dev, struct grub_zfs_data *data,
|
||||
desc.vdev_phys_sector
|
||||
= label * (sizeof (vdev_label_t) >> SPA_MINBLOCKSHIFT)
|
||||
+ ((VDEV_SKIP_SIZE + VDEV_BOOT_HEADER_SIZE) >> SPA_MINBLOCKSHIFT)
|
||||
+ (label < VDEV_LABELS / 2 ? 0 :
|
||||
+ (label < VDEV_LABELS / 2 ? 0 :
|
||||
ALIGN_DOWN (grub_disk_native_sectors (dev->disk), sizeof (vdev_label_t))
|
||||
- VDEV_LABELS * (sizeof (vdev_label_t) >> SPA_MINBLOCKSHIFT));
|
||||
|
||||
@ -1229,7 +1229,7 @@ scan_disk (grub_device_t dev, struct grub_zfs_data *data,
|
||||
grub_free (bh);
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
|
||||
grub_free (ub_array);
|
||||
grub_free (bh);
|
||||
|
||||
@ -1269,7 +1269,7 @@ scan_devices_iter (const char *name, void *hook_data)
|
||||
|
||||
if (!inserted)
|
||||
grub_device_close (dev);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1386,7 +1386,7 @@ recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
|
||||
for (i = 0; i < nbufs; i++)
|
||||
{
|
||||
grub_uint8_t mul;
|
||||
for (j = i; j < nbufs; j++)
|
||||
for (j = i; j < nbufs; j++)
|
||||
if (matrix1[i][j])
|
||||
break;
|
||||
if (j == nbufs)
|
||||
@ -1453,7 +1453,7 @@ recovery (grub_uint8_t *bufs[4], grub_size_t s, const int nbufs,
|
||||
}
|
||||
default:
|
||||
return grub_error (GRUB_ERR_BUG, "too big matrix");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
@ -1510,7 +1510,7 @@ read_device (grub_uint64_t offset, struct grub_zfs_device_desc *desc,
|
||||
int idx, orig_idx;
|
||||
|
||||
if (desc->nparity < 1 || desc->nparity > 3)
|
||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
"raidz%d is not supported", desc->nparity);
|
||||
|
||||
if (desc->n_children <= desc->nparity || desc->n_children < 1)
|
||||
@ -1659,7 +1659,7 @@ read_device (grub_uint64_t offset, struct grub_zfs_device_desc *desc,
|
||||
len -= csize;
|
||||
idx--;
|
||||
}
|
||||
for (i = 0; i < failed_devices
|
||||
for (i = 0; i < failed_devices
|
||||
&& recovery_len[i] == recovery_len[0];
|
||||
i++);
|
||||
/* Since the chunks have variable length handle the last block
|
||||
@ -1782,7 +1782,7 @@ zio_read_gang (blkptr_t * bp, grub_zfs_endian_t endian, dva_t * dva, void *buf,
|
||||
* Read in a block of raw data to buf.
|
||||
*/
|
||||
static grub_err_t
|
||||
zio_read_data (blkptr_t * bp, grub_zfs_endian_t endian, void *buf,
|
||||
zio_read_data (blkptr_t * bp, grub_zfs_endian_t endian, void *buf,
|
||||
struct grub_zfs_data *data)
|
||||
{
|
||||
int i, psize;
|
||||
@ -1850,7 +1850,7 @@ decode_embedded_bp_compressed(const blkptr_t *bp, void *buf)
|
||||
* and put the uncompressed data in buf.
|
||||
*/
|
||||
static grub_err_t
|
||||
zio_read (blkptr_t *bp, grub_zfs_endian_t endian, void **buf,
|
||||
zio_read (blkptr_t *bp, grub_zfs_endian_t endian, void **buf,
|
||||
grub_size_t *size, struct grub_zfs_data *data)
|
||||
{
|
||||
grub_size_t lsize, psize;
|
||||
@ -1937,7 +1937,7 @@ zio_read (blkptr_t *bp, grub_zfs_endian_t endian, void **buf,
|
||||
if (encrypted)
|
||||
{
|
||||
if (!grub_zfs_decrypt)
|
||||
err = grub_error (GRUB_ERR_BAD_FS,
|
||||
err = grub_error (GRUB_ERR_BAD_FS,
|
||||
N_("module `%s' isn't loaded"),
|
||||
"zfscrypt");
|
||||
else
|
||||
@ -1961,7 +1961,7 @@ zio_read (blkptr_t *bp, grub_zfs_endian_t endian, void **buf,
|
||||
endian));
|
||||
return grub_error (GRUB_ERR_BAD_FS, "no key found in keychain");
|
||||
}
|
||||
grub_dprintf ("zfs", "using key %u (%" PRIxGRUB_UINT64_T
|
||||
grub_dprintf ("zfs", "using key %u (%" PRIxGRUB_UINT64_T
|
||||
", %p) for txg %" PRIxGRUB_UINT64_T "\n",
|
||||
besti, data->subvol.keyring[besti].txg,
|
||||
data->subvol.keyring[besti].cipher,
|
||||
@ -2009,7 +2009,7 @@ zio_read (blkptr_t *bp, grub_zfs_endian_t endian, void **buf,
|
||||
*
|
||||
*/
|
||||
static grub_err_t
|
||||
dmu_read (dnode_end_t * dn, grub_uint64_t blkid, void **buf,
|
||||
dmu_read (dnode_end_t * dn, grub_uint64_t blkid, void **buf,
|
||||
grub_zfs_endian_t *endian_out, struct grub_zfs_data *data)
|
||||
{
|
||||
int level;
|
||||
@ -2039,8 +2039,8 @@ dmu_read (dnode_end_t * dn, grub_uint64_t blkid, void **buf,
|
||||
|
||||
if (BP_IS_HOLE (bp))
|
||||
{
|
||||
grub_size_t size = grub_zfs_to_cpu16 (dn->dn.dn_datablkszsec,
|
||||
dn->endian)
|
||||
grub_size_t size = grub_zfs_to_cpu16 (dn->dn.dn_datablkszsec,
|
||||
dn->endian)
|
||||
<< SPA_MINBLOCKSHIFT;
|
||||
*buf = grub_malloc (size);
|
||||
if (!*buf)
|
||||
@ -2104,7 +2104,7 @@ mzap_lookup (mzap_phys_t * zapobj, grub_zfs_endian_t endian,
|
||||
}
|
||||
|
||||
static int
|
||||
mzap_iterate (mzap_phys_t * zapobj, grub_zfs_endian_t endian, int objsize,
|
||||
mzap_iterate (mzap_phys_t * zapobj, grub_zfs_endian_t endian, int objsize,
|
||||
int (*hook) (const char *name, grub_uint64_t val,
|
||||
struct grub_zfs_dir_ctx *ctx),
|
||||
struct grub_zfs_dir_ctx *ctx)
|
||||
@ -2118,7 +2118,7 @@ mzap_iterate (mzap_phys_t * zapobj, grub_zfs_endian_t endian, int objsize,
|
||||
grub_dprintf ("zfs", "zap: name = %s, value = %llx, cd = %x\n",
|
||||
mzap_ent[i].mze_name, (long long)mzap_ent[i].mze_value,
|
||||
(int)mzap_ent[i].mze_cd);
|
||||
if (hook (mzap_ent[i].mze_name,
|
||||
if (hook (mzap_ent[i].mze_name,
|
||||
grub_zfs_to_cpu64 (mzap_ent[i].mze_value, endian), ctx))
|
||||
return 1;
|
||||
}
|
||||
@ -2179,12 +2179,12 @@ name_cmp (const char *s1, const char *s2, grub_size_t n,
|
||||
|
||||
if (!case_insensitive)
|
||||
return grub_memcmp (t1, t2, n);
|
||||
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (grub_toupper (*t1) != grub_toupper (*t2))
|
||||
return (int) grub_toupper (*t1) - (int) grub_toupper (*t2);
|
||||
|
||||
|
||||
t1++;
|
||||
t2++;
|
||||
}
|
||||
@ -2222,7 +2222,7 @@ zap_leaf_array_equal (zap_leaf_phys_t * l, grub_zfs_endian_t endian,
|
||||
|
||||
/* XXX */
|
||||
static grub_err_t
|
||||
zap_leaf_array_get (zap_leaf_phys_t * l, grub_zfs_endian_t endian, int blksft,
|
||||
zap_leaf_array_get (zap_leaf_phys_t * l, grub_zfs_endian_t endian, int blksft,
|
||||
int chunk, grub_size_t array_len, char *buf)
|
||||
{
|
||||
grub_size_t bseen = 0;
|
||||
@ -2287,7 +2287,7 @@ zap_leaf_lookup (zap_leaf_phys_t * l, grub_zfs_endian_t endian,
|
||||
|
||||
grub_dprintf ("zfs", "fzap: length %d\n", (int) le->le_name_length);
|
||||
|
||||
if (zap_leaf_array_equal (l, endian, blksft,
|
||||
if (zap_leaf_array_equal (l, endian, blksft,
|
||||
grub_zfs_to_cpu16 (le->le_name_chunk,endian),
|
||||
grub_zfs_to_cpu16 (le->le_name_length, endian),
|
||||
name, case_insensitive))
|
||||
@ -2336,7 +2336,7 @@ fzap_lookup (dnode_end_t * zap_dnode, zap_phys_t * zap,
|
||||
{
|
||||
void *l;
|
||||
grub_uint64_t hash, idx, blkid;
|
||||
int blksft = zfs_log2 (grub_zfs_to_cpu16 (zap_dnode->dn.dn_datablkszsec,
|
||||
int blksft = zfs_log2 (grub_zfs_to_cpu16 (zap_dnode->dn.dn_datablkszsec,
|
||||
zap_dnode->endian) << DNODE_SHIFT);
|
||||
grub_err_t err;
|
||||
grub_zfs_endian_t leafendian;
|
||||
@ -2349,7 +2349,7 @@ fzap_lookup (dnode_end_t * zap_dnode, zap_phys_t * zap,
|
||||
|
||||
/* get block id from index */
|
||||
if (zap->zap_ptrtbl.zt_numblks != 0)
|
||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
"external pointer tables not supported");
|
||||
idx = ZAP_HASH_IDX (hash, zap->zap_ptrtbl.zt_shift);
|
||||
blkid = grub_zfs_to_cpu64 (((grub_uint64_t *) zap)[idx + (1 << (blksft - 3 - 1))], zap_dnode->endian);
|
||||
@ -2381,7 +2381,7 @@ fzap_iterate (dnode_end_t * zap_dnode, zap_phys_t * zap,
|
||||
void *l_in;
|
||||
grub_uint64_t idx, idx2, blkid;
|
||||
grub_uint16_t chunk;
|
||||
int blksft = zfs_log2 (grub_zfs_to_cpu16 (zap_dnode->dn.dn_datablkszsec,
|
||||
int blksft = zfs_log2 (grub_zfs_to_cpu16 (zap_dnode->dn.dn_datablkszsec,
|
||||
zap_dnode->endian) << DNODE_SHIFT);
|
||||
grub_err_t err;
|
||||
grub_zfs_endian_t endian;
|
||||
@ -2392,7 +2392,7 @@ fzap_iterate (dnode_end_t * zap_dnode, zap_phys_t * zap,
|
||||
/* get block id from index */
|
||||
if (zap->zap_ptrtbl.zt_numblks != 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
|
||||
"external pointer tables not supported");
|
||||
return 0;
|
||||
}
|
||||
@ -2519,7 +2519,7 @@ zap_lookup (dnode_end_t * zap_dnode, const char *name, grub_uint64_t *val,
|
||||
grub_dprintf ("zfs", "micro zap\n");
|
||||
err = mzap_lookup (zapbuf, endian, size, name, val,
|
||||
case_insensitive);
|
||||
grub_dprintf ("zfs", "returned %d\n", err);
|
||||
grub_dprintf ("zfs", "returned %d\n", err);
|
||||
grub_free (zapbuf);
|
||||
return err;
|
||||
}
|
||||
@ -2529,7 +2529,7 @@ zap_lookup (dnode_end_t * zap_dnode, const char *name, grub_uint64_t *val,
|
||||
/* this is a fat zap */
|
||||
err = fzap_lookup (zap_dnode, zapbuf, name, val, data,
|
||||
case_insensitive);
|
||||
grub_dprintf ("zfs", "returned %d\n", err);
|
||||
grub_dprintf ("zfs", "returned %d\n", err);
|
||||
grub_free (zapbuf);
|
||||
return err;
|
||||
}
|
||||
@ -2562,7 +2562,7 @@ zap_iterate_u64_transform (const void *name,
|
||||
}
|
||||
|
||||
static int
|
||||
zap_iterate_u64 (dnode_end_t * zap_dnode,
|
||||
zap_iterate_u64 (dnode_end_t * zap_dnode,
|
||||
int (*hook) (const char *name, grub_uint64_t val,
|
||||
struct grub_zfs_dir_ctx *ctx),
|
||||
struct grub_zfs_data *data, struct grub_zfs_dir_ctx *ctx)
|
||||
@ -2609,7 +2609,7 @@ zap_iterate_u64 (dnode_end_t * zap_dnode,
|
||||
}
|
||||
|
||||
static int
|
||||
zap_iterate (dnode_end_t * zap_dnode,
|
||||
zap_iterate (dnode_end_t * zap_dnode,
|
||||
grub_size_t nameelemlen,
|
||||
int (*hook) (const void *name, grub_size_t namelen,
|
||||
const void *val_in,
|
||||
@ -2669,7 +2669,7 @@ dnode_get (dnode_end_t * mdn, grub_uint64_t objnum, grub_uint8_t type,
|
||||
grub_err_t err;
|
||||
grub_zfs_endian_t endian;
|
||||
|
||||
blksz = grub_zfs_to_cpu16 (mdn->dn.dn_datablkszsec,
|
||||
blksz = grub_zfs_to_cpu16 (mdn->dn.dn_datablkszsec,
|
||||
mdn->endian) << SPA_MINBLOCKSHIFT;
|
||||
epbs = zfs_log2 (blksz) - DNODE_SHIFT;
|
||||
|
||||
@ -2680,18 +2680,18 @@ dnode_get (dnode_end_t * mdn, grub_uint64_t objnum, grub_uint8_t type,
|
||||
blkid = objnum >> epbs;
|
||||
idx = objnum & ((1 << epbs) - 1);
|
||||
|
||||
if (data->dnode_buf != NULL && grub_memcmp (data->dnode_mdn, mdn,
|
||||
sizeof (*mdn)) == 0
|
||||
if (data->dnode_buf != NULL && grub_memcmp (data->dnode_mdn, mdn,
|
||||
sizeof (*mdn)) == 0
|
||||
&& objnum >= data->dnode_start && objnum < data->dnode_end)
|
||||
{
|
||||
grub_memmove (&(buf->dn), &(data->dnode_buf)[idx], DNODE_SIZE);
|
||||
buf->endian = data->dnode_endian;
|
||||
if (type && buf->dn.dn_type != type)
|
||||
return grub_error(GRUB_ERR_BAD_FS, "incorrect dnode type");
|
||||
if (type && buf->dn.dn_type != type)
|
||||
return grub_error(GRUB_ERR_BAD_FS, "incorrect dnode type");
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
grub_dprintf ("zfs", "endian = %d, blkid=%llx\n", mdn->endian,
|
||||
grub_dprintf ("zfs", "endian = %d, blkid=%llx\n", mdn->endian,
|
||||
(unsigned long long) blkid);
|
||||
err = dmu_read (mdn, blkid, &dnbuf, &endian, data);
|
||||
if (err)
|
||||
@ -2717,8 +2717,8 @@ dnode_get (dnode_end_t * mdn, grub_uint64_t objnum, grub_uint8_t type,
|
||||
|
||||
grub_memmove (&(buf->dn), (dnode_phys_t *) dnbuf + idx, DNODE_SIZE);
|
||||
buf->endian = endian;
|
||||
if (type && buf->dn.dn_type != type)
|
||||
return grub_error(GRUB_ERR_BAD_FS, "incorrect dnode type");
|
||||
if (type && buf->dn.dn_type != type)
|
||||
return grub_error(GRUB_ERR_BAD_FS, "incorrect dnode type");
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
@ -2742,7 +2742,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
struct dnode_chain
|
||||
{
|
||||
struct dnode_chain *next;
|
||||
dnode_end_t dn;
|
||||
dnode_end_t dn;
|
||||
};
|
||||
struct dnode_chain *dnode_path = 0, *dn_new, *root;
|
||||
|
||||
@ -2752,7 +2752,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
dn_new->next = 0;
|
||||
dnode_path = root = dn_new;
|
||||
|
||||
err = dnode_get (&subvol->mdn, MASTER_NODE_OBJ, DMU_OT_MASTER_NODE,
|
||||
err = dnode_get (&subvol->mdn, MASTER_NODE_OBJ, DMU_OT_MASTER_NODE,
|
||||
&(dnode_path->dn), data);
|
||||
if (err)
|
||||
{
|
||||
@ -2803,7 +2803,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
grub_free (dn_new);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
/* skip leading slashes */
|
||||
@ -2829,7 +2829,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
}
|
||||
else
|
||||
{
|
||||
err = grub_error (GRUB_ERR_FILE_NOT_FOUND,
|
||||
err = grub_error (GRUB_ERR_FILE_NOT_FOUND,
|
||||
"can't resolve ..");
|
||||
break;
|
||||
}
|
||||
@ -2879,7 +2879,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
{
|
||||
grub_size_t block;
|
||||
grub_size_t blksz;
|
||||
blksz = (grub_zfs_to_cpu16 (dnode_path->dn.dn.dn_datablkszsec,
|
||||
blksz = (grub_zfs_to_cpu16 (dnode_path->dn.dn.dn_datablkszsec,
|
||||
dnode_path->dn.endian)
|
||||
<< SPA_MINBLOCKSHIFT);
|
||||
|
||||
@ -2918,7 +2918,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
if (err)
|
||||
break;
|
||||
free_symval = 1;
|
||||
}
|
||||
}
|
||||
path = path_buf = grub_malloc (sym_sz + grub_strlen (oldpath) + 1);
|
||||
if (!path_buf)
|
||||
{
|
||||
@ -2932,9 +2932,9 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
if (free_symval)
|
||||
grub_free (sym_value);
|
||||
path [sym_sz] = 0;
|
||||
grub_memcpy (path + grub_strlen (path), oldpath,
|
||||
grub_memcpy (path + grub_strlen (path), oldpath,
|
||||
grub_strlen (oldpath) + 1);
|
||||
|
||||
|
||||
grub_free (oldpathbuf);
|
||||
if (path[0] != '/')
|
||||
{
|
||||
@ -2953,7 +2953,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
{
|
||||
void *sahdrp;
|
||||
int hdrsize;
|
||||
|
||||
|
||||
if (dnode_path->dn.dn.dn_bonuslen != 0)
|
||||
{
|
||||
sahdrp = DN_BONUS (&dnode_path->dn.dn);
|
||||
@ -2961,7 +2961,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
else if (dnode_path->dn.dn.dn_flags & DNODE_FLAG_SPILL_BLKPTR)
|
||||
{
|
||||
blkptr_t *bp = &dnode_path->dn.dn.dn_spill;
|
||||
|
||||
|
||||
err = zio_read (bp, dnode_path->dn.endian, &sahdrp, NULL, data);
|
||||
if (err)
|
||||
break;
|
||||
@ -2980,7 +2980,7 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
dnode_path->dn.endian) >> 12) & 0xf) == 0xa)
|
||||
{
|
||||
char *sym_value = (char *) sahdrp + hdrsize + SA_SYMLINK_OFFSET;
|
||||
grub_size_t sym_sz =
|
||||
grub_size_t sym_sz =
|
||||
grub_zfs_to_cpu64 (grub_get_unaligned64 ((char *) sahdrp
|
||||
+ hdrsize
|
||||
+ SA_SIZE_OFFSET),
|
||||
@ -2995,9 +2995,9 @@ dnode_get_path (struct subvolume *subvol, const char *path_in, dnode_end_t *dn,
|
||||
}
|
||||
grub_memcpy (path, sym_value, sym_sz);
|
||||
path [sym_sz] = 0;
|
||||
grub_memcpy (path + grub_strlen (path), oldpath,
|
||||
grub_memcpy (path + grub_strlen (path), oldpath,
|
||||
grub_strlen (oldpath) + 1);
|
||||
|
||||
|
||||
grub_free (oldpathbuf);
|
||||
if (path[0] != '/')
|
||||
{
|
||||
@ -3098,7 +3098,7 @@ get_filesystem_dnode (dnode_end_t * mosmdn, char *fsname,
|
||||
|
||||
grub_dprintf ("zfs", "endian = %d\n", mosmdn->endian);
|
||||
|
||||
err = dnode_get (mosmdn, DMU_POOL_DIRECTORY_OBJECT,
|
||||
err = dnode_get (mosmdn, DMU_POOL_DIRECTORY_OBJECT,
|
||||
DMU_OT_OBJECT_DIRECTORY, mdn, data);
|
||||
if (err)
|
||||
return err;
|
||||
@ -3121,7 +3121,7 @@ get_filesystem_dnode (dnode_end_t * mosmdn, char *fsname,
|
||||
{
|
||||
grub_uint64_t childobj;
|
||||
char *cname, ch;
|
||||
|
||||
|
||||
while (*fsname == '/')
|
||||
fsname++;
|
||||
|
||||
@ -3281,7 +3281,7 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,
|
||||
filename = ptr_slash;
|
||||
else
|
||||
filename = "/";
|
||||
grub_dprintf ("zfs", "fsname = '%s' snapname='%s' filename = '%s'\n",
|
||||
grub_dprintf ("zfs", "fsname = '%s' snapname='%s' filename = '%s'\n",
|
||||
fsname, snapname, filename);
|
||||
}
|
||||
grub_dprintf ("zfs", "alive\n");
|
||||
@ -3367,7 +3367,7 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,
|
||||
|
||||
snapobj = grub_zfs_to_cpu64 (((dsl_dataset_phys_t *) DN_BONUS (&subvol->mdn.dn))->ds_snapnames_zapobj, subvol->mdn.endian);
|
||||
|
||||
err = dnode_get (&(data->mos), snapobj,
|
||||
err = dnode_get (&(data->mos), snapobj,
|
||||
DMU_OT_DSL_DS_SNAP_MAP, &subvol->mdn, data);
|
||||
if (!err)
|
||||
err = zap_lookup (&subvol->mdn, snapname, &headobj, data, 0);
|
||||
@ -3385,13 +3385,13 @@ dnode_get_fullpath (const char *fullpath, struct subvolume *subvol,
|
||||
subvol->obj = headobj;
|
||||
|
||||
make_mdn (&subvol->mdn, data);
|
||||
|
||||
|
||||
grub_dprintf ("zfs", "endian = %d\n", subvol->mdn.endian);
|
||||
|
||||
if (*isfs)
|
||||
{
|
||||
grub_free (fsname);
|
||||
grub_free (snapname);
|
||||
grub_free (snapname);
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
err = dnode_get_path (subvol, filename, dn, data);
|
||||
@ -3411,9 +3411,9 @@ nvlist_find_value (const char *nvlist_in, const char *name,
|
||||
char *nvp_name;
|
||||
|
||||
/* Verify if the 1st and 2nd byte in the nvlist are valid. */
|
||||
/* NOTE: independently of what endianness header announces all
|
||||
/* NOTE: independently of what endianness header announces all
|
||||
subsequent values are big-endian. */
|
||||
if (nvlist[0] != NV_ENCODE_XDR || (nvlist[1] != NV_LITTLE_ENDIAN
|
||||
if (nvlist[0] != NV_ENCODE_XDR || (nvlist[1] != NV_LITTLE_ENDIAN
|
||||
&& nvlist[1] != NV_BIG_ENDIAN))
|
||||
{
|
||||
grub_dprintf ("zfs", "incorrect nvlist header\n");
|
||||
@ -3534,13 +3534,13 @@ get_nvlist_size (const char *beg, const char *limit)
|
||||
{
|
||||
const char *ptr;
|
||||
grub_uint32_t encode_size;
|
||||
|
||||
|
||||
ptr = beg + 8;
|
||||
|
||||
while (ptr < limit
|
||||
&& (encode_size = grub_be_to_cpu32 (grub_get_unaligned32 (ptr))))
|
||||
ptr += encode_size; /* goto the next nvpair */
|
||||
ptr += 8;
|
||||
ptr += 8;
|
||||
return (ptr > limit) ? -1 : (ptr - beg);
|
||||
}
|
||||
|
||||
@ -3676,8 +3676,8 @@ zfs_mount (grub_device_t dev)
|
||||
}
|
||||
|
||||
ub = &(data->current_uberblock);
|
||||
ub_endian = (grub_zfs_to_cpu64 (ub->ub_magic,
|
||||
GRUB_ZFS_LITTLE_ENDIAN) == UBERBLOCK_MAGIC
|
||||
ub_endian = (grub_zfs_to_cpu64 (ub->ub_magic,
|
||||
GRUB_ZFS_LITTLE_ENDIAN) == UBERBLOCK_MAGIC
|
||||
? GRUB_ZFS_LITTLE_ENDIAN : GRUB_ZFS_BIG_ENDIAN);
|
||||
|
||||
err = zio_read (&ub->ub_rootbp, ub_endian,
|
||||
@ -3730,7 +3730,7 @@ grub_zfs_fetch_nvlist (grub_device_t dev, char **nvlist)
|
||||
return err;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
zfs_label (grub_device_t device, char **label)
|
||||
{
|
||||
char *nvlist;
|
||||
@ -3742,7 +3742,7 @@ zfs_label (grub_device_t device, char **label)
|
||||
return grub_errno;
|
||||
|
||||
err = zfs_fetch_nvlist (data->device_original, &nvlist);
|
||||
if (err)
|
||||
if (err)
|
||||
{
|
||||
zfs_unmount (data);
|
||||
return err;
|
||||
@ -3754,7 +3754,7 @@ zfs_label (grub_device_t device, char **label)
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
zfs_uuid (grub_device_t device, char **uuid)
|
||||
{
|
||||
struct grub_zfs_data *data;
|
||||
@ -3772,7 +3772,7 @@ zfs_uuid (grub_device_t device, char **uuid)
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
static grub_err_t
|
||||
zfs_mtime (grub_device_t device, grub_int64_t *mt)
|
||||
{
|
||||
struct grub_zfs_data *data;
|
||||
@ -3786,8 +3786,8 @@ zfs_mtime (grub_device_t device, grub_int64_t *mt)
|
||||
return grub_errno;
|
||||
|
||||
ub = &(data->current_uberblock);
|
||||
ub_endian = (grub_zfs_to_cpu64 (ub->ub_magic,
|
||||
GRUB_ZFS_LITTLE_ENDIAN) == UBERBLOCK_MAGIC
|
||||
ub_endian = (grub_zfs_to_cpu64 (ub->ub_magic,
|
||||
GRUB_ZFS_LITTLE_ENDIAN) == UBERBLOCK_MAGIC
|
||||
? GRUB_ZFS_LITTLE_ENDIAN : GRUB_ZFS_BIG_ENDIAN);
|
||||
|
||||
*mt = grub_zfs_to_cpu64 (ub->ub_timestamp, ub_endian);
|
||||
@ -3825,7 +3825,7 @@ grub_zfs_open (struct grub_file *file, const char *fsfilename)
|
||||
}
|
||||
|
||||
/* We found the dnode for this file. Verify if it is a plain file. */
|
||||
if (data->dnode.dn.dn_type != DMU_OT_PLAIN_FILE_CONTENTS)
|
||||
if (data->dnode.dn.dn_type != DMU_OT_PLAIN_FILE_CONTENTS)
|
||||
{
|
||||
zfs_unmount (data);
|
||||
return grub_error (GRUB_ERR_BAD_FILE_TYPE, N_("not a regular file"));
|
||||
@ -3900,7 +3900,7 @@ grub_zfs_read (grub_file_t file, char *buf, grub_size_t len)
|
||||
return len;
|
||||
}
|
||||
|
||||
blksz = grub_zfs_to_cpu16 (data->dnode.dn.dn_datablkszsec,
|
||||
blksz = grub_zfs_to_cpu16 (data->dnode.dn.dn_datablkszsec,
|
||||
data->dnode.endian) << SPA_MINBLOCKSHIFT;
|
||||
|
||||
if (blksz == 0)
|
||||
@ -3993,11 +3993,11 @@ fill_fs_info (struct grub_dirhook_info *info,
|
||||
dnode_end_t dn;
|
||||
grub_uint64_t objnum;
|
||||
grub_uint64_t headobj;
|
||||
|
||||
|
||||
grub_memset (info, 0, sizeof (*info));
|
||||
|
||||
|
||||
info->dir = 1;
|
||||
|
||||
|
||||
if (mdn.dn.dn_type == DMU_OT_DSL_DIR)
|
||||
{
|
||||
headobj = grub_zfs_to_cpu64 (((dsl_dir_phys_t *) DN_BONUS (&mdn.dn))->dd_head_dataset_obj, mdn.endian);
|
||||
@ -4012,28 +4012,28 @@ fill_fs_info (struct grub_dirhook_info *info,
|
||||
err = make_mdn (&mdn, data);
|
||||
if (err)
|
||||
return err;
|
||||
err = dnode_get (&mdn, MASTER_NODE_OBJ, DMU_OT_MASTER_NODE,
|
||||
err = dnode_get (&mdn, MASTER_NODE_OBJ, DMU_OT_MASTER_NODE,
|
||||
&dn, data);
|
||||
if (err)
|
||||
{
|
||||
grub_dprintf ("zfs", "failed here\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
err = zap_lookup (&dn, ZFS_ROOT_OBJ, &objnum, data, 0);
|
||||
if (err)
|
||||
{
|
||||
grub_dprintf ("zfs", "failed here\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
err = dnode_get (&mdn, objnum, 0, &dn, data);
|
||||
if (err)
|
||||
{
|
||||
grub_dprintf ("zfs", "failed here\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
if (dn.dn.dn_bonustype == DMU_OT_SA)
|
||||
{
|
||||
void *sahdrp;
|
||||
@ -4119,15 +4119,15 @@ iterate_zap (const char *name, grub_uint64_t val, struct grub_zfs_dir_ctx *ctx)
|
||||
info.mtime = grub_zfs_to_cpu64 (grub_get_unaligned64 ((char *) sahdrp + hdrsize + SA_MTIME_OFFSET), dn.endian);
|
||||
info.case_insensitive = ctx->data->subvol.case_insensitive;
|
||||
}
|
||||
|
||||
|
||||
if (dn.dn.dn_bonustype == DMU_OT_ZNODE)
|
||||
{
|
||||
{
|
||||
info.mtimeset = 1;
|
||||
info.mtime = grub_zfs_to_cpu64 (((znode_phys_t *) DN_BONUS (&dn.dn))->zp_mtime[0],
|
||||
dn.endian);
|
||||
}
|
||||
info.dir = (dn.dn.dn_type == DMU_OT_DIRECTORY_CONTENTS);
|
||||
grub_dprintf ("zfs", "type=%d, name=%s\n",
|
||||
grub_dprintf ("zfs", "type=%d, name=%s\n",
|
||||
(int)dn.dn.dn_type, (char *)name);
|
||||
return ctx->hook (name, &info, ctx->hook_data);
|
||||
}
|
||||
@ -4221,7 +4221,7 @@ grub_zfs_dir (grub_device_t device, const char *path,
|
||||
|
||||
if (isfs)
|
||||
{
|
||||
grub_uint64_t childobj, headobj;
|
||||
grub_uint64_t childobj, headobj;
|
||||
grub_uint64_t snapobj;
|
||||
dnode_end_t dn;
|
||||
struct grub_dirhook_info info;
|
||||
@ -4249,7 +4249,7 @@ grub_zfs_dir (grub_device_t device, const char *path,
|
||||
}
|
||||
|
||||
zap_iterate_u64 (&dn, iterate_zap_fs, data, &ctx);
|
||||
|
||||
|
||||
err = dnode_get (&(data->mos), headobj, DMU_OT_DSL_DATASET, &dn, data);
|
||||
if (err)
|
||||
{
|
||||
@ -4291,8 +4291,8 @@ check_feature (const char *name, grub_uint64_t val,
|
||||
return 0;
|
||||
if (name[0] == 0)
|
||||
return 0;
|
||||
for (i = 0; spa_feature_names[i] != NULL; i++)
|
||||
if (grub_strcmp (name, spa_feature_names[i]) == 0)
|
||||
for (i = 0; spa_feature_names[i] != NULL; i++)
|
||||
if (grub_strcmp (name, spa_feature_names[i]) == 0)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
@ -4305,7 +4305,7 @@ check_feature (const char *name, grub_uint64_t val,
|
||||
* 0: Success.
|
||||
* errnum: Failure.
|
||||
*/
|
||||
|
||||
|
||||
static grub_err_t
|
||||
check_mos_features(dnode_phys_t *mosmdn_phys,grub_zfs_endian_t endian,struct grub_zfs_data* data )
|
||||
{
|
||||
@ -4330,7 +4330,7 @@ check_mos_features(dnode_phys_t *mosmdn_phys,grub_zfs_endian_t endian,struct gru
|
||||
errnum = zap_lookup(&dn, DMU_POOL_FEATURES_FOR_READ, &objnum, data,0);
|
||||
if (errnum != 0)
|
||||
return errnum;
|
||||
|
||||
|
||||
errnum = dnode_get(&mosmdn, objnum, DMU_OTN_ZAP_METADATA, &dn, data);
|
||||
if (errnum != 0)
|
||||
return errnum;
|
||||
|
||||
@ -39,14 +39,14 @@
|
||||
#include <grub/zfs/dsl_dataset.h>
|
||||
|
||||
void
|
||||
fletcher_2(const void *buf, grub_uint64_t size, grub_zfs_endian_t endian,
|
||||
fletcher_2(const void *buf, grub_uint64_t size, grub_zfs_endian_t endian,
|
||||
zio_cksum_t *zcp)
|
||||
{
|
||||
const grub_uint64_t *ip = buf;
|
||||
const grub_uint64_t *ipend = ip + (size / sizeof (grub_uint64_t));
|
||||
grub_uint64_t a0, b0, a1, b1;
|
||||
|
||||
for (a0 = b0 = a1 = b1 = 0; ip < ipend; ip += 2)
|
||||
|
||||
for (a0 = b0 = a1 = b1 = 0; ip < ipend; ip += 2)
|
||||
{
|
||||
a0 += grub_zfs_to_cpu64 (ip[0], endian);
|
||||
a1 += grub_zfs_to_cpu64 (ip[1], endian);
|
||||
@ -61,14 +61,14 @@ fletcher_2(const void *buf, grub_uint64_t size, grub_zfs_endian_t endian,
|
||||
}
|
||||
|
||||
void
|
||||
fletcher_4 (const void *buf, grub_uint64_t size, grub_zfs_endian_t endian,
|
||||
fletcher_4 (const void *buf, grub_uint64_t size, grub_zfs_endian_t endian,
|
||||
zio_cksum_t *zcp)
|
||||
{
|
||||
const grub_uint32_t *ip = buf;
|
||||
const grub_uint32_t *ipend = ip + (size / sizeof (grub_uint32_t));
|
||||
grub_uint64_t a, b, c, d;
|
||||
|
||||
for (a = b = c = d = 0; ip < ipend; ip++)
|
||||
|
||||
for (a = b = c = d = 0; ip < ipend; ip++)
|
||||
{
|
||||
a += grub_zfs_to_cpu32 (ip[0], endian);;
|
||||
b += a;
|
||||
|
||||
@ -116,23 +116,23 @@ zio_checksum_SHA256(const void *buf, grub_uint64_t size,
|
||||
grub_uint8_t pad[128];
|
||||
unsigned padsize = size & 63;
|
||||
unsigned i;
|
||||
|
||||
|
||||
for (i = 0; i < size - padsize; i += 64)
|
||||
SHA256Transform(H, (grub_uint8_t *)buf + i);
|
||||
|
||||
|
||||
for (i = 0; i < padsize; i++)
|
||||
pad[i] = ((grub_uint8_t *)buf)[i];
|
||||
|
||||
|
||||
for (pad[padsize++] = 0x80; (padsize & 63) != 56; padsize++)
|
||||
pad[padsize] = 0;
|
||||
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
pad[padsize++] = (size << 3) >> (56 - 8 * i);
|
||||
|
||||
|
||||
for (i = 0; i < padsize && i <= 64; i += 64)
|
||||
SHA256Transform(H, pad + i);
|
||||
|
||||
zcp->zc_word[0] = grub_cpu_to_zfs64 ((grub_uint64_t)H[0] << 32 | H[1],
|
||||
|
||||
zcp->zc_word[0] = grub_cpu_to_zfs64 ((grub_uint64_t)H[0] << 32 | H[1],
|
||||
endian);
|
||||
zcp->zc_word[1] = grub_cpu_to_zfs64 ((grub_uint64_t)H[2] << 32 | H[3],
|
||||
endian);
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
/*
|
||||
Mostly based on following article:
|
||||
Mostly based on following article:
|
||||
https://blogs.oracle.com/darren/entry/zfs_encryption_what_is_on
|
||||
*/
|
||||
|
||||
@ -179,7 +179,7 @@ grub_gcm_mul (grub_uint8_t *a, const grub_uint8_t *b)
|
||||
grub_crypto_xor (res, res, bs, 16);
|
||||
grub_gcm_mul_x (bs);
|
||||
}
|
||||
|
||||
|
||||
grub_memcpy (a, res, 16);
|
||||
}
|
||||
|
||||
@ -275,7 +275,7 @@ algo_decrypt (grub_crypto_cipher_handle_t cipher, grub_uint64_t algo,
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
grub_zfs_decrypt_real (grub_crypto_cipher_handle_t cipher,
|
||||
grub_zfs_decrypt_real (grub_crypto_cipher_handle_t cipher,
|
||||
grub_uint64_t algo,
|
||||
void *nonce,
|
||||
char *buf, grub_size_t size,
|
||||
@ -286,7 +286,7 @@ grub_zfs_decrypt_real (grub_crypto_cipher_handle_t cipher,
|
||||
unsigned i;
|
||||
grub_uint32_t sw[4];
|
||||
gcry_err_code_t err;
|
||||
|
||||
|
||||
grub_memcpy (sw, nonce, 16);
|
||||
if (endian != GRUB_ZFS_BIG_ENDIAN)
|
||||
for (i = 0; i < 4; i++)
|
||||
@ -302,7 +302,7 @@ grub_zfs_decrypt_real (grub_crypto_cipher_handle_t cipher,
|
||||
sw + 1, 3, 12);
|
||||
if (err)
|
||||
return grub_crypto_gcry_error (err);
|
||||
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
if (grub_zfs_to_cpu32 (expected_mac[i], endian)
|
||||
!= grub_be_to_cpu32 (mac[i]))
|
||||
@ -362,7 +362,7 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
|
||||
grub_crypto_cipher_close (cipher);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
err = grub_crypto_cipher_set_key (cipher, wrap_key_real,
|
||||
keylen);
|
||||
if (err)
|
||||
@ -371,7 +371,7 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
|
||||
grub_crypto_cipher_close (cipher);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
err = algo_decrypt (cipher, algo, decrypted, key->unknown_purpose_key, 32,
|
||||
mac, key->unknown_purpose_nonce, 2, 16);
|
||||
if (err || (grub_crypto_memcmp (mac, key->unknown_purpose_key + 32, 16)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user