• Home
  • Raw
  • Download

Lines Matching +full:de +full:- +full:be

1 // SPDX-License-Identifier: GPL-2.0
33 struct address_space *mapping = page->mapping; in dir_commit_chunk()
34 struct inode *dir = mapping->host; in dir_commit_chunk()
37 if (pos+len > dir->i_size) { in dir_commit_chunk()
48 err = filemap_write_and_wait(dir->i_mapping); in sysv_handle_dirsync()
55 * Calls to dir_get_page()/unmap_and_put_page() must be nested according to the
59 * and must be treated accordingly for nesting purposes.
63 struct address_space *mapping = dir->i_mapping; in dir_get_page()
73 unsigned long pos = ctx->pos; in sysv_readdir()
75 struct super_block *sb = inode->i_sb; in sysv_readdir()
80 ctx->pos = pos = (pos + SYSV_DIRSIZE-1) & ~(SYSV_DIRSIZE-1); in sysv_readdir()
81 if (pos >= inode->i_size) in sysv_readdir()
89 struct sysv_dir_entry *de; in sysv_readdir() local
95 de = (struct sysv_dir_entry *)(kaddr+offset); in sysv_readdir()
96 limit = kaddr + PAGE_SIZE - SYSV_DIRSIZE; in sysv_readdir()
97 for ( ;(char*)de <= limit; de++, ctx->pos += sizeof(*de)) { in sysv_readdir()
98 char *name = de->name; in sysv_readdir()
100 if (!de->inode) in sysv_readdir()
104 fs16_to_cpu(SYSV_SB(sb), de->inode), in sysv_readdir()
115 /* compare strings: name[0..len-1] (not zero-terminated) and
116 * buffer[0..] (filled with zeroes up to buffer[0..maxlen-1])
131 * itself (as a parameter - res_dir). It does NOT read the inode of the
132 * entry - you'll have to do that yourself if you want to.
134 * On Success unmap_and_put_page() should be called on *res_page.
136 * sysv_find_entry() acts as a call to dir_get_page() and must be treated
141 const char * name = dentry->d_name.name; in sysv_find_entry()
142 int namelen = dentry->d_name.len; in sysv_find_entry()
143 struct inode * dir = d_inode(dentry->d_parent); in sysv_find_entry()
147 struct sysv_dir_entry *de; in sysv_find_entry() local
151 start = SYSV_I(dir)->i_dir_start_lookup; in sysv_find_entry()
160 de = (struct sysv_dir_entry *)kaddr; in sysv_find_entry()
161 kaddr += PAGE_SIZE - SYSV_DIRSIZE; in sysv_find_entry()
162 for ( ; (char *) de <= kaddr ; de++) { in sysv_find_entry()
163 if (!de->inode) in sysv_find_entry()
166 name, de->name)) in sysv_find_entry()
179 SYSV_I(dir)->i_dir_start_lookup = n; in sysv_find_entry()
181 return de; in sysv_find_entry()
186 struct inode *dir = d_inode(dentry->d_parent); in sysv_add_link()
187 const char * name = dentry->d_name.name; in sysv_add_link()
188 int namelen = dentry->d_name.len; in sysv_add_link()
190 struct sysv_dir_entry * de; in sysv_add_link() local
202 de = (struct sysv_dir_entry *)kaddr; in sysv_add_link()
203 kaddr += PAGE_SIZE - SYSV_DIRSIZE; in sysv_add_link()
204 while ((char *)de <= kaddr) { in sysv_add_link()
205 if (!de->inode) in sysv_add_link()
207 err = -EEXIST; in sysv_add_link()
208 if (namecompare(namelen, SYSV_NAMELEN, name, de->name)) in sysv_add_link()
210 de++; in sysv_add_link()
215 return -EINVAL; in sysv_add_link()
218 pos = page_offset(page) + offset_in_page(de); in sysv_add_link()
223 memcpy (de->name, name, namelen); in sysv_add_link()
224 memset (de->name + namelen, 0, SYSV_DIRSIZE - namelen - 2); in sysv_add_link()
225 de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), inode->i_ino); in sysv_add_link()
227 dir->i_mtime = inode_set_ctime_current(dir); in sysv_add_link()
238 int sysv_delete_entry(struct sysv_dir_entry *de, struct page *page) in sysv_delete_entry() argument
240 struct inode *inode = page->mapping->host; in sysv_delete_entry()
241 loff_t pos = page_offset(page) + offset_in_page(de); in sysv_delete_entry()
250 de->inode = 0; in sysv_delete_entry()
252 inode->i_mtime = inode_set_ctime_current(inode); in sysv_delete_entry()
259 struct page *page = grab_cache_page(inode->i_mapping, 0); in sysv_make_empty()
260 struct sysv_dir_entry * de; in sysv_make_empty() local
265 return -ENOMEM; in sysv_make_empty()
274 de = (struct sysv_dir_entry *) base; in sysv_make_empty()
275 de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), inode->i_ino); in sysv_make_empty()
276 strcpy(de->name,"."); in sysv_make_empty()
277 de++; in sysv_make_empty()
278 de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), dir->i_ino); in sysv_make_empty()
279 strcpy(de->name,".."); in sysv_make_empty()
294 struct super_block *sb = inode->i_sb; in sysv_empty_dir()
300 struct sysv_dir_entry *de; in sysv_empty_dir() local
306 de = (struct sysv_dir_entry *)kaddr; in sysv_empty_dir()
307 kaddr += PAGE_SIZE-SYSV_DIRSIZE; in sysv_empty_dir()
309 for ( ;(char *)de <= kaddr; de++) { in sysv_empty_dir()
310 if (!de->inode) in sysv_empty_dir()
313 if (de->name[0] != '.') in sysv_empty_dir()
315 if (!de->name[1]) { in sysv_empty_dir()
316 if (de->inode == cpu_to_fs16(SYSV_SB(sb), in sysv_empty_dir()
317 inode->i_ino)) in sysv_empty_dir()
321 if (de->name[1] != '.' || de->name[2]) in sysv_empty_dir()
334 int sysv_set_link(struct sysv_dir_entry *de, struct page *page, in sysv_set_link() argument
337 struct inode *dir = page->mapping->host; in sysv_set_link()
338 loff_t pos = page_offset(page) + offset_in_page(de); in sysv_set_link()
347 de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), inode->i_ino); in sysv_set_link()
349 dir->i_mtime = inode_set_ctime_current(dir); in sysv_set_link()
355 * Calls to dir_get_page()/unmap_and_put_page() must be nested according to the
358 * sysv_dotdot() acts as a call to dir_get_page() and must be treated
363 struct sysv_dir_entry *de = dir_get_page(dir, 0, p); in sysv_dotdot() local
365 if (IS_ERR(de)) in sysv_dotdot()
368 return de + 1; in sysv_dotdot()
374 struct sysv_dir_entry *de = sysv_find_entry (dentry, &page); in sysv_inode_by_name() local
377 if (de) { in sysv_inode_by_name()
378 res = fs16_to_cpu(SYSV_SB(dentry->d_sb), de->inode); in sysv_inode_by_name()
379 unmap_and_put_page(page, de); in sysv_inode_by_name()