nfsd4: Fix filp leak
[linux-2.6.git] / fs / ocfs2 / refcounttree.h
index d09d64b..c8ce46f 100644 (file)
@@ -21,14 +21,14 @@ struct ocfs2_refcount_tree {
        struct rb_node rf_node;
        u64 rf_blkno;
        u32 rf_generation;
+       struct kref rf_getcnt;
        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 ocfs2_caching_info rf_ci;
        struct mutex rf_io_mutex;
        struct super_block *rf_sb;
 };
@@ -47,12 +47,13 @@ int ocfs2_decrease_refcount(struct inode *inode,
                            struct ocfs2_cached_dealloc_ctxt *dealloc,
                            int delete);
 int ocfs2_prepare_refcount_change_for_del(struct inode *inode,
-                                         struct buffer_head *di_bh,
+                                         u64 refcount_loc,
                                          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,
+                                         int *ref_blocks);
+int ocfs2_refcount_cow(struct inode *inode,
+                      struct file *filep, struct buffer_head *di_bh,
                       u32 cpos, u32 write_len, u32 max_cpos);
 
 typedef int (ocfs2_post_refcount_func)(struct inode *inode,
@@ -83,4 +84,24 @@ int ocfs2_refcount_cow_xattr(struct inode *inode,
                             struct buffer_head *ref_root_bh,
                             u32 cpos, u32 write_len,
                             struct ocfs2_post_refcount *post);
+int ocfs2_add_refcount_flag(struct inode *inode,
+                           struct ocfs2_extent_tree *data_et,
+                           struct ocfs2_caching_info *ref_ci,
+                           struct buffer_head *ref_root_bh,
+                           u32 cpos, u32 p_cluster, u32 num_clusters,
+                           struct ocfs2_cached_dealloc_ctxt *dealloc,
+                           struct ocfs2_post_refcount *post);
+int ocfs2_remove_refcount_tree(struct inode *inode, struct buffer_head *di_bh);
+int ocfs2_try_remove_refcount_tree(struct inode *inode,
+                                  struct buffer_head *di_bh);
+int ocfs2_increase_refcount(handle_t *handle,
+                           struct ocfs2_caching_info *ci,
+                           struct buffer_head *ref_root_bh,
+                           u64 cpos, u32 len,
+                           struct ocfs2_alloc_context *meta_ac,
+                           struct ocfs2_cached_dealloc_ctxt *dealloc);
+int ocfs2_reflink_ioctl(struct inode *inode,
+                       const char __user *oldname,
+                       const char __user *newname,
+                       bool preserve);
 #endif /* OCFS2_REFCOUNTTREE_H */