summaryrefslogtreecommitdiff
path: root/sbin/pdisk
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2016-01-16 14:54:07 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2016-01-16 14:54:07 +0000
commit25e0100ede9f702576aef70a52d18d2a6522cb5b (patch)
tree962ada17be8921e5f3bc989055ff0706fa455abb /sbin/pdisk
parent93a7e82b135f84d29c5c05397f36ff9fd8bbcf53 (diff)
Another couple for the attic.
Diffstat (limited to 'sbin/pdisk')
-rw-r--r--sbin/pdisk/deblock_media.c336
-rw-r--r--sbin/pdisk/deblock_media.h61
2 files changed, 0 insertions, 397 deletions
diff --git a/sbin/pdisk/deblock_media.c b/sbin/pdisk/deblock_media.c
deleted file mode 100644
index adc66022fd2..00000000000
--- a/sbin/pdisk/deblock_media.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/* $OpenBSD: deblock_media.c,v 1.4 2016/01/11 07:54:07 jasper Exp $ */
-
-/*
- * deblock_media.c -
- *
- * Written by Eryk Vershen
- */
-
-/*
- * Copyright 1997,1998 by Apple Computer, Inc.
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both the copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * APPLE COMPUTER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL APPLE COMPUTER BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
- * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-
-// for malloc() & free()
-#include <stdlib.h>
-// for memcpy()
-#include <string.h>
-
-#include "deblock_media.h"
-
-
-/*
- * Defines
- */
-
-
-/*
- * Types
- */
-typedef struct deblock_media *DEBLOCK_MEDIA;
-
-struct deblock_media {
- struct media m;
- long need_filtering;
- MEDIA next_media;
- unsigned long next_block_size;
- unsigned char *buffer;
-};
-
-struct deblock_globals {
- long exists;
- long kind;
-};
-
-
-/*
- * Global Constants
- */
-
-
-/*
- * Global Variables
- */
-static long deblock_inited = 0;
-static struct deblock_globals deblock_info;
-
-/*
- * Forward declarations
- */
-void deblock_init(void);
-DEBLOCK_MEDIA new_deblock_media(void);
-long read_deblock_media(MEDIA m, long long offset, unsigned long count, void *address);
-long write_deblock_media(MEDIA m, long long offset, unsigned long count, void *address);
-long close_deblock_media(MEDIA m);
-long os_reload_deblock_media(MEDIA m);
-
-
-/*
- * Routines
- */
-void
-deblock_init(void)
-{
- if (deblock_inited != 0) {
- return;
- }
- deblock_inited = 1;
-
- deblock_info.kind = allocate_media_kind();
-}
-
-
-DEBLOCK_MEDIA
-new_deblock_media(void)
-{
- return (DEBLOCK_MEDIA) new_media(sizeof(struct deblock_media));
-}
-
-
-MEDIA
-open_deblock_media(long new_block_size, MEDIA m)
-{
- DEBLOCK_MEDIA a;
- unsigned long block_size;
-
- if (deblock_inited == 0) {
- deblock_init();
- }
-
- a = 0;
- if (m != 0) {
- block_size = media_granularity(m);
-
- if (new_block_size == block_size) {
- return m;
-
- } else if (new_block_size > block_size) {
- if ((new_block_size % block_size) == 0) {
- /* no filtering necessary */
- a = new_deblock_media();
- if (a != 0) {
- a->need_filtering = 0;
- a->next_block_size = block_size;
- a->buffer = 0;
- }
- } else {
- /* too hard to bother with */
- }
- } else /* new_block_size < block_size */ {
- if ((block_size % new_block_size) == 0) {
- /* block & unblock */
- a = new_deblock_media();
- if (a != 0) {
- a->need_filtering = 1;
- a->next_block_size = block_size;
- a->buffer = malloc(block_size);
- }
- } else {
- /* too hard to bother with */
- }
- }
- if (a != 0) {
- a->m.kind = deblock_info.kind;
- a->m.grain = new_block_size;
- a->m.size_in_bytes = media_total_size(m);
- a->m.do_read = read_deblock_media;
- a->m.do_write = write_deblock_media;
- a->m.do_close = close_deblock_media;
- a->m.do_os_reload = os_reload_deblock_media;
- a->next_media = m;
- }
- }
- return (MEDIA) a;
-}
-
-
-long
-read_deblock_media(MEDIA m, long long offset, unsigned long count, void *address)
-{
- DEBLOCK_MEDIA a;
- long rtn_value;
- unsigned long next_size;
- unsigned long partial_offset;
- unsigned long partial_count;
- long long cur_offset;
- unsigned long remainder;
- unsigned char *addr;
-
- a = (DEBLOCK_MEDIA) m;
- rtn_value = 0;
- if (a == 0) {
- /* no media */
- } else if (a->m.kind != deblock_info.kind) {
- /* wrong kind - XXX need to error here - this is an internal problem */
- } else if (count <= 0 || count % a->m.grain != 0) {
- /* can't handle size */
- } else if (offset < 0 || offset % a->m.grain != 0) {
- /* can't handle offset */
- } else if (a->need_filtering == 0) {
- rtn_value = read_media(a->next_media, offset, count, address);
- } else {
- next_size = a->next_block_size;
- addr = address;
- cur_offset = offset;
- remainder = count;
- rtn_value = 1;
-
- /* read partial */
- partial_offset = cur_offset % next_size;
- if (partial_offset != 0) {
- partial_count = next_size - partial_offset;
- if (partial_count > remainder) {
- partial_count = remainder;
- }
- rtn_value = read_media(a->next_media, cur_offset - partial_offset, next_size, a->buffer);
- if (rtn_value != 0) {
- memcpy (addr, a->buffer + partial_offset, partial_count);
- addr += partial_count;
- cur_offset += partial_count;
- remainder -= partial_count;
- }
- }
- /* read fulls as long as needed */
- if (rtn_value != 0 && remainder > next_size) {
- partial_count = remainder - (remainder % next_size);
- rtn_value = read_media(a->next_media, cur_offset, partial_count, addr);
- addr += partial_count;
- cur_offset += partial_count;
- remainder -= partial_count;
- }
- /* read partial */
- if (rtn_value != 0 && remainder > 0) {
- partial_count = remainder;
- rtn_value = read_media(a->next_media, cur_offset, next_size, a->buffer);
- if (rtn_value != 0) {
- memcpy (addr, a->buffer, partial_count);
- }
- }
- }
- return rtn_value;
-}
-
-
-long
-write_deblock_media(MEDIA m, long long offset, unsigned long count, void *address)
-{
- DEBLOCK_MEDIA a;
- long rtn_value;
- unsigned long next_size;
- unsigned long partial_offset;
- unsigned long partial_count;
- long long cur_offset;
- unsigned long remainder;
- unsigned char *addr;
-
- a = (DEBLOCK_MEDIA) m;
- rtn_value = 0;
- if (a == 0) {
- /* no media */
- } else if (a->m.kind != deblock_info.kind) {
- /* wrong kind - XXX need to error here - this is an internal problem */
- } else if (count <= 0 || count % a->m.grain != 0) {
- /* can't handle size */
- } else if (offset < 0 || offset % a->m.grain != 0) {
- /* can't handle offset */
- } else if (a->need_filtering == 0) {
- rtn_value = write_media(a->next_media, offset, count, address);
- } else {
- next_size = a->next_block_size;
- addr = address;
- cur_offset = offset;
- remainder = count;
- rtn_value = 1;
-
- /* write partial */
- partial_offset = cur_offset % next_size;
- if (partial_offset != 0) {
- partial_count = next_size - partial_offset;
- if (partial_count > remainder) {
- partial_count = remainder;
- }
- rtn_value = read_media(a->next_media, cur_offset - partial_offset, next_size, a->buffer);
- if (rtn_value != 0) {
- memcpy (a->buffer + partial_offset, addr, partial_count);
- rtn_value = write_media(a->next_media, cur_offset - partial_offset, next_size, a->buffer);
- addr += partial_count;
- cur_offset += partial_count;
- remainder -= partial_count;
- }
- }
- /* write fulls as long as needed */
- if (rtn_value != 0 && remainder > next_size) {
- partial_count = remainder - (remainder % next_size);
- rtn_value = write_media(a->next_media, cur_offset, partial_count, addr);
- addr += partial_count;
- cur_offset += partial_count;
- remainder -= partial_count;
- }
- /* write partial */
- if (rtn_value != 0 && remainder > 0) {
- partial_count = remainder;
- rtn_value = read_media(a->next_media, cur_offset, next_size, a->buffer);
- if (rtn_value != 0) {
- memcpy (a->buffer, addr, partial_count);
- rtn_value = write_media(a->next_media, cur_offset, next_size, a->buffer);
- }
- }
- }
- /* recompute size to handle file media */
- a->m.size_in_bytes = media_total_size(a->next_media);
- return rtn_value;
-}
-
-
-long
-close_deblock_media(MEDIA m)
-{
- DEBLOCK_MEDIA a;
-
- a = (DEBLOCK_MEDIA) m;
- if (a == 0) {
- return 0;
- } else if (a->m.kind != deblock_info.kind) {
- /* XXX need to error here - this is an internal problem */
- return 0;
- }
-
- close_media(a->next_media);
- free(a->buffer);
- return 1;
-}
-
-
-long
-os_reload_deblock_media(MEDIA m)
-{
- DEBLOCK_MEDIA a;
-
- a = (DEBLOCK_MEDIA) m;
- if (a == 0) {
- return 0;
- } else if (a->m.kind != deblock_info.kind) {
- /* XXX need to error here - this is an internal problem */
- return 0;
- }
-
- os_reload_media(a->next_media);
- return 1;
-}
diff --git a/sbin/pdisk/deblock_media.h b/sbin/pdisk/deblock_media.h
deleted file mode 100644
index 1256d3c13be..00000000000
--- a/sbin/pdisk/deblock_media.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* $OpenBSD: deblock_media.h,v 1.4 2016/01/11 07:54:07 jasper Exp $ */
-
-/*
- * deblock_media.h -
- *
- * Written by Eryk Vershen
- */
-
-/*
- * Copyright 1997,1998 by Apple Computer, Inc.
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appears in all copies and
- * that both the copyright notice and this permission notice appear in
- * supporting documentation.
- *
- * APPLE COMPUTER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL APPLE COMPUTER BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
- * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifndef __deblock_media__
-#define __deblock_media__
-
-#include "media.h"
-
-
-/*
- * Defines
- */
-
-
-/*
- * Types
- */
-
-
-/*
- * Global Constants
- */
-
-
-/*
- * Global Variables
- */
-
-
-/*
- * Forward declarations
- */
-MEDIA open_deblock_media(long new_block_size, MEDIA m);
-
-#endif /* __deblock_media__ */