root/fs/ocfs2/dir.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ocfs2_add_entry

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

/* [<][>][^][v][top][bottom][index][help] */