From fb8751aba4474091bdc25a5cce462d526a403d72 Mon Sep 17 00:00:00 2001 From: haad Date: Tue, 18 May 2010 15:10:38 +0000 Subject: 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. --- sys/dev/dm/dm_target_error.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'sys/dev/dm/dm_target_error.c') diff --git a/sys/dev/dm/dm_target_error.c b/sys/dev/dm/dm_target_error.c index e93509a78ff..b539c259e10 100644 --- a/sys/dev/dm/dm_target_error.c +++ b/sys/dev/dm/dm_target_error.c @@ -1,4 +1,4 @@ -/* $NetBSD: dm_target_error.c,v 1.10 2010/01/04 00:12:22 haad Exp $ */ +/* $NetBSD: dm_target_error.c,v 1.11 2010/05/18 15:10:38 haad Exp $ */ /* * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -39,6 +39,15 @@ #include "dm.h" +/* dm_target_error.c */ +int dm_target_error_init(dm_dev_t *, void**, char *); +char * dm_target_error_status(void *); +int dm_target_error_strategy(dm_table_entry_t *, struct buf *); +int dm_target_error_sync(dm_table_entry_t *); +int dm_target_error_deps(dm_table_entry_t *, prop_array_t); +int dm_target_error_destroy(dm_table_entry_t *); +int dm_target_error_upcall(dm_table_entry_t *, struct buf *); + #ifdef DM_TARGET_MODULE /* * Every target can be compiled directly to dm driver or as a @@ -74,6 +83,7 @@ dm_target_error_modcmd(modcmd_t cmd, void *arg) dmt->init = &dm_target_error_init; dmt->status = &dm_target_error_status; dmt->strategy = &dm_target_error_strategy; + dmt->sync = &dm_target_error_sync; dmt->deps = &dm_target_error_deps; dmt->destroy = &dm_target_error_destroy; dmt->upcall = &dm_target_error_upcall; @@ -130,6 +140,13 @@ dm_target_error_strategy(dm_table_entry_t * table_en, struct buf * bp) return 0; } +/* Sync underlying disk caches. */ +int +dm_target_error_sync(dm_table_entry_t * table_en) +{ + + return 0; +} /* Doesn't do anything here. */ int dm_target_error_destroy(dm_table_entry_t * table_en) -- cgit