Lines Matching refs:inode
23 struct inode *inode, u32 cnid)
26 d_instantiate(dentry, inode);
30 static struct dentry *hfsplus_lookup(struct inode *dir, struct dentry *dentry,
33 struct inode *inode = NULL;
57 inode = NULL;
118 inode = hfsplus_iget(dir->i_sb, cnid);
119 if (IS_ERR(inode))
120 return ERR_CAST(inode);
121 if (S_ISREG(inode->i_mode))
122 HFSPLUS_I(inode)->linkid = linkid;
124 return d_splice_alias(inode, dentry);
132 struct inode *inode = file_inode(file);
133 struct super_block *sb = inode->i_sb;
141 if (file->f_pos >= inode->i_size)
152 hfsplus_cat_build_key_with_cnid(sb, fd.search_key, inode->i_ino);
186 if (ctx->pos >= inode->i_size)
192 if (be32_to_cpu(fd.key->cat.parent) != inode->i_ino) {
258 if (ctx->pos >= inode->i_size)
273 spin_lock(&HFSPLUS_I(inode)->open_dir_lock);
274 list_add(&rd->list, &HFSPLUS_I(inode)->open_dir_list);
275 spin_unlock(&HFSPLUS_I(inode)->open_dir_lock);
288 static int hfsplus_dir_release(struct inode *inode, struct file *file)
292 spin_lock(&HFSPLUS_I(inode)->open_dir_lock);
294 spin_unlock(&HFSPLUS_I(inode)->open_dir_lock);
300 static int hfsplus_link(struct dentry *src_dentry, struct inode *dst_dir,
304 struct inode *inode = d_inode(src_dentry);
305 struct inode *src_dir = d_inode(src_dentry->d_parent);
311 if (HFSPLUS_IS_RSRC(inode))
313 if (!S_ISREG(inode->i_mode))
317 if (inode->i_ino == (u32)(unsigned long)src_dentry->d_fsdata) {
323 res = hfsplus_rename_cat(inode->i_ino,
331 HFSPLUS_I(inode)->linkid = id;
335 &src_dentry->d_name, inode);
342 res = hfsplus_create_cat(cnid, dst_dir, &dst_dentry->d_name, inode);
346 inc_nlink(inode);
347 hfsplus_instantiate(dst_dentry, inode, cnid);
348 ihold(inode);
349 inode->i_ctime = current_time(inode);
350 mark_inode_dirty(inode);
358 static int hfsplus_unlink(struct inode *dir, struct dentry *dentry)
361 struct inode *inode = d_inode(dentry);
367 if (HFSPLUS_IS_RSRC(inode))
372 if (inode->i_ino == cnid &&
373 atomic_read(&HFSPLUS_I(inode)->opencnt)) {
375 str.len = sprintf(name, "temp%lu", inode->i_ino);
376 res = hfsplus_rename_cat(inode->i_ino,
380 inode->i_flags |= S_DEAD;
381 drop_nlink(inode);
389 if (inode->i_nlink > 0)
390 drop_nlink(inode);
391 if (inode->i_ino == cnid)
392 clear_nlink(inode);
393 if (!inode->i_nlink) {
394 if (inode->i_ino != cnid) {
396 if (!atomic_read(&HFSPLUS_I(inode)->opencnt)) {
397 res = hfsplus_delete_cat(inode->i_ino,
401 hfsplus_delete_inode(inode);
403 inode->i_flags |= S_DEAD;
405 hfsplus_delete_inode(inode);
408 inode->i_ctime = current_time(inode);
409 mark_inode_dirty(inode);
415 static int hfsplus_rmdir(struct inode *dir, struct dentry *dentry)
418 struct inode *inode = d_inode(dentry);
421 if (inode->i_size != 2)
425 res = hfsplus_delete_cat(inode->i_ino, dir, &dentry->d_name);
428 clear_nlink(inode);
429 inode->i_ctime = current_time(inode);
430 hfsplus_delete_inode(inode);
431 mark_inode_dirty(inode);
437 static int hfsplus_symlink(struct inode *dir, struct dentry *dentry,
441 struct inode *inode;
445 inode = hfsplus_new_inode(dir->i_sb, dir, S_IFLNK | S_IRWXUGO);
446 if (!inode)
449 res = page_symlink(inode, symname, strlen(symname) + 1);
453 res = hfsplus_create_cat(inode->i_ino, dir, &dentry->d_name, inode);
457 res = hfsplus_init_security(inode, dir, &dentry->d_name);
462 hfsplus_delete_cat(inode->i_ino, dir, &dentry->d_name);
466 hfsplus_instantiate(dentry, inode, inode->i_ino);
467 mark_inode_dirty(inode);
471 clear_nlink(inode);
472 hfsplus_delete_inode(inode);
473 iput(inode);
479 static int hfsplus_mknod(struct inode *dir, struct dentry *dentry,
483 struct inode *inode;
487 inode = hfsplus_new_inode(dir->i_sb, dir, mode);
488 if (!inode)
492 init_special_inode(inode, mode, rdev);
494 res = hfsplus_create_cat(inode->i_ino, dir, &dentry->d_name, inode);
498 res = hfsplus_init_security(inode, dir, &dentry->d_name);
503 hfsplus_delete_cat(inode->i_ino, dir, &dentry->d_name);
507 hfsplus_instantiate(dentry, inode, inode->i_ino);
508 mark_inode_dirty(inode);
512 clear_nlink(inode);
513 hfsplus_delete_inode(inode);
514 iput(inode);
520 static int hfsplus_create(struct inode *dir, struct dentry *dentry, umode_t mode,
526 static int hfsplus_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
531 static int hfsplus_rename(struct inode *old_dir, struct dentry *old_dentry,
532 struct inode *new_dir, struct dentry *new_dentry,