summaryrefslogtreecommitdiffstats
path: root/module/zfs/vdev_disk.c
diff options
context:
space:
mode:
Diffstat (limited to 'module/zfs/vdev_disk.c')
-rw-r--r--module/zfs/vdev_disk.c131
1 files changed, 66 insertions, 65 deletions
diff --git a/module/zfs/vdev_disk.c b/module/zfs/vdev_disk.c
index d845f59c4..1d8bf3f8c 100644
--- a/module/zfs/vdev_disk.c
+++ b/module/zfs/vdev_disk.c
@@ -47,7 +47,7 @@ typedef struct dio_request {
int dr_rw; /* Read/Write */
int dr_error; /* Bio error */
int dr_bio_count; /* Count of bio's */
- struct bio *dr_bio[0]; /* Attached bio's */
+ struct bio *dr_bio[0]; /* Attached bio's */
} dio_request_t;
@@ -65,7 +65,7 @@ vdev_bdev_mode(int smode)
if (smode & FWRITE)
mode |= FMODE_WRITE;
- return mode;
+ return (mode);
}
#else
static int
@@ -78,7 +78,7 @@ vdev_bdev_mode(int smode)
if ((smode & FREAD) && !(smode & FWRITE))
mode = MS_RDONLY;
- return mode;
+ return (mode);
}
#endif /* HAVE_OPEN_BDEV_EXCLUSIVE */
@@ -139,18 +139,19 @@ vdev_elevator_switch(vdev_t *v, char *elevator)
return (0);
/* Leave existing scheduler when set to "none" */
- if (!strncmp(elevator, "none", 4) && (strlen(elevator) == 4))
+ if (strncmp(elevator, "none", 4) && (strlen(elevator) == 4) == 0)
return (0);
#ifdef HAVE_ELEVATOR_CHANGE
error = elevator_change(q, elevator);
#else
- /* For pre-2.6.36 kernels elevator_change() is not available.
+ /*
+ * For pre-2.6.36 kernels elevator_change() is not available.
* Therefore we fall back to using a usermodehelper to echo the
* elevator into sysfs; This requires /bin/echo and sysfs to be
* mounted which may not be true early in the boot process.
*/
-# define SET_SCHEDULER_CMD \
+#define SET_SCHEDULER_CMD \
"exec 0</dev/null " \
" 1>/sys/block/%s/queue/scheduler " \
" 2>/dev/null; " \
@@ -167,7 +168,7 @@ vdev_elevator_switch(vdev_t *v, char *elevator)
#endif /* HAVE_ELEVATOR_CHANGE */
if (error)
printk("ZFS: Unable to set \"%s\" scheduler for %s (%s): %d\n",
- elevator, v->vdev_path, device, error);
+ elevator, v->vdev_path, device, error);
return (error);
}
@@ -207,7 +208,7 @@ vdev_disk_rrpart(const char *path, int mode, vdev_disk_t *vd)
bdev = vdev_bdev_open(path, vdev_bdev_mode(mode), zfs_vdev_holder);
if (IS_ERR(bdev))
- return bdev;
+ return (bdev);
disk = get_gendisk(bdev->bd_dev, &partno);
vdev_bdev_close(bdev, vdev_bdev_mode(mode));
@@ -231,9 +232,9 @@ vdev_disk_rrpart(const char *path, int mode, vdev_disk_t *vd)
put_disk(disk);
}
- return result;
+ return (result);
#else
- return ERR_PTR(-EOPNOTSUPP);
+ return (ERR_PTR(-EOPNOTSUPP));
#endif /* defined(HAVE_3ARG_BLKDEV_GET) && defined(HAVE_GET_GENDISK) */
}
@@ -248,7 +249,7 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize,
/* Must have a pathname and it must be absolute. */
if (v->vdev_path == NULL || v->vdev_path[0] != '/') {
v->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL;
- return EINVAL;
+ return (EINVAL);
}
/*
@@ -261,9 +262,9 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize,
goto skip_open;
}
- vd = kmem_zalloc(sizeof(vdev_disk_t), KM_PUSHPAGE);
+ vd = kmem_zalloc(sizeof (vdev_disk_t), KM_PUSHPAGE);
if (vd == NULL)
- return ENOMEM;
+ return (ENOMEM);
/*
* Devices are always opened by the path provided at configuration
@@ -286,8 +287,8 @@ vdev_disk_open(vdev_t *v, uint64_t *psize, uint64_t *max_psize,
bdev = vdev_bdev_open(v->vdev_path,
vdev_bdev_mode(mode), zfs_vdev_holder);
if (IS_ERR(bdev)) {
- kmem_free(vd, sizeof(vdev_disk_t));
- return -PTR_ERR(bdev);
+ kmem_free(vd, sizeof (vdev_disk_t));
+ return (-PTR_ERR(bdev));
}
v->vdev_tsd = vd;
@@ -312,7 +313,7 @@ skip_open:
/* Try to set the io scheduler elevator algorithm */
(void) vdev_elevator_switch(v, zfs_vdev_scheduler);
- return 0;
+ return (0);
}
static void
@@ -325,9 +326,9 @@ vdev_disk_close(vdev_t *v)
if (vd->vd_bdev != NULL)
vdev_bdev_close(vd->vd_bdev,
- vdev_bdev_mode(spa_mode(v->vdev_spa)));
+ vdev_bdev_mode(spa_mode(v->vdev_spa)));
- kmem_free(vd, sizeof(vdev_disk_t));
+ kmem_free(vd, sizeof (vdev_disk_t));
v->vdev_tsd = NULL;
}
@@ -337,8 +338,8 @@ vdev_disk_dio_alloc(int bio_count)
dio_request_t *dr;
int i;
- dr = kmem_zalloc(sizeof(dio_request_t) +
- sizeof(struct bio *) * bio_count, KM_PUSHPAGE);
+ dr = kmem_zalloc(sizeof (dio_request_t) +
+ sizeof (struct bio *) * bio_count, KM_PUSHPAGE);
if (dr) {
init_completion(&dr->dr_comp);
atomic_set(&dr->dr_ref, 0);
@@ -349,7 +350,7 @@ vdev_disk_dio_alloc(int bio_count)
dr->dr_bio[i] = NULL;
}
- return dr;
+ return (dr);
}
static void
@@ -361,8 +362,8 @@ vdev_disk_dio_free(dio_request_t *dr)
if (dr->dr_bio[i])
bio_put(dr->dr_bio[i]);
- kmem_free(dr, sizeof(dio_request_t) +
- sizeof(struct bio *) * dr->dr_bio_count);
+ kmem_free(dr, sizeof (dio_request_t) +
+ sizeof (struct bio *) * dr->dr_bio_count);
}
static int
@@ -370,19 +371,19 @@ vdev_disk_dio_is_sync(dio_request_t *dr)
{
#ifdef HAVE_BIO_RW_SYNC
/* BIO_RW_SYNC preferred interface from 2.6.12-2.6.29 */
- return (dr->dr_rw & (1 << BIO_RW_SYNC));
+ return (dr->dr_rw & (1 << BIO_RW_SYNC));
#else
-# ifdef HAVE_BIO_RW_SYNCIO
+#ifdef HAVE_BIO_RW_SYNCIO
/* BIO_RW_SYNCIO preferred interface from 2.6.30-2.6.35 */
- return (dr->dr_rw & (1 << BIO_RW_SYNCIO));
-# else
-# ifdef HAVE_REQ_SYNC
+ return (dr->dr_rw & (1 << BIO_RW_SYNCIO));
+#else
+#ifdef HAVE_REQ_SYNC
/* REQ_SYNC preferred interface from 2.6.36-2.6.xx */
- return (dr->dr_rw & REQ_SYNC);
-# else
-# error "Unable to determine bio sync flag"
-# endif /* HAVE_REQ_SYNC */
-# endif /* HAVE_BIO_RW_SYNC */
+ return (dr->dr_rw & REQ_SYNC);
+#else
+#error "Unable to determine bio sync flag"
+#endif /* HAVE_REQ_SYNC */
+#endif /* HAVE_BIO_RW_SYNC */
#endif /* HAVE_BIO_RW_SYNCIO */
}
@@ -417,7 +418,7 @@ vdev_disk_dio_put(dio_request_t *dr)
}
}
- return rc;
+ return (rc);
}
BIO_END_IO_PROTO(vdev_disk_physio_completion, bio, size, error)
@@ -436,11 +437,11 @@ BIO_END_IO_PROTO(vdev_disk_physio_completion, bio, size, error)
#ifndef HAVE_2ARGS_BIO_END_IO_T
if (bio->bi_size)
- return 1;
+ return (1);
#endif /* HAVE_2ARGS_BIO_END_IO_T */
if (error == 0 && !test_bit(BIO_UPTODATE, &bio->bi_flags))
- error = -EIO;
+ error = (-EIO);
if (dr->dr_error == 0)
dr->dr_error = -error;
@@ -459,7 +460,7 @@ static inline unsigned long
bio_nr_pages(void *bio_ptr, unsigned int bio_size)
{
return ((((unsigned long)bio_ptr + bio_size + PAGE_SIZE - 1) >>
- PAGE_SHIFT) - ((unsigned long)bio_ptr >> PAGE_SHIFT));
+ PAGE_SHIFT) - ((unsigned long)bio_ptr >> PAGE_SHIFT));
}
static unsigned int
@@ -491,14 +492,14 @@ bio_map(struct bio *bio, void *bio_ptr, unsigned int bio_size)
offset = 0;
}
- return bio_size;
+ return (bio_size);
}
static int
__vdev_disk_physio(struct block_device *bdev, zio_t *zio, caddr_t kbuf_ptr,
- size_t kbuf_size, uint64_t kbuf_offset, int flags)
+ size_t kbuf_size, uint64_t kbuf_offset, int flags)
{
- dio_request_t *dr;
+ dio_request_t *dr;
caddr_t bio_ptr;
uint64_t bio_offset;
int bio_size, bio_count = 16;
@@ -509,7 +510,7 @@ __vdev_disk_physio(struct block_device *bdev, zio_t *zio, caddr_t kbuf_ptr,
retry:
dr = vdev_disk_dio_alloc(bio_count);
if (dr == NULL)
- return ENOMEM;
+ return (ENOMEM);
if (zio && !(zio->io_flags & (ZIO_FLAG_IO_RETRY | ZIO_FLAG_TRYHARD)))
bio_set_flags_failfast(bdev, &flags);
@@ -545,10 +546,10 @@ retry:
}
dr->dr_bio[i] = bio_alloc(GFP_NOIO,
- bio_nr_pages(bio_ptr, bio_size));
+ bio_nr_pages(bio_ptr, bio_size));
if (dr->dr_bio[i] == NULL) {
vdev_disk_dio_free(dr);
- return ENOMEM;
+ return (ENOMEM);
}
/* Matching put called by vdev_disk_physio_completion */
@@ -592,17 +593,17 @@ retry:
ASSERT3S(atomic_read(&dr->dr_ref), ==, 1);
}
- (void)vdev_disk_dio_put(dr);
+ (void) vdev_disk_dio_put(dr);
- return error;
+ return (error);
}
int
vdev_disk_physio(struct block_device *bdev, caddr_t kbuf,
- size_t size, uint64_t offset, int flags)
+ size_t size, uint64_t offset, int flags)
{
bio_set_flags_failfast(bdev, &flags);
- return __vdev_disk_physio(bdev, NULL, kbuf, size, offset, flags);
+ return (__vdev_disk_physio(bdev, NULL, kbuf, size, offset, flags));
}
BIO_END_IO_PROTO(vdev_disk_io_flush_completion, bio, size, rc)
@@ -631,11 +632,11 @@ vdev_disk_io_flush(struct block_device *bdev, zio_t *zio)
q = bdev_get_queue(bdev);
if (!q)
- return ENXIO;
+ return (ENXIO);
bio = bio_alloc(GFP_NOIO, 0);
if (!bio)
- return ENOMEM;
+ return (ENOMEM);
bio->bi_end_io = vdev_disk_io_flush_completion;
bio->bi_private = zio;
@@ -643,7 +644,7 @@ vdev_disk_io_flush(struct block_device *bdev, zio_t *zio)
zio->io_delay = jiffies_64;
submit_bio(VDEV_WRITE_FLUSH_FUA, bio);
- return 0;
+ return (0);
}
static int
@@ -658,7 +659,7 @@ vdev_disk_io_start(zio_t *zio)
if (!vdev_readable(v)) {
zio->io_error = SET_ERROR(ENXIO);
- return ZIO_PIPELINE_CONTINUE;
+ return (ZIO_PIPELINE_CONTINUE);
}
switch (zio->io_cmd) {
@@ -674,7 +675,7 @@ vdev_disk_io_start(zio_t *zio)
error = vdev_disk_io_flush(vd->vd_bdev, zio);
if (error == 0)
- return ZIO_PIPELINE_STOP;
+ return (ZIO_PIPELINE_STOP);
zio->io_error = error;
if (error == ENOTSUP)
@@ -686,7 +687,7 @@ vdev_disk_io_start(zio_t *zio)
zio->io_error = SET_ERROR(ENOTSUP);
}
- return ZIO_PIPELINE_CONTINUE;
+ return (ZIO_PIPELINE_CONTINUE);
case ZIO_TYPE_WRITE:
flags = WRITE;
@@ -698,17 +699,17 @@ vdev_disk_io_start(zio_t *zio)
default:
zio->io_error = SET_ERROR(ENOTSUP);
- return ZIO_PIPELINE_CONTINUE;
+ return (ZIO_PIPELINE_CONTINUE);
}
error = __vdev_disk_physio(vd->vd_bdev, zio, zio->io_data,
- zio->io_size, zio->io_offset, flags);
+ zio->io_size, zio->io_offset, flags);
if (error) {
zio->io_error = error;
- return ZIO_PIPELINE_CONTINUE;
+ return (ZIO_PIPELINE_CONTINUE);
}
- return ZIO_PIPELINE_STOP;
+ return (ZIO_PIPELINE_STOP);
}
static void
@@ -720,7 +721,7 @@ vdev_disk_io_done(zio_t *zio)
* removal of the device from the configuration.
*/
if (zio->io_error == EIO) {
- vdev_t *v = zio->io_vd;
+ vdev_t *v = zio->io_vd;
vdev_disk_t *vd = v->vdev_tsd;
if (check_disk_change(vd->vd_bdev)) {
@@ -787,19 +788,19 @@ vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config)
bdev = vdev_bdev_open(devpath, vdev_bdev_mode(FREAD), zfs_vdev_holder);
if (IS_ERR(bdev))
- return -PTR_ERR(bdev);
+ return (-PTR_ERR(bdev));
s = bdev_capacity(bdev);
if (s == 0) {
vdev_bdev_close(bdev, vdev_bdev_mode(FREAD));
- return EIO;
+ return (EIO);
}
- size = P2ALIGN_TYPED(s, sizeof(vdev_label_t), uint64_t);
- label = vmem_alloc(sizeof(vdev_label_t), KM_PUSHPAGE);
+ size = P2ALIGN_TYPED(s, sizeof (vdev_label_t), uint64_t);
+ label = vmem_alloc(sizeof (vdev_label_t), KM_PUSHPAGE);
for (i = 0; i < VDEV_LABELS; i++) {
- uint64_t offset, state, txg = 0;
+ uint64_t offset, state, txg = 0;
/* read vdev label */
offset = vdev_label_offset(size, i, 0);
@@ -830,10 +831,10 @@ vdev_disk_read_rootlabel(char *devpath, char *devid, nvlist_t **config)
break;
}
- vmem_free(label, sizeof(vdev_label_t));
+ vmem_free(label, sizeof (vdev_label_t));
vdev_bdev_close(bdev, vdev_bdev_mode(FREAD));
- return 0;
+ return (0);
}
module_param(zfs_vdev_scheduler, charp, 0644);