diff options
Diffstat (limited to 'db/hash/hash_reclaim.c')
-rw-r--r-- | db/hash/hash_reclaim.c | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/db/hash/hash_reclaim.c b/db/hash/hash_reclaim.c deleted file mode 100644 index 8a692645c..000000000 --- a/db/hash/hash_reclaim.c +++ /dev/null @@ -1,96 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 1996,2007 Oracle. All rights reserved. - * - * $Id: hash_reclaim.c,v 12.9 2007/05/17 15:15:38 bostic Exp $ - */ - -#include "db_config.h" - -#include "db_int.h" -#include "dbinc/db_page.h" -#include "dbinc/hash.h" - -/* - * __ham_reclaim -- - * Reclaim the pages from a subdatabase and return them to the - * parent free list. For now, we link each freed page on the list - * separately. If people really store hash databases in subdatabases - * and do a lot of creates and deletes, this is going to be a problem, - * because hash needs chunks of contiguous storage. We may eventually - * need to go to a model where we maintain the free list with chunks of - * contiguous pages as well. - * - * PUBLIC: int __ham_reclaim __P((DB *, DB_TXN *txn)); - */ -int -__ham_reclaim(dbp, txn) - DB *dbp; - DB_TXN *txn; -{ - DBC *dbc; - HASH_CURSOR *hcp; - int ret; - - /* Open up a cursor that we'll use for traversing. */ - if ((ret = __db_cursor(dbp, txn, &dbc, 0)) != 0) - return (ret); - hcp = (HASH_CURSOR *)dbc->internal; - - if ((ret = __ham_get_meta(dbc)) != 0) - goto err; - - /* Write lock the metapage for deallocations. */ - if ((ret = __ham_dirty_meta(dbc, 0)) != 0) - goto err; - - /* Avoid locking every page, we have the handle locked exclusive. */ - F_SET(dbc, DBC_DONTLOCK); - - if ((ret = __ham_traverse(dbc, - DB_LOCK_WRITE, __db_reclaim_callback, dbc, 1)) != 0) - goto err; - if ((ret = __dbc_close(dbc)) != 0) - goto err; - if ((ret = __ham_release_meta(dbc)) != 0) - goto err; - return (0); - -err: if (hcp->hdr != NULL) - (void)__ham_release_meta(dbc); - (void)__dbc_close(dbc); - return (ret); -} - -/* - * __ham_truncate -- - * Reclaim the pages from a subdatabase and return them to the - * parent free list. - * - * PUBLIC: int __ham_truncate __P((DBC *, u_int32_t *)); - */ -int -__ham_truncate(dbc, countp) - DBC *dbc; - u_int32_t *countp; -{ - db_trunc_param trunc; - int ret, t_ret; - - if ((ret = __ham_get_meta(dbc)) != 0) - return (ret); - - trunc.count = 0; - trunc.dbc = dbc; - - ret = __ham_traverse(dbc, - DB_LOCK_WRITE, __db_truncate_callback, &trunc, 1); - - if ((t_ret = __ham_release_meta(dbc)) != 0 && ret == 0) - ret = t_ret; - - if (countp != NULL) - *countp = trunc.count; - return (ret); -} |