Merge commit 'refs/top-bases/linux-zfs-branch' into linux-zfs-branch

This commit is contained in:
Brian Behlendorf 2010-04-23 11:09:02 -07:00
commit 1ab332ecf7
1 changed files with 15 additions and 15 deletions

View File

@ -78,7 +78,9 @@
#include <uuid/uuid.h> #include <uuid/uuid.h>
#ifdef HAVE_LIBBLKID #ifdef HAVE_LIBBLKID
#include <blkid/blkid.h> #include <blkid/blkid.h>
#endif #else
#define blkid_cache void *
#endif /* HAVE_LIBBLKID */
#include "zpool_util.h" #include "zpool_util.h"
@ -125,7 +127,7 @@ check_file(const char *file, boolean_t force, boolean_t isspare)
pool_state_t state; pool_state_t state;
boolean_t inuse; boolean_t inuse;
if ((fd = open(file, O_RDONLY|O_EXCL)) < 0) if ((fd = open(file, O_RDONLY)) < 0)
return (0); return (0);
if (zpool_in_use(g_zfs, fd, &state, &name, &inuse) == 0 && inuse) { if (zpool_in_use(g_zfs, fd, &state, &name, &inuse) == 0 && inuse) {
@ -177,7 +179,6 @@ check_file(const char *file, boolean_t force, boolean_t isspare)
return (ret); return (ret);
} }
#ifdef HAVE_LIBBLKID
static void static void
check_error(int err) check_error(int err)
{ {
@ -189,8 +190,10 @@ static int
check_slice(const char *path, blkid_cache cache, int force, boolean_t isspare) check_slice(const char *path, blkid_cache cache, int force, boolean_t isspare)
{ {
struct stat64 statbuf; struct stat64 statbuf;
char *value;
int err; int err;
#ifdef HAVE_LIBBLKID
char *value;
#endif /* HAVE_LIBBLKID */
if (stat64(path, &statbuf) != 0) { if (stat64(path, &statbuf) != 0) {
vdev_error(gettext("cannot stat %s: %s\n"), vdev_error(gettext("cannot stat %s: %s\n"),
@ -198,6 +201,7 @@ check_slice(const char *path, blkid_cache cache, int force, boolean_t isspare)
return (-1); return (-1);
} }
#ifdef HAVE_LIBBLKID
/* No valid type detected device is safe to use */ /* No valid type detected device is safe to use */
value = blkid_get_tag_value(cache, "TYPE", path); value = blkid_get_tag_value(cache, "TYPE", path);
if (value == NULL) if (value == NULL)
@ -221,6 +225,9 @@ check_slice(const char *path, blkid_cache cache, int force, boolean_t isspare)
} }
free(value); free(value);
#else
err = check_file(path, force, isspare);
#endif /* HAVE_LIBBLKID */
return (err); return (err);
} }
@ -317,13 +324,15 @@ check_device(const char *path, boolean_t force,
boolean_t isspare, boolean_t iswholedisk) boolean_t isspare, boolean_t iswholedisk)
{ {
static blkid_cache cache = NULL; static blkid_cache cache = NULL;
int err;
#ifdef HAVE_LIBBLKID
/* /*
* There is no easy way to add a correct blkid_put_cache() call, * There is no easy way to add a correct blkid_put_cache() call,
* memory will be reclaimed when the command exits. * memory will be reclaimed when the command exits.
*/ */
if (cache == NULL) { if (cache == NULL) {
int err;
if ((err = blkid_get_cache(&cache, NULL)) != 0) { if ((err = blkid_get_cache(&cache, NULL)) != 0) {
check_error(err); check_error(err);
return -1; return -1;
@ -335,20 +344,11 @@ check_device(const char *path, boolean_t force,
return -1; return -1;
} }
} }
#endif /* HAVE_LIBBLKID */
return check_disk(path, cache, force, isspare, iswholedisk); return check_disk(path, cache, force, isspare, iswholedisk);
} }
#else /* HAVE_LIBBLKID */
static int
check_device(const char *path, boolean_t force,
boolean_t isspare, boolean_t iswholedisk)
{
return check_file(path, force, isspare);
}
#endif /* HAVE_LIBBLKID */
/* /*
* By "whole disk" we mean an entire physical disk (something we can * By "whole disk" we mean an entire physical disk (something we can
* label, toggle the write cache on, etc.) as opposed to the full * label, toggle the write cache on, etc.) as opposed to the full