summaryrefslogtreecommitdiff
path: root/sys/dev/dm/dm_target_zero.c
diff options
context:
space:
mode:
authorhaad <haad@NetBSD.org>2010-05-18 15:10:38 +0000
committerhaad <haad@NetBSD.org>2010-05-18 15:10:38 +0000
commitfb8751aba4474091bdc25a5cce462d526a403d72 (patch)
treeffedb891877783c792ef6cf3dfa4f8b7b2790683 /sys/dev/dm/dm_target_zero.c
parent923bf0dda043333f52a68e794027abbb3f111b5a (diff)
Add support for DIOCCACHESYNC ioctl for dm devices. Add new sync function
pointer to dm_target_t because that is the only part of dm which know real block device. disk_ioctl_switch parses whole device table and for every entry it calls particular sync routine which propagates DIOCCACHESYNC to real disk. While I was here implement some KNF fixes and remove unneeded symbols from dm.h. Problem reported on port-xen@ by Hugo Silva.
Diffstat (limited to 'sys/dev/dm/dm_target_zero.c')
-rw-r--r--sys/dev/dm/dm_target_zero.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/sys/dev/dm/dm_target_zero.c b/sys/dev/dm/dm_target_zero.c
index 494988fb785..ddeea82a8a4 100644
--- a/sys/dev/dm/dm_target_zero.c
+++ b/sys/dev/dm/dm_target_zero.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dm_target_zero.c,v 1.10 2010/01/04 00:12:22 haad Exp $ */
+/* $NetBSD: dm_target_zero.c,v 1.11 2010/05/18 15:10:38 haad Exp $ */
/*
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -40,6 +40,15 @@
#include "dm.h"
+/* dm_target_zero.c */
+int dm_target_zero_init(dm_dev_t *, void**, char *);
+char * dm_target_zero_status(void *);
+int dm_target_zero_strategy(dm_table_entry_t *, struct buf *);
+int dm_target_zero_sync(dm_table_entry_t *);
+int dm_target_zero_destroy(dm_table_entry_t *);
+int dm_target_zero_deps(dm_table_entry_t *, prop_array_t);
+int dm_target_zero_upcall(dm_table_entry_t *, struct buf *);
+
#ifdef DM_TARGET_MODULE
/*
* Every target can be compiled directly to dm driver or as a
@@ -75,6 +84,7 @@ dm_target_zero_modcmd(modcmd_t cmd, void *arg)
dmt->init = &dm_target_zero_init;
dmt->status = &dm_target_zero_status;
dmt->strategy = &dm_target_zero_strategy;
+ dmt->sync = &dm_target_zero_sync;
dmt->deps = &dm_target_zero_deps;
dmt->destroy = &dm_target_zero_destroy;
dmt->upcall = &dm_target_zero_upcall;
@@ -139,6 +149,13 @@ dm_target_zero_strategy(dm_table_entry_t * table_en, struct buf * bp)
return 0;
}
+/* Sync underlying disk caches. */
+int
+dm_target_zero_sync(dm_table_entry_t * table_en)
+{
+
+ return 0;
+}
/* Doesn't not need to do anything here. */
int
dm_target_zero_destroy(dm_table_entry_t * table_en)