mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 11:29:36 +03:00
e6603b7c1f
Prior tob39c22b
, which was first generally available in the 0.6.5 release asb39c22b
, ZoL never actually submitted synchronous read or write requests to the Linux block layer. This means the vdev_disk_dio_is_sync() function had always returned false and, therefore, the completion in dio_request_t.dr_comp was never actually used. Inb39c22b
, synchronous ZIO operations were translated to synchronous BIO requests in vdev_disk_io_start(). The follow-on commits5592404
andaa159af
fixed several problems introduced byb39c22b
. In particular,5592404
introduced the new flag parameter "wait" to __vdev_disk_physio() but under ZoL, since vdev_disk_physio() is never actually used, the wait flag was always zero so the new code had no effect other than to cause a bug in the use of the dio_request_t.dr_comp which was fixed byaa159af
. The original rationale for introducing synchronous operations inb39c22b
was to hurry certains requests through the BIO layer which would have otherwise been subject to its unplug timer which would increase the latency. This behavior of the unplug timer, however, went away during the transition of the plug/unplug system between kernels 2.6.32 and 2.6.39. To handle the unplug timer behavior on 2.6.32-2.6.35 kernels the BIO_RW_UNPLUG flag is used as a hint to suppress the plugging behavior. For kernels 2.6.36-2.6.38, the REQ_UNPLUG macro will be available and ise used for the same purpose. Signed-off-by: Tim Chase <tim@chase2k.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #4858
48 lines
1.5 KiB
C
48 lines
1.5 KiB
C
/*
|
|
* CDDL HEADER START
|
|
*
|
|
* The contents of this file are subject to the terms of the
|
|
* Common Development and Distribution License (the "License").
|
|
* You may not use this file except in compliance with the License.
|
|
*
|
|
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
|
* or http://www.opensolaris.org/os/licensing.
|
|
* See the License for the specific language governing permissions
|
|
* and limitations under the License.
|
|
*
|
|
* When distributing Covered Code, include this CDDL HEADER in each
|
|
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
|
* If applicable, add the following below this CDDL HEADER, with the
|
|
* fields enclosed by brackets "[]" replaced with your own identifying
|
|
* information: Portions Copyright [yyyy] [name of copyright owner]
|
|
*
|
|
* CDDL HEADER END
|
|
*/
|
|
/*
|
|
* Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC.
|
|
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
|
|
* Written by Brian Behlendorf <behlendorf1@llnl.gov>.
|
|
* LLNL-CODE-403049.
|
|
*/
|
|
|
|
#ifndef _SYS_VDEV_DISK_H
|
|
#define _SYS_VDEV_DISK_H
|
|
|
|
#ifdef _KERNEL
|
|
#include <sys/vdev.h>
|
|
|
|
typedef struct vdev_disk {
|
|
ddi_devid_t vd_devid;
|
|
char *vd_minor;
|
|
struct block_device *vd_bdev;
|
|
} vdev_disk_t;
|
|
|
|
#ifndef __linux__
|
|
extern int vdev_disk_physio(struct block_device *, caddr_t,
|
|
size_t, uint64_t, int);
|
|
extern int vdev_disk_read_rootlabel(char *, char *, nvlist_t **);
|
|
#endif
|
|
|
|
#endif /* _KERNEL */
|
|
#endif /* _SYS_VDEV_DISK_H */
|