mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Illumos 4914 - zfs on-disk bookmark structure should be named *_phys_t
4914 zfs on-disk bookmark structure should be named *_phys_t Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Christopher Siden <christopher.siden@delphix.com> Reviewed by: Richard Lowe <richlowe@richlowe.net> Reviewed by: Saso Kiselkov <skiselkov.ml@gmail.com> Approved by: Robert Mustacchi <rm@joyent.com> References: https://www.illumos.org/issues/4914 https://github.com/illumos/illumos-gate/commit/7802d7b Porting notes: There were a number of zfsonlinux-specific uses of zbookmark_t which needed to be updated. This should reduce the likelihood of further problems like issue #2094 from occurring. Ported by: Tim Chase <tim@chase2k.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2558
This commit is contained in:
committed by
Brian Behlendorf
parent
1fa8f795d5
commit
5dbd68a352
@@ -22,7 +22,7 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2013 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2012, 2014 by Delphix. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
@@ -3500,7 +3500,7 @@ zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv,
|
||||
static int
|
||||
zbookmark_compare(const void *a, const void *b)
|
||||
{
|
||||
return (memcmp(a, b, sizeof (zbookmark_t)));
|
||||
return (memcmp(a, b, sizeof (zbookmark_phys_t)));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3512,7 +3512,7 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp)
|
||||
{
|
||||
zfs_cmd_t zc = {"\0"};
|
||||
uint64_t count;
|
||||
zbookmark_t *zb = NULL;
|
||||
zbookmark_phys_t *zb = NULL;
|
||||
int i;
|
||||
|
||||
/*
|
||||
@@ -3525,7 +3525,7 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp)
|
||||
if (count == 0)
|
||||
return (0);
|
||||
if ((zc.zc_nvlist_dst = (uintptr_t)zfs_alloc(zhp->zpool_hdl,
|
||||
count * sizeof (zbookmark_t))) == (uintptr_t)NULL)
|
||||
count * sizeof (zbookmark_phys_t))) == (uintptr_t)NULL)
|
||||
return (-1);
|
||||
zc.zc_nvlist_dst_size = count;
|
||||
(void) strcpy(zc.zc_name, zhp->zpool_name);
|
||||
@@ -3534,11 +3534,14 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp)
|
||||
&zc) != 0) {
|
||||
free((void *)(uintptr_t)zc.zc_nvlist_dst);
|
||||
if (errno == ENOMEM) {
|
||||
void *dst;
|
||||
|
||||
count = zc.zc_nvlist_dst_size;
|
||||
if ((zc.zc_nvlist_dst = (uintptr_t)
|
||||
zfs_alloc(zhp->zpool_hdl, count *
|
||||
sizeof (zbookmark_t))) == (uintptr_t)NULL)
|
||||
dst = zfs_alloc(zhp->zpool_hdl, count *
|
||||
sizeof (zbookmark_phys_t));
|
||||
if (dst == NULL)
|
||||
return (-1);
|
||||
zc.zc_nvlist_dst = (uintptr_t)dst;
|
||||
} else {
|
||||
return (-1);
|
||||
}
|
||||
@@ -3554,11 +3557,11 @@ zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp)
|
||||
* _not_ copied as part of the process. So we point the start of our
|
||||
* array appropriate and decrement the total number of elements.
|
||||
*/
|
||||
zb = ((zbookmark_t *)(uintptr_t)zc.zc_nvlist_dst) +
|
||||
zb = ((zbookmark_phys_t *)(uintptr_t)zc.zc_nvlist_dst) +
|
||||
zc.zc_nvlist_dst_size;
|
||||
count -= zc.zc_nvlist_dst_size;
|
||||
|
||||
qsort(zb, count, sizeof (zbookmark_t), zbookmark_compare);
|
||||
qsort(zb, count, sizeof (zbookmark_phys_t), zbookmark_compare);
|
||||
|
||||
verify(nvlist_alloc(nverrlistp, 0, KM_SLEEP) == 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user