123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /* -*- mode: c; c-basic-offset: 8; -*-
- * vim: noexpandtab sw=8 ts=8 sts=0:
- *
- * refcounttree.h
- *
- * Copyright (C) 2009 Oracle. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- */
- #ifndef OCFS2_REFCOUNTTREE_H
- #define OCFS2_REFCOUNTTREE_H
- struct ocfs2_refcount_tree {
- struct rb_node rf_node;
- u64 rf_blkno;
- u32 rf_generation;
- struct rw_semaphore rf_sem;
- struct ocfs2_lock_res rf_lockres;
- struct kref rf_getcnt;
- int rf_removed;
- /* the following 4 fields are used by caching_info. */
- struct ocfs2_caching_info rf_ci;
- spinlock_t rf_lock;
- struct mutex rf_io_mutex;
- struct super_block *rf_sb;
- };
- void ocfs2_purge_refcount_trees(struct ocfs2_super *osb);
- int ocfs2_lock_refcount_tree(struct ocfs2_super *osb, u64 ref_blkno, int rw,
- struct ocfs2_refcount_tree **tree,
- struct buffer_head **ref_bh);
- void ocfs2_unlock_refcount_tree(struct ocfs2_super *osb,
- struct ocfs2_refcount_tree *tree,
- int rw);
- int ocfs2_decrease_refcount(struct inode *inode,
- handle_t *handle, u32 cpos, u32 len,
- struct ocfs2_alloc_context *meta_ac,
- struct ocfs2_cached_dealloc_ctxt *dealloc,
- int delete);
- int ocfs2_prepare_refcount_change_for_del(struct inode *inode,
- struct buffer_head *di_bh,
- u64 phys_blkno,
- u32 clusters,
- int *credits,
- struct ocfs2_alloc_context **meta_ac);
- int ocfs2_refcount_cow(struct inode *inode, struct buffer_head *di_bh,
- u32 cpos, u32 write_len, u32 max_cpos);
- #endif /* OCFS2_REFCOUNTTREE_H */
|