Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /* -*- mode: c; c-basic-offset: 8; -*-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * vim: noexpandtab sw=8 ts=8 sts=0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * dir.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * Function prototypes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * Copyright (C) 2002, 2004 Oracle.  All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #ifndef OCFS2_DIR_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define OCFS2_DIR_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) struct ocfs2_dx_hinfo {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	u32	major_hash;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	u32	minor_hash;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) struct ocfs2_dir_lookup_result {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	struct buffer_head		*dl_leaf_bh;	/* Unindexed leaf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 							 * block */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	struct ocfs2_dir_entry		*dl_entry;	/* Target dirent in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 							 * unindexed leaf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	struct buffer_head		*dl_dx_root_bh;	/* Root of indexed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 							 * tree */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	struct buffer_head		*dl_dx_leaf_bh;	/* Indexed leaf block */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	struct ocfs2_dx_entry		*dl_dx_entry;	/* Target dx_entry in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 							 * indexed leaf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	struct ocfs2_dx_hinfo		dl_hinfo;	/* Name hash results */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	struct buffer_head		*dl_prev_leaf_bh;/* Previous entry in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 							  * dir free space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 							  * list. NULL if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 							  * previous entry is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 							  * dx root block. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) void ocfs2_free_dir_lookup_result(struct ocfs2_dir_lookup_result *res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) int ocfs2_find_entry(const char *name, int namelen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 		     struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 		     struct ocfs2_dir_lookup_result *lookup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) int ocfs2_delete_entry(handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 		       struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 		       struct ocfs2_dir_lookup_result *res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) int __ocfs2_add_entry(handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 		      struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 		      const char *name, int namelen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 		      struct inode *inode, u64 blkno,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 		      struct buffer_head *parent_fe_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 		      struct ocfs2_dir_lookup_result *lookup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) static inline int ocfs2_add_entry(handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 				  struct dentry *dentry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 				  struct inode *inode, u64 blkno,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 				  struct buffer_head *parent_fe_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 				  struct ocfs2_dir_lookup_result *lookup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	return __ocfs2_add_entry(handle, d_inode(dentry->d_parent),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 				 dentry->d_name.name, dentry->d_name.len,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 				 inode, blkno, parent_fe_bh, lookup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) int ocfs2_update_entry(struct inode *dir, handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 		       struct ocfs2_dir_lookup_result *res,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 		       struct inode *new_entry_inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) int ocfs2_check_dir_for_entry(struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 			      const char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 			      int namelen);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) int ocfs2_empty_dir(struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) int ocfs2_find_files_on_disk(const char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 			     int namelen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 			     u64 *blkno,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 			     struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 			     struct ocfs2_dir_lookup_result *res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) int ocfs2_lookup_ino_from_name(struct inode *dir, const char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 			       int namelen, u64 *blkno);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) int ocfs2_readdir(struct file *file, struct dir_context *ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) int ocfs2_dir_foreach(struct inode *inode, struct dir_context *ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) int ocfs2_prepare_dir_for_insert(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 				 struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 				 struct buffer_head *parent_fe_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 				 const char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 				 int namelen,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 				 struct ocfs2_dir_lookup_result *lookup);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) struct ocfs2_alloc_context;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) int ocfs2_fill_new_dir(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		       handle_t *handle,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 		       struct inode *parent,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 		       struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 		       struct buffer_head *fe_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 		       struct ocfs2_alloc_context *data_ac,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 		       struct ocfs2_alloc_context *meta_ac);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) int ocfs2_dx_dir_truncate(struct inode *dir, struct buffer_head *di_bh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) struct ocfs2_dir_block_trailer *ocfs2_dir_trailer_from_size(int blocksize,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 							    void *data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) #endif /* OCFS2_DIR_H */