The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/cmd/zpool/os/freebsd/zpool_vdev_os.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 
   22 /*
   23  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
   24  * Copyright (c) 2013, 2018 by Delphix. All rights reserved.
   25  * Copyright (c) 2016, 2017 Intel Corporation.
   26  * Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>.
   27  */
   28 
   29 /*
   30  * Functions to convert between a list of vdevs and an nvlist representing the
   31  * configuration.  Each entry in the list can be one of:
   32  *
   33  *      Device vdevs
   34  *              disk=(path=..., devid=...)
   35  *              file=(path=...)
   36  *
   37  *      Group vdevs
   38  *              raidz[1|2]=(...)
   39  *              mirror=(...)
   40  *
   41  *      Hot spares
   42  *
   43  * While the underlying implementation supports it, group vdevs cannot contain
   44  * other group vdevs.  All userland verification of devices is contained within
   45  * this file.  If successful, the nvlist returned can be passed directly to the
   46  * kernel; we've done as much verification as possible in userland.
   47  *
   48  * Hot spares are a special case, and passed down as an array of disk vdevs, at
   49  * the same level as the root of the vdev tree.
   50  *
   51  * The only function exported by this file is 'make_root_vdev'.  The
   52  * function performs several passes:
   53  *
   54  *      1. Construct the vdev specification.  Performs syntax validation and
   55  *         makes sure each device is valid.
   56  *      2. Check for devices in use.  Using libdiskmgt, makes sure that no
   57  *         devices are also in use.  Some can be overridden using the 'force'
   58  *         flag, others cannot.
   59  *      3. Check for replication errors if the 'force' flag is not specified.
   60  *         validates that the replication level is consistent across the
   61  *         entire pool.
   62  *      4. Call libzfs to label any whole disks with an EFI label.
   63  */
   64 
   65 #include <assert.h>
   66 #include <errno.h>
   67 #include <fcntl.h>
   68 #include <libintl.h>
   69 #include <libnvpair.h>
   70 #include <libzutil.h>
   71 #include <limits.h>
   72 #include <sys/spa.h>
   73 #include <stdio.h>
   74 #include <string.h>
   75 #include <unistd.h>
   76 #include <paths.h>
   77 #include <sys/stat.h>
   78 #include <sys/disk.h>
   79 #include <sys/mntent.h>
   80 #include <libgeom.h>
   81 
   82 #include "zpool_util.h"
   83 #include <sys/zfs_context.h>
   84 
   85 int
   86 check_device(const char *name, boolean_t force, boolean_t isspare,
   87     boolean_t iswholedisk)
   88 {
   89         (void) iswholedisk;
   90         char path[MAXPATHLEN];
   91 
   92         if (strncmp(name, _PATH_DEV, sizeof (_PATH_DEV) - 1) != 0)
   93                 snprintf(path, sizeof (path), "%s%s", _PATH_DEV, name);
   94         else
   95                 strlcpy(path, name, sizeof (path));
   96 
   97         return (check_file(path, force, isspare));
   98 }
   99 
  100 boolean_t
  101 check_sector_size_database(char *path, int *sector_size)
  102 {
  103         (void) path, (void) sector_size;
  104         return (0);
  105 }
  106 
  107 void
  108 after_zpool_upgrade(zpool_handle_t *zhp)
  109 {
  110         char bootfs[ZPOOL_MAXPROPLEN];
  111 
  112         if (zpool_get_prop(zhp, ZPOOL_PROP_BOOTFS, bootfs,
  113             sizeof (bootfs), NULL, B_FALSE) == 0 &&
  114             strcmp(bootfs, "-") != 0) {
  115                 (void) printf(gettext("Pool '%s' has the bootfs "
  116                     "property set, you might need to update\nthe boot "
  117                     "code. See gptzfsboot(8) and loader.efi(8) for "
  118                     "details.\n"), zpool_get_name(zhp));
  119         }
  120 }
  121 
  122 int
  123 check_file(const char *file, boolean_t force, boolean_t isspare)
  124 {
  125         return (check_file_generic(file, force, isspare));
  126 }

Cache object: 335c247bc16d42e8d43956512a97a939


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.