Lines Matching refs:dir
23 static int bfs_add_entry(struct inode *dir, const unsigned char *name,
25 static struct buffer_head *bfs_find_entry(struct inode *dir,
31 struct inode *dir = file_inode(f); in bfs_readdir() local
40 dir->i_sb->s_id, dir->i_ino); in bfs_readdir()
44 while (ctx->pos < dir->i_size) { in bfs_readdir()
46 block = BFS_I(dir)->i_sblock + (ctx->pos >> BFS_BSIZE_BITS); in bfs_readdir()
47 bh = sb_bread(dir->i_sb, block); in bfs_readdir()
65 } while ((offset < BFS_BSIZE) && (ctx->pos < dir->i_size)); in bfs_readdir()
78 static int bfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in bfs_create() argument
83 struct super_block *s = dir->i_sb; in bfs_create()
99 inode_init_owner(inode, dir, mode); in bfs_create()
113 err = bfs_add_entry(dir, dentry->d_name.name, dentry->d_name.len, in bfs_create()
126 static struct dentry *bfs_lookup(struct inode *dir, struct dentry *dentry, in bfs_lookup() argument
132 struct bfs_sb_info *info = BFS_SB(dir->i_sb); in bfs_lookup()
138 bh = bfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, &de); in bfs_lookup()
142 inode = bfs_iget(dir->i_sb, ino); in bfs_lookup()
153 static int bfs_link(struct dentry *old, struct inode *dir, in bfs_link() argument
161 err = bfs_add_entry(dir, new->d_name.name, new->d_name.len, in bfs_link()
176 static int bfs_unlink(struct inode *dir, struct dentry *dentry) in bfs_unlink() argument
185 bh = bfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, &de); in bfs_unlink()
196 mark_buffer_dirty_inode(bh, dir); in bfs_unlink()
197 dir->i_ctime = dir->i_mtime = CURRENT_TIME_SEC; in bfs_unlink()
198 mark_inode_dirty(dir); in bfs_unlink()
199 inode->i_ctime = dir->i_ctime; in bfs_unlink()
276 static int bfs_add_entry(struct inode *dir, const unsigned char *name, in bfs_add_entry() argument
291 sblock = BFS_I(dir)->i_sblock; in bfs_add_entry()
292 eblock = BFS_I(dir)->i_eblock; in bfs_add_entry()
294 bh = sb_bread(dir->i_sb, block); in bfs_add_entry()
301 if (pos >= dir->i_size) { in bfs_add_entry()
302 dir->i_size += BFS_DIRENT_SIZE; in bfs_add_entry()
303 dir->i_ctime = CURRENT_TIME_SEC; in bfs_add_entry()
305 dir->i_mtime = CURRENT_TIME_SEC; in bfs_add_entry()
306 mark_inode_dirty(dir); in bfs_add_entry()
311 mark_buffer_dirty_inode(bh, dir); in bfs_add_entry()
329 static struct buffer_head *bfs_find_entry(struct inode *dir, in bfs_find_entry() argument
341 while (block * BFS_BSIZE + offset < dir->i_size) { in bfs_find_entry()
343 bh = sb_bread(dir->i_sb, BFS_I(dir)->i_sblock + block); in bfs_find_entry()