tag | line | file | source code |
dir | 343 | drivers/scsi/aha1740.c | ecb[ecbno].dir= direction; |
dir | 124 | drivers/scsi/aha1740.h | dir:1, /* Direction of transfer 1 = datain */ |
dir | 246 | fs/ext/freelists.c | struct inode * ext_new_inode(const struct inode * dir) |
dir | 254 | fs/ext/freelists.c | if (!dir || !(inode=get_empty_inode())) |
dir | 256 | fs/ext/freelists.c | sb = dir->i_sb; |
dir | 293 | fs/ext/freelists.c | inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->egid; |
dir | 87 | fs/ext/namei.c | static struct buffer_head * ext_find_entry(struct inode * dir, |
dir | 96 | fs/ext/namei.c | if (!dir) |
dir | 105 | fs/ext/namei.c | bh = ext_bread(dir,0,0); |
dir | 114 | fs/ext/namei.c | while (offset < dir->i_size) { |
dir | 118 | fs/ext/namei.c | bh = ext_bread(dir,offset>>BLOCK_SIZE_BITS,0); |
dir | 130 | fs/ext/namei.c | dir->i_dev, dir->i_ino, offset, de->rec_len, de->name_len); |
dir | 140 | fs/ext/namei.c | if (offset + de->rec_len < dir->i_size && |
dir | 157 | fs/ext/namei.c | int ext_lookup(struct inode * dir,const char * name, int len, |
dir | 165 | fs/ext/namei.c | if (!dir) |
dir | 167 | fs/ext/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 168 | fs/ext/namei.c | iput(dir); |
dir | 171 | fs/ext/namei.c | if (!(bh = ext_find_entry(dir,name,len,&de,NULL,NULL))) { |
dir | 172 | fs/ext/namei.c | iput(dir); |
dir | 177 | fs/ext/namei.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 178 | fs/ext/namei.c | iput(dir); |
dir | 181 | fs/ext/namei.c | iput(dir); |
dir | 195 | fs/ext/namei.c | static struct buffer_head * ext_add_entry(struct inode * dir, |
dir | 205 | fs/ext/namei.c | if (!dir) |
dir | 216 | fs/ext/namei.c | bh = ext_bread(dir,0,0); |
dir | 223 | fs/ext/namei.c | if ((char *)de >= BLOCK_SIZE+bh->b_data && offset < dir->i_size) { |
dir | 229 | fs/ext/namei.c | bh = ext_bread(dir,offset>>BLOCK_SIZE_BITS,0); |
dir | 234 | fs/ext/namei.c | if (offset >= dir->i_size) { |
dir | 247 | fs/ext/namei.c | dir->i_size += de->rec_len; |
dir | 248 | fs/ext/namei.c | dir->i_dirt = 1; |
dir | 250 | fs/ext/namei.c | dir->i_ctime = CURRENT_TIME; |
dir | 259 | fs/ext/namei.c | bh = ext_bread(dir,offset>>BLOCK_SIZE_BITS,1); |
dir | 267 | fs/ext/namei.c | dir->i_size += de->rec_len; |
dir | 268 | fs/ext/namei.c | dir->i_dirt = 1; |
dir | 270 | fs/ext/namei.c | dir->i_ctime = CURRENT_TIME; |
dir | 278 | fs/ext/namei.c | dir->i_dev, dir->i_ino, offset, de->rec_len, de->name_len); |
dir | 295 | fs/ext/namei.c | dir->i_mtime = dir->i_ctime = CURRENT_TIME; |
dir | 310 | fs/ext/namei.c | int ext_create(struct inode * dir,const char * name, int len, int mode, |
dir | 318 | fs/ext/namei.c | if (!dir) |
dir | 320 | fs/ext/namei.c | inode = ext_new_inode(dir); |
dir | 322 | fs/ext/namei.c | iput(dir); |
dir | 328 | fs/ext/namei.c | bh = ext_add_entry(dir,name,len,&de); |
dir | 333 | fs/ext/namei.c | iput(dir); |
dir | 339 | fs/ext/namei.c | iput(dir); |
dir | 344 | fs/ext/namei.c | int ext_mknod(struct inode * dir, const char * name, int len, int mode, int rdev) |
dir | 350 | fs/ext/namei.c | if (!dir) |
dir | 352 | fs/ext/namei.c | bh = ext_find_entry(dir,name,len,&de,NULL,NULL); |
dir | 355 | fs/ext/namei.c | iput(dir); |
dir | 358 | fs/ext/namei.c | inode = ext_new_inode(dir); |
dir | 360 | fs/ext/namei.c | iput(dir); |
dir | 370 | fs/ext/namei.c | if (dir->i_mode & S_ISGID) |
dir | 387 | fs/ext/namei.c | bh = ext_add_entry(dir,name,len,&de); |
dir | 392 | fs/ext/namei.c | iput(dir); |
dir | 398 | fs/ext/namei.c | iput(dir); |
dir | 403 | fs/ext/namei.c | int ext_mkdir(struct inode * dir, const char * name, int len, int mode) |
dir | 409 | fs/ext/namei.c | bh = ext_find_entry(dir,name,len,&de,NULL,NULL); |
dir | 412 | fs/ext/namei.c | iput(dir); |
dir | 415 | fs/ext/namei.c | inode = ext_new_inode(dir); |
dir | 417 | fs/ext/namei.c | iput(dir); |
dir | 431 | fs/ext/namei.c | iput(dir); |
dir | 443 | fs/ext/namei.c | de->inode = dir->i_ino; |
dir | 451 | fs/ext/namei.c | if (dir->i_mode & S_ISGID) |
dir | 454 | fs/ext/namei.c | bh = ext_add_entry(dir,name,len,&de); |
dir | 456 | fs/ext/namei.c | iput(dir); |
dir | 463 | fs/ext/namei.c | dir->i_nlink++; |
dir | 464 | fs/ext/namei.c | dir->i_dirt = 1; |
dir | 465 | fs/ext/namei.c | iput(dir); |
dir | 531 | fs/ext/namei.c | int ext_rmdir(struct inode * dir, const char * name, int len) |
dir | 539 | fs/ext/namei.c | bh = ext_find_entry(dir,name,len,&de,&pde,&nde); |
dir | 544 | fs/ext/namei.c | if (!(inode = iget(dir->i_sb, de->inode))) |
dir | 546 | fs/ext/namei.c | if ((dir->i_mode & S_ISVTX) && current->euid && |
dir | 549 | fs/ext/namei.c | if (inode->i_dev != dir->i_dev) |
dir | 551 | fs/ext/namei.c | if (inode == dir) /* we may not delete ".", but "../dir" is ok */ |
dir | 573 | fs/ext/namei.c | dir->i_nlink--; |
dir | 574 | fs/ext/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 575 | fs/ext/namei.c | dir->i_dirt=1; |
dir | 578 | fs/ext/namei.c | iput(dir); |
dir | 584 | fs/ext/namei.c | int ext_unlink(struct inode * dir, const char * name, int len) |
dir | 593 | fs/ext/namei.c | bh = ext_find_entry(dir,name,len,&de,&pde,&nde); |
dir | 596 | fs/ext/namei.c | if (!(inode = iget(dir->i_sb, de->inode))) |
dir | 599 | fs/ext/namei.c | if ((dir->i_mode & S_ISVTX) && !suser() && |
dir | 601 | fs/ext/namei.c | current->euid != dir->i_uid) |
dir | 617 | fs/ext/namei.c | dir->i_ctime = dir->i_mtime = inode->i_ctime; |
dir | 618 | fs/ext/namei.c | dir->i_dirt = 1; |
dir | 623 | fs/ext/namei.c | iput(dir); |
dir | 627 | fs/ext/namei.c | int ext_symlink(struct inode * dir, const char * name, int len, const char * symname) |
dir | 635 | fs/ext/namei.c | if (!(inode = ext_new_inode(dir))) { |
dir | 636 | fs/ext/namei.c | iput(dir); |
dir | 643 | fs/ext/namei.c | iput(dir); |
dir | 657 | fs/ext/namei.c | bh = ext_find_entry(dir,name,len,&de,NULL,NULL); |
dir | 663 | fs/ext/namei.c | iput(dir); |
dir | 666 | fs/ext/namei.c | bh = ext_add_entry(dir,name,len,&de); |
dir | 671 | fs/ext/namei.c | iput(dir); |
dir | 677 | fs/ext/namei.c | iput(dir); |
dir | 682 | fs/ext/namei.c | int ext_link(struct inode * oldinode, struct inode * dir, const char * name, int len) |
dir | 689 | fs/ext/namei.c | iput(dir); |
dir | 694 | fs/ext/namei.c | iput(dir); |
dir | 697 | fs/ext/namei.c | bh = ext_find_entry(dir,name,len,&de,NULL,NULL); |
dir | 700 | fs/ext/namei.c | iput(dir); |
dir | 704 | fs/ext/namei.c | bh = ext_add_entry(dir,name,len,&de); |
dir | 706 | fs/ext/namei.c | iput(dir); |
dir | 713 | fs/ext/namei.c | iput(dir); |
dir | 47 | fs/ext/symlink.c | static int ext_follow_link(struct inode * dir, struct inode * inode, |
dir | 54 | fs/ext/symlink.c | if (!dir) { |
dir | 55 | fs/ext/symlink.c | dir = current->root; |
dir | 56 | fs/ext/symlink.c | dir->i_count++; |
dir | 59 | fs/ext/symlink.c | iput(dir); |
dir | 63 | fs/ext/symlink.c | iput(dir); |
dir | 68 | fs/ext/symlink.c | iput(dir); |
dir | 74 | fs/ext/symlink.c | iput(dir); |
dir | 79 | fs/ext/symlink.c | error = open_namei(bh->b_data,flag,mode,res_inode,dir); |
dir | 26 | fs/ext2/dcache.c | unsigned long dir; |
dir | 54 | fs/ext2/dcache.c | #define hash(dev,dir) ((dev ^ dir) % HASH_QUEUES) |
dir | 84 | fs/ext2/dcache.c | unsigned long dir, |
dir | 90 | fs/ext2/dcache.c | p->dir != dir || p->len != len || |
dir | 108 | fs/ext2/dcache.c | p->dev, p->dir, p->name); |
dir | 189 | fs/ext2/dcache.c | remove_from_queue (hash (p->dev, p->dir), p); |
dir | 202 | fs/ext2/dcache.c | unsigned long ext2_dcache_lookup (unsigned short dev, unsigned long dir, |
dir | 216 | fs/ext2/dcache.c | printk ("dcache_lookup (%04x, %lu, %s, %d)\n", dev, dir, our_name, len); |
dir | 218 | fs/ext2/dcache.c | queue = hash (dev, dir); |
dir | 219 | fs/ext2/dcache.c | if ((p = find_name (queue, dev, dir, our_name, len))) { |
dir | 252 | fs/ext2/dcache.c | void ext2_dcache_add (unsigned short dev, unsigned long dir, const char * name, |
dir | 262 | fs/ext2/dcache.c | dev, dir, name, len, ino); |
dir | 266 | fs/ext2/dcache.c | queue = hash (dev, dir); |
dir | 267 | fs/ext2/dcache.c | if ((p = find_name (queue, dev, dir, name, len))) { |
dir | 268 | fs/ext2/dcache.c | p->dir = dir; |
dir | 290 | fs/ext2/dcache.c | remove_from_queue (hash (p->dev, p->dir), p); |
dir | 294 | fs/ext2/dcache.c | p->dir = dir; |
dir | 312 | fs/ext2/dcache.c | void ext2_dcache_remove (unsigned short dev, unsigned long dir, |
dir | 321 | fs/ext2/dcache.c | printk ("dcache_remove (%04x, %lu, %s, %d)\n", dev, dir, name, len); |
dir | 325 | fs/ext2/dcache.c | queue = hash (dev, dir); |
dir | 326 | fs/ext2/dcache.c | if ((p = find_name (queue, dev, dir, name, len))) { |
dir | 68 | fs/ext2/dir.c | int ext2_check_dir_entry (char * function, struct inode * dir, |
dir | 80 | fs/ext2/dir.c | else if (dir && ((char *) de - bh->b_data) + de->rec_len > |
dir | 81 | fs/ext2/dir.c | dir->i_sb->s_blocksize) |
dir | 85 | fs/ext2/dir.c | ext2_error (dir->i_sb, function, "bad directory entry: %s\n" |
dir | 339 | fs/ext2/ialloc.c | struct inode * ext2_new_inode (const struct inode * dir, int mode) |
dir | 349 | fs/ext2/ialloc.c | if (!dir || !(inode = get_empty_inode ())) |
dir | 351 | fs/ext2/ialloc.c | sb = dir->i_sb; |
dir | 392 | fs/ext2/ialloc.c | i = dir->u.ext2_i.i_block_group; |
dir | 411 | fs/ext2/ialloc.c | i = dir->u.ext2_i.i_block_group + 2; |
dir | 471 | fs/ext2/ialloc.c | inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->egid; |
dir | 477 | fs/ext2/ialloc.c | inode->u.ext2_i.i_flags = dir->u.ext2_i.i_flags; |
dir | 65 | fs/ext2/namei.c | static struct buffer_head * ext2_find_entry (struct inode * dir, |
dir | 76 | fs/ext2/namei.c | if (!dir) |
dir | 78 | fs/ext2/namei.c | sb = dir->i_sb; |
dir | 86 | fs/ext2/namei.c | bh = ext2_bread (dir, 0, 0, &err); |
dir | 91 | fs/ext2/namei.c | while (offset < dir->i_size) { |
dir | 94 | fs/ext2/namei.c | bh = ext2_bread (dir, offset >> EXT2_BLOCK_SIZE_BITS(sb), 0, &err); |
dir | 101 | fs/ext2/namei.c | if (! ext2_check_dir_entry ("ext2_find_entry", dir, de, bh, |
dir | 117 | fs/ext2/namei.c | int ext2_lookup (struct inode * dir, const char * name, int len, |
dir | 125 | fs/ext2/namei.c | if (!dir) |
dir | 127 | fs/ext2/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 128 | fs/ext2/namei.c | iput (dir); |
dir | 132 | fs/ext2/namei.c | if (!(ino = ext2_dcache_lookup (dir->i_dev, dir->i_ino, name, len))) { |
dir | 134 | fs/ext2/namei.c | if (!(bh = ext2_find_entry (dir, name, len, &de))) { |
dir | 135 | fs/ext2/namei.c | iput (dir); |
dir | 140 | fs/ext2/namei.c | ext2_dcache_add (dir->i_dev, dir->i_ino, de->name, |
dir | 147 | fs/ext2/namei.c | if (!(*result = iget (dir->i_sb, ino))) { |
dir | 148 | fs/ext2/namei.c | iput (dir); |
dir | 151 | fs/ext2/namei.c | iput (dir); |
dir | 165 | fs/ext2/namei.c | static struct buffer_head * ext2_add_entry (struct inode * dir, |
dir | 178 | fs/ext2/namei.c | if (!dir) |
dir | 180 | fs/ext2/namei.c | sb = dir->i_sb; |
dir | 192 | fs/ext2/namei.c | if (dir->i_size == 0) |
dir | 197 | fs/ext2/namei.c | bh = ext2_bread (dir, 0, 0, err); |
dir | 208 | fs/ext2/namei.c | bh = ext2_bread (dir, offset >> EXT2_BLOCK_SIZE_BITS(sb), 1, err); |
dir | 211 | fs/ext2/namei.c | if (dir->i_size <= offset) { |
dir | 212 | fs/ext2/namei.c | if (dir->i_size == 0) { |
dir | 222 | fs/ext2/namei.c | dir->i_size = offset + sb->s_blocksize; |
dir | 223 | fs/ext2/namei.c | dir->i_dirt = 1; |
dir | 225 | fs/ext2/namei.c | dir->i_ctime = CURRENT_TIME; |
dir | 234 | fs/ext2/namei.c | if (! ext2_check_dir_entry ("ext2_add_entry", dir, de, bh, |
dir | 270 | fs/ext2/namei.c | dir->i_mtime = dir->i_ctime = CURRENT_TIME; |
dir | 271 | fs/ext2/namei.c | dir->i_dirt = 1; |
dir | 288 | fs/ext2/namei.c | static int ext2_delete_entry (struct ext2_dir_entry * dir, |
dir | 301 | fs/ext2/namei.c | if (de == dir) { |
dir | 303 | fs/ext2/namei.c | pde->rec_len += dir->rec_len; |
dir | 305 | fs/ext2/namei.c | dir->inode = 0; |
dir | 315 | fs/ext2/namei.c | int ext2_create (struct inode * dir,const char * name, int len, int mode, |
dir | 324 | fs/ext2/namei.c | if (!dir) |
dir | 326 | fs/ext2/namei.c | inode = ext2_new_inode (dir, mode); |
dir | 328 | fs/ext2/namei.c | iput (dir); |
dir | 334 | fs/ext2/namei.c | bh = ext2_add_entry (dir, name, len, &de, &err); |
dir | 339 | fs/ext2/namei.c | iput (dir); |
dir | 344 | fs/ext2/namei.c | ext2_dcache_add (dir->i_dev, dir->i_ino, de->name, de->name_len, |
dir | 348 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 353 | fs/ext2/namei.c | iput (dir); |
dir | 358 | fs/ext2/namei.c | int ext2_mknod (struct inode * dir, const char * name, int len, int mode, |
dir | 366 | fs/ext2/namei.c | if (!dir) |
dir | 368 | fs/ext2/namei.c | bh = ext2_find_entry (dir, name, len, &de); |
dir | 371 | fs/ext2/namei.c | iput (dir); |
dir | 374 | fs/ext2/namei.c | inode = ext2_new_inode (dir, mode); |
dir | 376 | fs/ext2/namei.c | iput (dir); |
dir | 386 | fs/ext2/namei.c | if (dir->i_mode & S_ISGID) |
dir | 408 | fs/ext2/namei.c | bh = ext2_add_entry (dir, name, len, &de, &err); |
dir | 413 | fs/ext2/namei.c | iput (dir); |
dir | 418 | fs/ext2/namei.c | ext2_dcache_add (dir->i_dev, dir->i_ino, de->name, de->name_len, |
dir | 422 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 427 | fs/ext2/namei.c | iput (dir); |
dir | 432 | fs/ext2/namei.c | int ext2_mkdir (struct inode * dir, const char * name, int len, int mode) |
dir | 439 | fs/ext2/namei.c | if (!dir) |
dir | 441 | fs/ext2/namei.c | bh = ext2_find_entry (dir, name, len, &de); |
dir | 444 | fs/ext2/namei.c | iput (dir); |
dir | 447 | fs/ext2/namei.c | if (dir->i_nlink >= EXT2_LINK_MAX) { |
dir | 448 | fs/ext2/namei.c | iput (dir); |
dir | 451 | fs/ext2/namei.c | inode = ext2_new_inode (dir, S_IFDIR); |
dir | 453 | fs/ext2/namei.c | iput (dir); |
dir | 463 | fs/ext2/namei.c | iput (dir); |
dir | 476 | fs/ext2/namei.c | de->inode = dir->i_ino; |
dir | 484 | fs/ext2/namei.c | if (dir->i_mode & S_ISGID) |
dir | 487 | fs/ext2/namei.c | bh = ext2_add_entry (dir, name, len, &de, &err); |
dir | 489 | fs/ext2/namei.c | iput (dir); |
dir | 497 | fs/ext2/namei.c | ext2_dcache_add (dir->i_dev, dir->i_ino, de->name, de->name_len, |
dir | 501 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 505 | fs/ext2/namei.c | dir->i_nlink++; |
dir | 506 | fs/ext2/namei.c | dir->i_dirt = 1; |
dir | 507 | fs/ext2/namei.c | iput (dir); |
dir | 567 | fs/ext2/namei.c | int ext2_rmdir (struct inode * dir, const char * name, int len) |
dir | 575 | fs/ext2/namei.c | if (!dir) |
dir | 578 | fs/ext2/namei.c | bh = ext2_find_entry (dir, name, len, &de); |
dir | 583 | fs/ext2/namei.c | if (!(inode = iget (dir->i_sb, de->inode))) |
dir | 585 | fs/ext2/namei.c | if (inode->i_dev != dir->i_dev) |
dir | 594 | fs/ext2/namei.c | if ((dir->i_mode & S_ISVTX) && current->euid && |
dir | 597 | fs/ext2/namei.c | if (inode == dir) /* we may not delete ".", but "../dir" is ok */ |
dir | 622 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 635 | fs/ext2/namei.c | ext2_dcache_remove (dir->i_dev, dir->i_ino, de->name, de->name_len); |
dir | 639 | fs/ext2/namei.c | dir->i_nlink--; |
dir | 640 | fs/ext2/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 641 | fs/ext2/namei.c | dir->i_dirt = 1; |
dir | 643 | fs/ext2/namei.c | iput (dir); |
dir | 649 | fs/ext2/namei.c | int ext2_unlink (struct inode * dir, const char * name, int len) |
dir | 657 | fs/ext2/namei.c | if (!dir) |
dir | 661 | fs/ext2/namei.c | bh = ext2_find_entry (dir, name, len, &de); |
dir | 664 | fs/ext2/namei.c | if (!(inode = iget (dir->i_sb, de->inode))) |
dir | 676 | fs/ext2/namei.c | if ((dir->i_mode & S_ISVTX) && !suser() && |
dir | 678 | fs/ext2/namei.c | current->euid != dir->i_uid) |
dir | 690 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 695 | fs/ext2/namei.c | ext2_dcache_remove (dir->i_dev, dir->i_ino, de->name, de->name_len); |
dir | 697 | fs/ext2/namei.c | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 698 | fs/ext2/namei.c | dir->i_dirt = 1; |
dir | 701 | fs/ext2/namei.c | inode->i_ctime = dir->i_ctime; |
dir | 706 | fs/ext2/namei.c | iput (dir); |
dir | 710 | fs/ext2/namei.c | int ext2_symlink (struct inode * dir, const char * name, int len, |
dir | 721 | fs/ext2/namei.c | if (!(inode = ext2_new_inode (dir, S_IFLNK))) { |
dir | 722 | fs/ext2/namei.c | iput (dir); |
dir | 736 | fs/ext2/namei.c | iput (dir); |
dir | 759 | fs/ext2/namei.c | bh = ext2_find_entry (dir, name, len, &de); |
dir | 765 | fs/ext2/namei.c | iput (dir); |
dir | 768 | fs/ext2/namei.c | bh = ext2_add_entry (dir, name, len, &de, &err); |
dir | 773 | fs/ext2/namei.c | iput (dir); |
dir | 778 | fs/ext2/namei.c | ext2_dcache_add (dir->i_dev, dir->i_ino, de->name, de->name_len, |
dir | 782 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 787 | fs/ext2/namei.c | iput (dir); |
dir | 792 | fs/ext2/namei.c | int ext2_link (struct inode * oldinode, struct inode * dir, |
dir | 801 | fs/ext2/namei.c | iput (dir); |
dir | 806 | fs/ext2/namei.c | iput (dir); |
dir | 809 | fs/ext2/namei.c | bh = ext2_find_entry (dir, name, len, &de); |
dir | 812 | fs/ext2/namei.c | iput (dir); |
dir | 816 | fs/ext2/namei.c | bh = ext2_add_entry (dir, name, len, &de, &err); |
dir | 818 | fs/ext2/namei.c | iput (dir); |
dir | 824 | fs/ext2/namei.c | ext2_dcache_add (dir->i_dev, dir->i_ino, de->name, de->name_len, |
dir | 828 | fs/ext2/namei.c | if (IS_SYNC(dir)) { |
dir | 833 | fs/ext2/namei.c | iput (dir); |
dir | 48 | fs/ext2/symlink.c | static int ext2_follow_link(struct inode * dir, struct inode * inode, |
dir | 56 | fs/ext2/symlink.c | if (!dir) { |
dir | 57 | fs/ext2/symlink.c | dir = current->root; |
dir | 58 | fs/ext2/symlink.c | dir->i_count++; |
dir | 61 | fs/ext2/symlink.c | iput (dir); |
dir | 65 | fs/ext2/symlink.c | iput (dir); |
dir | 70 | fs/ext2/symlink.c | iput (dir); |
dir | 76 | fs/ext2/symlink.c | iput (dir); |
dir | 84 | fs/ext2/symlink.c | error = open_namei (link, flag, mode, res_inode, dir); |
dir | 1100 | fs/hpfs/hpfs_fs.c | static int hpfs_lookup(struct inode *dir, const char *name, int len, |
dir | 1111 | fs/hpfs/hpfs_fs.c | if (dir == 0) |
dir | 1113 | fs/hpfs/hpfs_fs.c | if (!S_ISDIR(dir->i_mode)) |
dir | 1122 | fs/hpfs/hpfs_fs.c | de = map_dirent(dir, dir->i_hpfs_dno, "\001\001", 2, &qbh); |
dir | 1124 | fs/hpfs/hpfs_fs.c | de = map_dirent(dir, |
dir | 1125 | fs/hpfs/hpfs_fs.c | fnode_dno(dir->i_dev, dir->i_hpfs_parent_dir), |
dir | 1128 | fs/hpfs/hpfs_fs.c | de = map_dirent(dir, dir->i_hpfs_dno, name, len, &qbh); |
dir | 1150 | fs/hpfs/hpfs_fs.c | if (!(inode = iget(dir->i_sb, ino))) |
dir | 1183 | fs/hpfs/hpfs_fs.c | iput(dir); |
dir | 1192 | fs/hpfs/hpfs_fs.c | iput(dir); |
dir | 209 | fs/isofs/dir.c | cache.dir = inode->i_ino; |
dir | 65 | fs/isofs/namei.c | static struct buffer_head * isofs_find_entry(struct inode * dir, |
dir | 68 | fs/isofs/namei.c | unsigned long bufsize = ISOFS_BUFFER_SIZE(dir); |
dir | 69 | fs/isofs/namei.c | unsigned char bufbits = ISOFS_BUFFER_BITS(dir); |
dir | 81 | fs/isofs/namei.c | if (!dir) return NULL; |
dir | 83 | fs/isofs/namei.c | if (!(block = dir->u.isofs_i.i_first_extent)) return NULL; |
dir | 88 | fs/isofs/namei.c | block = isofs_bmap(dir,f_pos >> bufbits); |
dir | 90 | fs/isofs/namei.c | if (!block || !(bh = bread(dir->i_dev,block,bufsize))) return NULL; |
dir | 92 | fs/isofs/namei.c | while (f_pos < dir->i_size) { |
dir | 94 | fs/isofs/namei.c | backlink = dir->i_ino; |
dir | 105 | fs/isofs/namei.c | block = isofs_bmap(dir,f_pos>>bufbits); |
dir | 106 | fs/isofs/namei.c | if (!block || !(bh = bread(dir->i_dev,block,bufsize))) |
dir | 124 | fs/isofs/namei.c | block = isofs_bmap(dir,f_pos>>bufbits); |
dir | 125 | fs/isofs/namei.c | if (!block || !(bh = bread(dir->i_dev,block,bufsize))) { |
dir | 135 | fs/isofs/namei.c | inode_number = dir->i_ino; |
dir | 144 | fs/isofs/namei.c | dir->i_sb->s_firstdatazone << bufbits, |
dir | 145 | fs/isofs/namei.c | dir->i_ino); |
dir | 147 | fs/isofs/namei.c | if((dir->i_sb->u.isofs_sb.s_firstdatazone |
dir | 148 | fs/isofs/namei.c | << bufbits) != dir->i_ino) |
dir | 149 | fs/isofs/namei.c | inode_number = dir->u.isofs_i.i_backlink; |
dir | 151 | fs/isofs/namei.c | inode_number = dir->i_ino; |
dir | 158 | fs/isofs/namei.c | rrflag = get_rock_ridge_filename(de, &dpnt, &dlen, dir); |
dir | 162 | fs/isofs/namei.c | if(dir->i_sb->u.isofs_sb.s_mapping == 'n') { |
dir | 190 | fs/isofs/namei.c | isofs_lookup_grandparent(dir, |
dir | 191 | fs/isofs/namei.c | find_rock_ridge_relocation(de,dir)); |
dir | 210 | fs/isofs/namei.c | int isofs_lookup(struct inode * dir,const char * name, int len, |
dir | 217 | fs/isofs/namei.c | printk("lookup: %x %d\n",dir->i_ino, len); |
dir | 220 | fs/isofs/namei.c | if (!dir) |
dir | 223 | fs/isofs/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 224 | fs/isofs/namei.c | iput(dir); |
dir | 229 | fs/isofs/namei.c | if (dir->i_dev == cache.dev && |
dir | 230 | fs/isofs/namei.c | dir->i_ino == cache.dir && |
dir | 235 | fs/isofs/namei.c | ino_back = dir->i_ino; |
dir | 244 | fs/isofs/namei.c | if (!(bh = isofs_find_entry(dir,name,len, &ino, &ino_back))) { |
dir | 245 | fs/isofs/namei.c | iput(dir); |
dir | 251 | fs/isofs/namei.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 252 | fs/isofs/namei.c | iput(dir); |
dir | 262 | fs/isofs/namei.c | if (ino_back && !(*result)->i_pipe && (*result)->i_sb == dir->i_sb) { |
dir | 266 | fs/isofs/namei.c | iput(dir); |
dir | 45 | fs/isofs/symlink.c | static int isofs_follow_link(struct inode * dir, struct inode * inode, |
dir | 51 | fs/isofs/symlink.c | if (!dir) { |
dir | 52 | fs/isofs/symlink.c | dir = current->root; |
dir | 53 | fs/isofs/symlink.c | dir->i_count++; |
dir | 56 | fs/isofs/symlink.c | iput(dir); |
dir | 61 | fs/isofs/symlink.c | iput(dir); |
dir | 67 | fs/isofs/symlink.c | iput(dir); |
dir | 74 | fs/isofs/symlink.c | error = open_namei(pnt,flag,mode,res_inode,dir); |
dir | 181 | fs/minix/bitmap.c | struct inode * minix_new_inode(const struct inode * dir) |
dir | 188 | fs/minix/bitmap.c | if (!dir || !(inode = get_empty_inode())) |
dir | 190 | fs/minix/bitmap.c | sb = dir->i_sb; |
dir | 217 | fs/minix/bitmap.c | inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->egid; |
dir | 68 | fs/minix/namei.c | static struct buffer_head * minix_find_entry(struct inode * dir, |
dir | 76 | fs/minix/namei.c | if (!dir || !dir->i_sb) |
dir | 78 | fs/minix/namei.c | info = &dir->i_sb->u.minix_sb; |
dir | 88 | fs/minix/namei.c | while (block*BLOCK_SIZE+offset < dir->i_size) { |
dir | 90 | fs/minix/namei.c | bh = minix_bread(dir,block,0); |
dir | 111 | fs/minix/namei.c | int minix_lookup(struct inode * dir,const char * name, int len, |
dir | 119 | fs/minix/namei.c | if (!dir) |
dir | 121 | fs/minix/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 122 | fs/minix/namei.c | iput(dir); |
dir | 125 | fs/minix/namei.c | if (!(bh = minix_find_entry(dir,name,len,&de))) { |
dir | 126 | fs/minix/namei.c | iput(dir); |
dir | 131 | fs/minix/namei.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 132 | fs/minix/namei.c | iput(dir); |
dir | 135 | fs/minix/namei.c | iput(dir); |
dir | 149 | fs/minix/namei.c | static int minix_add_entry(struct inode * dir, |
dir | 162 | fs/minix/namei.c | if (!dir || !dir->i_sb) |
dir | 164 | fs/minix/namei.c | info = &dir->i_sb->u.minix_sb; |
dir | 178 | fs/minix/namei.c | bh = minix_bread(dir,block,1); |
dir | 184 | fs/minix/namei.c | if (block*bh->b_size + offset > dir->i_size) { |
dir | 186 | fs/minix/namei.c | dir->i_size = block*bh->b_size + offset; |
dir | 187 | fs/minix/namei.c | dir->i_dirt = 1; |
dir | 195 | fs/minix/namei.c | dir->i_mtime = dir->i_ctime = CURRENT_TIME; |
dir | 213 | fs/minix/namei.c | int minix_create(struct inode * dir,const char * name, int len, int mode, |
dir | 222 | fs/minix/namei.c | if (!dir) |
dir | 224 | fs/minix/namei.c | inode = minix_new_inode(dir); |
dir | 226 | fs/minix/namei.c | iput(dir); |
dir | 232 | fs/minix/namei.c | error = minix_add_entry(dir,name,len, &bh ,&de); |
dir | 237 | fs/minix/namei.c | iput(dir); |
dir | 243 | fs/minix/namei.c | iput(dir); |
dir | 248 | fs/minix/namei.c | int minix_mknod(struct inode * dir, const char * name, int len, int mode, int rdev) |
dir | 255 | fs/minix/namei.c | if (!dir) |
dir | 257 | fs/minix/namei.c | bh = minix_find_entry(dir,name,len,&de); |
dir | 260 | fs/minix/namei.c | iput(dir); |
dir | 263 | fs/minix/namei.c | inode = minix_new_inode(dir); |
dir | 265 | fs/minix/namei.c | iput(dir); |
dir | 275 | fs/minix/namei.c | if (dir->i_mode & S_ISGID) |
dir | 289 | fs/minix/namei.c | error = minix_add_entry(dir, name, len, &bh, &de); |
dir | 294 | fs/minix/namei.c | iput(dir); |
dir | 300 | fs/minix/namei.c | iput(dir); |
dir | 305 | fs/minix/namei.c | int minix_mkdir(struct inode * dir, const char * name, int len, int mode) |
dir | 313 | fs/minix/namei.c | if (!dir || !dir->i_sb) { |
dir | 314 | fs/minix/namei.c | iput(dir); |
dir | 317 | fs/minix/namei.c | info = &dir->i_sb->u.minix_sb; |
dir | 318 | fs/minix/namei.c | bh = minix_find_entry(dir,name,len,&de); |
dir | 321 | fs/minix/namei.c | iput(dir); |
dir | 324 | fs/minix/namei.c | if (dir->i_nlink >= MINIX_LINK_MAX) { |
dir | 325 | fs/minix/namei.c | iput(dir); |
dir | 328 | fs/minix/namei.c | inode = minix_new_inode(dir); |
dir | 330 | fs/minix/namei.c | iput(dir); |
dir | 337 | fs/minix/namei.c | iput(dir); |
dir | 347 | fs/minix/namei.c | de->inode = dir->i_ino; |
dir | 353 | fs/minix/namei.c | if (dir->i_mode & S_ISGID) |
dir | 356 | fs/minix/namei.c | error = minix_add_entry(dir, name, len, &bh, &de); |
dir | 358 | fs/minix/namei.c | iput(dir); |
dir | 365 | fs/minix/namei.c | dir->i_nlink++; |
dir | 366 | fs/minix/namei.c | dir->i_dirt = 1; |
dir | 367 | fs/minix/namei.c | iput(dir); |
dir | 431 | fs/minix/namei.c | int minix_rmdir(struct inode * dir, const char * name, int len) |
dir | 439 | fs/minix/namei.c | bh = minix_find_entry(dir,name,len,&de); |
dir | 444 | fs/minix/namei.c | if (!(inode = iget(dir->i_sb, de->inode))) |
dir | 446 | fs/minix/namei.c | if ((dir->i_mode & S_ISVTX) && current->euid && |
dir | 449 | fs/minix/namei.c | if (inode->i_dev != dir->i_dev) |
dir | 451 | fs/minix/namei.c | if (inode == dir) /* we may not delete ".", but "../dir" is ok */ |
dir | 475 | fs/minix/namei.c | dir->i_nlink--; |
dir | 476 | fs/minix/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 477 | fs/minix/namei.c | dir->i_dirt=1; |
dir | 480 | fs/minix/namei.c | iput(dir); |
dir | 486 | fs/minix/namei.c | int minix_unlink(struct inode * dir, const char * name, int len) |
dir | 496 | fs/minix/namei.c | bh = minix_find_entry(dir,name,len,&de); |
dir | 499 | fs/minix/namei.c | if (!(inode = iget(dir->i_sb, de->inode))) |
dir | 511 | fs/minix/namei.c | if ((dir->i_mode & S_ISVTX) && !suser() && |
dir | 513 | fs/minix/namei.c | current->euid != dir->i_uid) |
dir | 526 | fs/minix/namei.c | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 527 | fs/minix/namei.c | dir->i_dirt = 1; |
dir | 529 | fs/minix/namei.c | inode->i_ctime = dir->i_ctime; |
dir | 535 | fs/minix/namei.c | iput(dir); |
dir | 539 | fs/minix/namei.c | int minix_symlink(struct inode * dir, const char * name, int len, const char * symname) |
dir | 547 | fs/minix/namei.c | if (!(inode = minix_new_inode(dir))) { |
dir | 548 | fs/minix/namei.c | iput(dir); |
dir | 555 | fs/minix/namei.c | iput(dir); |
dir | 569 | fs/minix/namei.c | bh = minix_find_entry(dir,name,len,&de); |
dir | 575 | fs/minix/namei.c | iput(dir); |
dir | 578 | fs/minix/namei.c | i = minix_add_entry(dir, name, len, &bh, &de); |
dir | 583 | fs/minix/namei.c | iput(dir); |
dir | 589 | fs/minix/namei.c | iput(dir); |
dir | 594 | fs/minix/namei.c | int minix_link(struct inode * oldinode, struct inode * dir, const char * name, int len) |
dir | 602 | fs/minix/namei.c | iput(dir); |
dir | 607 | fs/minix/namei.c | iput(dir); |
dir | 610 | fs/minix/namei.c | bh = minix_find_entry(dir,name,len,&de); |
dir | 613 | fs/minix/namei.c | iput(dir); |
dir | 617 | fs/minix/namei.c | error = minix_add_entry(dir, name, len, &bh, &de); |
dir | 619 | fs/minix/namei.c | iput(dir); |
dir | 626 | fs/minix/namei.c | iput(dir); |
dir | 41 | fs/minix/symlink.c | static int minix_follow_link(struct inode * dir, struct inode * inode, |
dir | 48 | fs/minix/symlink.c | if (!dir) { |
dir | 49 | fs/minix/symlink.c | dir = current->root; |
dir | 50 | fs/minix/symlink.c | dir->i_count++; |
dir | 53 | fs/minix/symlink.c | iput(dir); |
dir | 57 | fs/minix/symlink.c | iput(dir); |
dir | 63 | fs/minix/symlink.c | iput(dir); |
dir | 68 | fs/minix/symlink.c | iput(dir); |
dir | 73 | fs/minix/symlink.c | error = open_namei(bh->b_data,flag,mode,res_inode,dir); |
dir | 267 | fs/msdos/misc.c | int msdos_get_entry(struct inode *dir, off_t *pos,struct buffer_head **bh, |
dir | 275 | fs/msdos/misc.c | if ((sector = msdos_smap(dir,offset >> SECTOR_BITS)) == -1) |
dir | 282 | fs/msdos/misc.c | if (!(*bh = msdos_sread(dir->i_dev,sector,&data))) { |
dir | 455 | fs/msdos/misc.c | int msdos_parent_ino(struct inode *dir,int locked) |
dir | 460 | fs/msdos/misc.c | if (!S_ISDIR(dir->i_mode)) panic("Non-directory fed to m_p_i"); |
dir | 461 | fs/msdos/misc.c | if (dir->i_ino == MSDOS_ROOT_INO) return dir->i_ino; |
dir | 463 | fs/msdos/misc.c | if ((current = raw_scan(dir->i_sb,MSDOS_I(dir)->i_start,MSDOS_DOTDOT, |
dir | 470 | fs/msdos/misc.c | if ((prev = raw_scan(dir->i_sb,current,MSDOS_DOTDOT,&zero,NULL, |
dir | 475 | fs/msdos/misc.c | if ((error = raw_scan(dir->i_sb,prev,NULL,¤t,&nr,NULL, |
dir | 491 | fs/msdos/misc.c | int msdos_subdirs(struct inode *dir) |
dir | 496 | fs/msdos/misc.c | if (dir->i_ino == MSDOS_ROOT_INO) |
dir | 497 | fs/msdos/misc.c | (void) raw_scan_root(dir->i_sb,NULL,&count,NULL,NULL,NULL); |
dir | 499 | fs/msdos/misc.c | if (!MSDOS_I(dir)->i_start) return 0; /* in mkdir */ |
dir | 500 | fs/msdos/misc.c | else (void) raw_scan_nonroot(dir->i_sb,MSDOS_I(dir)->i_start, |
dir | 512 | fs/msdos/misc.c | int msdos_scan(struct inode *dir,char *name,struct buffer_head **res_bh, |
dir | 518 | fs/msdos/misc.c | res = raw_scan(dir->i_sb,MSDOS_I(dir)->i_start,name,NULL,ino, |
dir | 520 | fs/msdos/misc.c | else res = raw_scan(dir->i_sb,MSDOS_I(dir)->i_start,NULL,NULL,ino, |
dir | 93 | fs/msdos/namei.c | static int msdos_find(struct inode *dir,const char *name,int len, |
dir | 99 | fs/msdos/namei.c | if ((res = msdos_format_name(MSDOS_SB(dir->i_sb)->name_check,name,len, |
dir | 101 | fs/msdos/namei.c | return msdos_scan(dir,msdos_name,bh,de,ino); |
dir | 105 | fs/msdos/namei.c | int msdos_lookup(struct inode *dir,const char *name,int len, |
dir | 114 | fs/msdos/namei.c | if (!dir) return -ENOENT; |
dir | 115 | fs/msdos/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 116 | fs/msdos/namei.c | iput(dir); |
dir | 120 | fs/msdos/namei.c | *result = dir; |
dir | 124 | fs/msdos/namei.c | ino = msdos_parent_ino(dir,0); |
dir | 125 | fs/msdos/namei.c | iput(dir); |
dir | 127 | fs/msdos/namei.c | if (!(*result = iget(dir->i_sb,ino))) return -EACCES; |
dir | 130 | fs/msdos/namei.c | if ((res = msdos_find(dir,name,len,&bh,&de,&ino)) < 0) { |
dir | 131 | fs/msdos/namei.c | iput(dir); |
dir | 136 | fs/msdos/namei.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 137 | fs/msdos/namei.c | iput(dir); |
dir | 142 | fs/msdos/namei.c | iput(dir); |
dir | 149 | fs/msdos/namei.c | fs_panic(dir->i_sb,"msdos_lookup: Can't happen"); |
dir | 150 | fs/msdos/namei.c | iput(dir); |
dir | 154 | fs/msdos/namei.c | iput(dir); |
dir | 161 | fs/msdos/namei.c | static int msdos_create_entry(struct inode *dir,char *name,int is_dir, |
dir | 168 | fs/msdos/namei.c | if ((res = msdos_scan(dir,NULL,&bh,&de,&ino)) < 0) { |
dir | 170 | fs/msdos/namei.c | if (dir->i_ino == MSDOS_ROOT_INO) return -ENOSPC; |
dir | 171 | fs/msdos/namei.c | if ((res = msdos_add_cluster(dir)) < 0) return res; |
dir | 172 | fs/msdos/namei.c | if ((res = msdos_scan(dir,NULL,&bh,&de,&ino)) < 0) return res; |
dir | 177 | fs/msdos/namei.c | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 178 | fs/msdos/namei.c | dir->i_dirt = 1; |
dir | 182 | fs/msdos/namei.c | date_unix2dos(dir->i_mtime,&de->time,&de->date); |
dir | 185 | fs/msdos/namei.c | if ((*result = iget(dir->i_sb,ino)) != NULL) |
dir | 196 | fs/msdos/namei.c | int msdos_create(struct inode *dir,const char *name,int len,int mode, |
dir | 204 | fs/msdos/namei.c | if (!dir) return -ENOENT; |
dir | 205 | fs/msdos/namei.c | if ((res = msdos_format_name(MSDOS_SB(dir->i_sb)->name_check,name,len, |
dir | 207 | fs/msdos/namei.c | iput(dir); |
dir | 211 | fs/msdos/namei.c | if (msdos_scan(dir,msdos_name,&bh,&de,&ino) >= 0) { |
dir | 214 | fs/msdos/namei.c | iput(dir); |
dir | 217 | fs/msdos/namei.c | res = msdos_create_entry(dir,msdos_name,S_ISDIR(mode),result); |
dir | 219 | fs/msdos/namei.c | iput(dir); |
dir | 244 | fs/msdos/namei.c | int msdos_mkdir(struct inode *dir,const char *name,int len,int mode) |
dir | 252 | fs/msdos/namei.c | if ((res = msdos_format_name(MSDOS_SB(dir->i_sb)->name_check,name,len, |
dir | 254 | fs/msdos/namei.c | iput(dir); |
dir | 258 | fs/msdos/namei.c | if (msdos_scan(dir,msdos_name,&bh,&de,&ino) >= 0) { |
dir | 261 | fs/msdos/namei.c | iput(dir); |
dir | 264 | fs/msdos/namei.c | if ((res = msdos_create_entry(dir,msdos_name,1,&inode)) < 0) { |
dir | 266 | fs/msdos/namei.c | iput(dir); |
dir | 269 | fs/msdos/namei.c | dir->i_nlink++; |
dir | 283 | fs/msdos/namei.c | dot->i_size = dir->i_size; |
dir | 284 | fs/msdos/namei.c | MSDOS_I(dot)->i_start = MSDOS_I(dir)->i_start; |
dir | 285 | fs/msdos/namei.c | dot->i_nlink = dir->i_nlink; |
dir | 290 | fs/msdos/namei.c | iput(dir); |
dir | 294 | fs/msdos/namei.c | if (msdos_rmdir(dir,name,len) < 0) |
dir | 295 | fs/msdos/namei.c | fs_panic(dir->i_sb,"rmdir in mkdir failed"); |
dir | 301 | fs/msdos/namei.c | static int msdos_empty(struct inode *dir) |
dir | 307 | fs/msdos/namei.c | if (dir->i_count > 1) |
dir | 309 | fs/msdos/namei.c | if (MSDOS_I(dir)->i_start) { /* may be zero in mkdir */ |
dir | 312 | fs/msdos/namei.c | while (msdos_get_entry(dir,&pos,&bh,&de) > -1) |
dir | 326 | fs/msdos/namei.c | int msdos_rmdir(struct inode *dir,const char *name,int len) |
dir | 338 | fs/msdos/namei.c | if ((res = msdos_find(dir,name,len,&bh,&de,&ino)) < 0) goto rmdir_done; |
dir | 340 | fs/msdos/namei.c | if (!(inode = iget(dir->i_sb,ino))) goto rmdir_done; |
dir | 344 | fs/msdos/namei.c | if (dir->i_dev != inode->i_dev || dir == inode) goto rmdir_done; |
dir | 349 | fs/msdos/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 350 | fs/msdos/namei.c | dir->i_nlink--; |
dir | 351 | fs/msdos/namei.c | inode->i_dirt = dir->i_dirt = 1; |
dir | 357 | fs/msdos/namei.c | iput(dir); |
dir | 363 | fs/msdos/namei.c | int msdos_unlink(struct inode *dir,const char *name,int len) |
dir | 372 | fs/msdos/namei.c | if ((res = msdos_find(dir,name,len,&bh,&de,&ino)) < 0) |
dir | 374 | fs/msdos/namei.c | if (!(inode = iget(dir->i_sb,ino))) { |
dir | 383 | fs/msdos/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 385 | fs/msdos/namei.c | inode->i_dirt = dir->i_dirt = 1; |
dir | 391 | fs/msdos/namei.c | iput(dir); |
dir | 94 | fs/namei.c | int lookup(struct inode * dir,const char * name, int len, |
dir | 101 | fs/namei.c | if (!dir) |
dir | 104 | fs/namei.c | perm = permission(dir,MAY_EXEC); |
dir | 106 | fs/namei.c | if (dir == current->root) { |
dir | 107 | fs/namei.c | *result = dir; |
dir | 109 | fs/namei.c | } else if ((sb = dir->i_sb) && (dir == sb->s_mounted)) { |
dir | 110 | fs/namei.c | sb = dir->i_sb; |
dir | 111 | fs/namei.c | iput(dir); |
dir | 112 | fs/namei.c | dir = sb->s_covered; |
dir | 113 | fs/namei.c | if (!dir) |
dir | 115 | fs/namei.c | dir->i_count++; |
dir | 118 | fs/namei.c | if (!dir->i_op || !dir->i_op->lookup) { |
dir | 119 | fs/namei.c | iput(dir); |
dir | 123 | fs/namei.c | iput(dir); |
dir | 127 | fs/namei.c | *result = dir; |
dir | 130 | fs/namei.c | return dir->i_op->lookup(dir,name,len,result); |
dir | 133 | fs/namei.c | int follow_link(struct inode * dir, struct inode * inode, |
dir | 136 | fs/namei.c | if (!dir || !inode) { |
dir | 137 | fs/namei.c | iput(dir); |
dir | 143 | fs/namei.c | iput(dir); |
dir | 147 | fs/namei.c | return inode->i_op->follow_link(dir,inode,flag,mode,res_inode); |
dir | 279 | fs/namei.c | struct inode * dir, *inode; |
dir | 284 | fs/namei.c | error = dir_namei(pathname,&namelen,&basename,base,&dir); |
dir | 289 | fs/namei.c | iput(dir); |
dir | 293 | fs/namei.c | if (!permission(dir,ACC_MODE(flag))) { |
dir | 294 | fs/namei.c | iput(dir); |
dir | 297 | fs/namei.c | *res_inode=dir; |
dir | 301 | fs/namei.c | dir->i_count++; /* lookup eats the dir */ |
dir | 302 | fs/namei.c | error = lookup(dir,basename,namelen,&inode); |
dir | 306 | fs/namei.c | iput(dir); |
dir | 309 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 310 | fs/namei.c | iput(dir); |
dir | 313 | fs/namei.c | if (!dir->i_op || !dir->i_op->create) { |
dir | 314 | fs/namei.c | iput(dir); |
dir | 317 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 318 | fs/namei.c | iput(dir); |
dir | 321 | fs/namei.c | dir->i_count++; /* create eats the dir */ |
dir | 322 | fs/namei.c | error = dir->i_op->create(dir,basename,namelen,mode,res_inode); |
dir | 324 | fs/namei.c | iput(dir); |
dir | 329 | fs/namei.c | iput(dir); |
dir | 333 | fs/namei.c | iput(dir); |
dir | 337 | fs/namei.c | error = follow_link(dir,inode,flag,mode,&inode); |
dir | 396 | fs/namei.c | struct inode * dir; |
dir | 399 | fs/namei.c | error = dir_namei(filename,&namelen,&basename, NULL, &dir); |
dir | 403 | fs/namei.c | iput(dir); |
dir | 406 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 407 | fs/namei.c | iput(dir); |
dir | 410 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 411 | fs/namei.c | iput(dir); |
dir | 414 | fs/namei.c | if (!dir->i_op || !dir->i_op->mknod) { |
dir | 415 | fs/namei.c | iput(dir); |
dir | 418 | fs/namei.c | return dir->i_op->mknod(dir,basename,namelen,mode,dev); |
dir | 449 | fs/namei.c | struct inode * dir; |
dir | 451 | fs/namei.c | error = dir_namei(pathname,&namelen,&basename,NULL,&dir); |
dir | 455 | fs/namei.c | iput(dir); |
dir | 458 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 459 | fs/namei.c | iput(dir); |
dir | 462 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 463 | fs/namei.c | iput(dir); |
dir | 466 | fs/namei.c | if (!dir->i_op || !dir->i_op->mkdir) { |
dir | 467 | fs/namei.c | iput(dir); |
dir | 470 | fs/namei.c | return dir->i_op->mkdir(dir,basename,namelen,mode); |
dir | 490 | fs/namei.c | struct inode * dir; |
dir | 492 | fs/namei.c | error = dir_namei(name,&namelen,&basename,NULL,&dir); |
dir | 496 | fs/namei.c | iput(dir); |
dir | 499 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 500 | fs/namei.c | iput(dir); |
dir | 503 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 504 | fs/namei.c | iput(dir); |
dir | 507 | fs/namei.c | if (!dir->i_op || !dir->i_op->rmdir) { |
dir | 508 | fs/namei.c | iput(dir); |
dir | 511 | fs/namei.c | return dir->i_op->rmdir(dir,basename,namelen); |
dir | 531 | fs/namei.c | struct inode * dir; |
dir | 533 | fs/namei.c | error = dir_namei(name,&namelen,&basename,NULL,&dir); |
dir | 537 | fs/namei.c | iput(dir); |
dir | 540 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 541 | fs/namei.c | iput(dir); |
dir | 544 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 545 | fs/namei.c | iput(dir); |
dir | 548 | fs/namei.c | if (!dir->i_op || !dir->i_op->unlink) { |
dir | 549 | fs/namei.c | iput(dir); |
dir | 552 | fs/namei.c | return dir->i_op->unlink(dir,basename,namelen); |
dir | 570 | fs/namei.c | struct inode * dir; |
dir | 574 | fs/namei.c | error = dir_namei(newname,&namelen,&basename,NULL,&dir); |
dir | 578 | fs/namei.c | iput(dir); |
dir | 581 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 582 | fs/namei.c | iput(dir); |
dir | 585 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 586 | fs/namei.c | iput(dir); |
dir | 589 | fs/namei.c | if (!dir->i_op || !dir->i_op->symlink) { |
dir | 590 | fs/namei.c | iput(dir); |
dir | 593 | fs/namei.c | return dir->i_op->symlink(dir,basename,namelen,oldname); |
dir | 615 | fs/namei.c | struct inode * dir; |
dir | 619 | fs/namei.c | error = dir_namei(newname,&namelen,&basename,NULL,&dir); |
dir | 626 | fs/namei.c | iput(dir); |
dir | 629 | fs/namei.c | if (IS_RDONLY(dir)) { |
dir | 631 | fs/namei.c | iput(dir); |
dir | 634 | fs/namei.c | if (dir->i_dev != oldinode->i_dev) { |
dir | 635 | fs/namei.c | iput(dir); |
dir | 639 | fs/namei.c | if (!permission(dir,MAY_WRITE | MAY_EXEC)) { |
dir | 640 | fs/namei.c | iput(dir); |
dir | 644 | fs/namei.c | if (!dir->i_op || !dir->i_op->link) { |
dir | 645 | fs/namei.c | iput(dir); |
dir | 649 | fs/namei.c | return dir->i_op->link(oldinode, dir, basename, namelen); |
dir | 24 | fs/nfs/dir.c | static int nfs_lookup(struct inode *dir, const char *name, int len, |
dir | 26 | fs/nfs/dir.c | static int nfs_create(struct inode *dir, const char *name, int len, int mode, |
dir | 28 | fs/nfs/dir.c | static int nfs_mkdir(struct inode *dir, const char *name, int len, int mode); |
dir | 29 | fs/nfs/dir.c | static int nfs_rmdir(struct inode *dir, const char *name, int len); |
dir | 30 | fs/nfs/dir.c | static int nfs_unlink(struct inode *dir, const char *name, int len); |
dir | 33 | fs/nfs/dir.c | static int nfs_link(struct inode *oldinode, struct inode *dir, |
dir | 35 | fs/nfs/dir.c | static int nfs_mknod(struct inode *dir, const char *name, int len, int mode, |
dir | 183 | fs/nfs/dir.c | static struct nfs_lookup_cache_entry *nfs_lookup_cache_index(struct inode *dir, |
dir | 191 | fs/nfs/dir.c | if (entry->dev == dir->i_dev && entry->inode == dir->i_ino |
dir | 198 | fs/nfs/dir.c | static int nfs_lookup_cache_lookup(struct inode *dir, const char *filename, |
dir | 210 | fs/nfs/dir.c | if ((entry = nfs_lookup_cache_index(dir, filename))) { |
dir | 222 | fs/nfs/dir.c | static void nfs_lookup_cache_add(struct inode *dir, const char *filename, |
dir | 233 | fs/nfs/dir.c | if (!(entry = nfs_lookup_cache_index(dir, filename))) { |
dir | 238 | fs/nfs/dir.c | entry->dev = dir->i_dev; |
dir | 239 | fs/nfs/dir.c | entry->inode = dir->i_ino; |
dir | 244 | fs/nfs/dir.c | ? NFS_SERVER(dir)->acdirmax : NFS_SERVER(dir)->acregmax); |
dir | 247 | fs/nfs/dir.c | static void nfs_lookup_cache_remove(struct inode *dir, struct inode *inode, |
dir | 259 | fs/nfs/dir.c | else if ((entry = nfs_lookup_cache_index(dir, filename))) { |
dir | 287 | fs/nfs/dir.c | static int nfs_lookup(struct inode *dir, const char *__name, int len, |
dir | 296 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 298 | fs/nfs/dir.c | iput(dir); |
dir | 302 | fs/nfs/dir.c | iput(dir); |
dir | 308 | fs/nfs/dir.c | *result = dir; |
dir | 311 | fs/nfs/dir.c | if ((NFS_SERVER(dir)->flags & NFS_MOUNT_NOAC) |
dir | 312 | fs/nfs/dir.c | || !nfs_lookup_cache_lookup(dir, name, &fhandle, &fattr)) { |
dir | 313 | fs/nfs/dir.c | if ((error = nfs_proc_lookup(NFS_SERVER(dir), NFS_FH(dir), |
dir | 315 | fs/nfs/dir.c | iput(dir); |
dir | 318 | fs/nfs/dir.c | nfs_lookup_cache_add(dir, name, &fhandle, &fattr); |
dir | 320 | fs/nfs/dir.c | if (!(*result = nfs_fhget(dir->i_sb, &fhandle, &fattr))) { |
dir | 321 | fs/nfs/dir.c | iput(dir); |
dir | 324 | fs/nfs/dir.c | iput(dir); |
dir | 328 | fs/nfs/dir.c | static int nfs_create(struct inode *dir, const char *name, int len, int mode, |
dir | 337 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 339 | fs/nfs/dir.c | iput(dir); |
dir | 343 | fs/nfs/dir.c | iput(dir); |
dir | 349 | fs/nfs/dir.c | if ((error = nfs_proc_create(NFS_SERVER(dir), NFS_FH(dir), |
dir | 351 | fs/nfs/dir.c | iput(dir); |
dir | 354 | fs/nfs/dir.c | if (!(*result = nfs_fhget(dir->i_sb, &fhandle, &fattr))) { |
dir | 355 | fs/nfs/dir.c | iput(dir); |
dir | 358 | fs/nfs/dir.c | nfs_lookup_cache_add(dir, name, &fhandle, &fattr); |
dir | 359 | fs/nfs/dir.c | iput(dir); |
dir | 363 | fs/nfs/dir.c | static int nfs_mknod(struct inode *dir, const char *name, int len, |
dir | 371 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 373 | fs/nfs/dir.c | iput(dir); |
dir | 377 | fs/nfs/dir.c | iput(dir); |
dir | 387 | fs/nfs/dir.c | error = nfs_proc_create(NFS_SERVER(dir), NFS_FH(dir), |
dir | 390 | fs/nfs/dir.c | nfs_lookup_cache_add(dir, name, &fhandle, &fattr); |
dir | 391 | fs/nfs/dir.c | iput(dir); |
dir | 395 | fs/nfs/dir.c | static int nfs_mkdir(struct inode *dir, const char *name, int len, int mode) |
dir | 402 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 404 | fs/nfs/dir.c | iput(dir); |
dir | 408 | fs/nfs/dir.c | iput(dir); |
dir | 414 | fs/nfs/dir.c | error = nfs_proc_mkdir(NFS_SERVER(dir), NFS_FH(dir), |
dir | 417 | fs/nfs/dir.c | nfs_lookup_cache_add(dir, name, &fhandle, &fattr); |
dir | 418 | fs/nfs/dir.c | iput(dir); |
dir | 422 | fs/nfs/dir.c | static int nfs_rmdir(struct inode *dir, const char *name, int len) |
dir | 426 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 428 | fs/nfs/dir.c | iput(dir); |
dir | 432 | fs/nfs/dir.c | iput(dir); |
dir | 435 | fs/nfs/dir.c | error = nfs_proc_rmdir(NFS_SERVER(dir), NFS_FH(dir), name); |
dir | 437 | fs/nfs/dir.c | nfs_lookup_cache_remove(dir, NULL, name); |
dir | 438 | fs/nfs/dir.c | iput(dir); |
dir | 442 | fs/nfs/dir.c | static int nfs_unlink(struct inode *dir, const char *name, int len) |
dir | 446 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 448 | fs/nfs/dir.c | iput(dir); |
dir | 452 | fs/nfs/dir.c | iput(dir); |
dir | 455 | fs/nfs/dir.c | error = nfs_proc_remove(NFS_SERVER(dir), NFS_FH(dir), name); |
dir | 457 | fs/nfs/dir.c | nfs_lookup_cache_remove(dir, NULL, name); |
dir | 458 | fs/nfs/dir.c | iput(dir); |
dir | 462 | fs/nfs/dir.c | static int nfs_symlink(struct inode *dir, const char *name, int len, |
dir | 468 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 470 | fs/nfs/dir.c | iput(dir); |
dir | 474 | fs/nfs/dir.c | iput(dir); |
dir | 478 | fs/nfs/dir.c | iput(dir); |
dir | 484 | fs/nfs/dir.c | error = nfs_proc_symlink(NFS_SERVER(dir), NFS_FH(dir), |
dir | 486 | fs/nfs/dir.c | iput(dir); |
dir | 490 | fs/nfs/dir.c | static int nfs_link(struct inode *oldinode, struct inode *dir, |
dir | 498 | fs/nfs/dir.c | iput(dir); |
dir | 501 | fs/nfs/dir.c | if (!dir || !S_ISDIR(dir->i_mode)) { |
dir | 504 | fs/nfs/dir.c | iput(dir); |
dir | 509 | fs/nfs/dir.c | iput(dir); |
dir | 513 | fs/nfs/dir.c | NFS_FH(dir), name); |
dir | 515 | fs/nfs/dir.c | nfs_lookup_cache_remove(dir, oldinode, NULL); |
dir | 517 | fs/nfs/dir.c | iput(dir); |
dir | 220 | fs/nfs/proc.c | int nfs_proc_lookup(struct nfs_server *server, struct nfs_fh *dir, const char *name, |
dir | 232 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 343 | fs/nfs/proc.c | int nfs_proc_create(struct nfs_server *server, struct nfs_fh *dir, |
dir | 352 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 372 | fs/nfs/proc.c | int nfs_proc_remove(struct nfs_server *server, struct nfs_fh *dir, const char *name) |
dir | 379 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 425 | fs/nfs/proc.c | struct nfs_fh *dir, const char *name) |
dir | 433 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 450 | fs/nfs/proc.c | int nfs_proc_symlink(struct nfs_server *server, struct nfs_fh *dir, |
dir | 458 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 477 | fs/nfs/proc.c | int nfs_proc_mkdir(struct nfs_server *server, struct nfs_fh *dir, |
dir | 486 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 506 | fs/nfs/proc.c | int nfs_proc_rmdir(struct nfs_server *server, struct nfs_fh *dir, const char *name) |
dir | 513 | fs/nfs/proc.c | p = xdr_encode_fhandle(p, dir); |
dir | 43 | fs/nfs/symlink.c | static int nfs_follow_link(struct inode *dir, struct inode *inode, |
dir | 50 | fs/nfs/symlink.c | if (!dir) { |
dir | 51 | fs/nfs/symlink.c | dir = current->root; |
dir | 52 | fs/nfs/symlink.c | dir->i_count++; |
dir | 55 | fs/nfs/symlink.c | iput(dir); |
dir | 59 | fs/nfs/symlink.c | iput(dir); |
dir | 65 | fs/nfs/symlink.c | iput(dir); |
dir | 72 | fs/nfs/symlink.c | iput(dir); |
dir | 78 | fs/nfs/symlink.c | error = open_namei(res, flag, mode, res_inode, dir); |
dir | 91 | fs/proc/base.c | static int proc_lookupbase(struct inode * dir,const char * name, int len, |
dir | 98 | fs/proc/base.c | if (!dir) |
dir | 100 | fs/proc/base.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 101 | fs/proc/base.c | iput(dir); |
dir | 104 | fs/proc/base.c | ino = dir->i_ino; |
dir | 110 | fs/proc/base.c | iput(dir); |
dir | 121 | fs/proc/base.c | iput(dir); |
dir | 124 | fs/proc/base.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 125 | fs/proc/base.c | iput(dir); |
dir | 128 | fs/proc/base.c | iput(dir); |
dir | 53 | fs/proc/fd.c | static int proc_lookupfd(struct inode * dir,const char * name, int len, |
dir | 62 | fs/proc/fd.c | ino = dir->i_ino; |
dir | 66 | fs/proc/fd.c | if (!dir) |
dir | 68 | fs/proc/fd.c | sb = dir->i_sb; |
dir | 69 | fs/proc/fd.c | if (!pid || ino > 1 || !S_ISDIR(dir->i_mode)) { |
dir | 70 | fs/proc/fd.c | iput(dir); |
dir | 76 | fs/proc/fd.c | *result = dir; |
dir | 80 | fs/proc/fd.c | iput(dir); |
dir | 83 | fs/proc/fd.c | iput(dir); |
dir | 86 | fs/proc/fd.c | iput(dir); |
dir | 41 | fs/proc/link.c | static int proc_follow_link(struct inode * dir, struct inode * inode, |
dir | 49 | fs/proc/link.c | if (dir) |
dir | 50 | fs/proc/link.c | iput(dir); |
dir | 101 | fs/proc/net.c | static int proc_lookupnet(struct inode * dir,const char * name, int len, |
dir | 108 | fs/proc/net.c | if (!dir) |
dir | 110 | fs/proc/net.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 111 | fs/proc/net.c | iput(dir); |
dir | 118 | fs/proc/net.c | iput(dir); |
dir | 122 | fs/proc/net.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 123 | fs/proc/net.c | iput(dir); |
dir | 126 | fs/proc/net.c | iput(dir); |
dir | 73 | fs/proc/root.c | static int proc_lookuproot(struct inode * dir,const char * name, int len, |
dir | 80 | fs/proc/root.c | if (!dir) |
dir | 82 | fs/proc/root.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 83 | fs/proc/root.c | iput(dir); |
dir | 92 | fs/proc/root.c | *result = dir; |
dir | 117 | fs/proc/root.c | iput(dir); |
dir | 122 | fs/proc/root.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 123 | fs/proc/root.c | iput(dir); |
dir | 126 | fs/proc/root.c | iput(dir); |
dir | 309 | fs/super.c | static int do_mount(dev_t dev, const char * dir, char * type, int flags, void * data) |
dir | 315 | fs/super.c | error = namei(dir,&dir_i); |
dir | 365 | fs/super.c | static int do_remount(const char *dir,int flags) |
dir | 370 | fs/super.c | retval = namei(dir,&dir_i); |
dir | 85 | fs/sysv/ialloc.c | struct inode * sysv_new_inode(const struct inode * dir) |
dir | 94 | fs/sysv/ialloc.c | if (!dir || !(inode = get_empty_inode())) |
dir | 96 | fs/sysv/ialloc.c | sb = dir->i_sb; |
dir | 138 | fs/sysv/ialloc.c | inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->egid; |
dir | 65 | fs/sysv/namei.c | static struct buffer_head * sysv_find_entry(struct inode * dir, |
dir | 74 | fs/sysv/namei.c | if (!dir) |
dir | 76 | fs/sysv/namei.c | sb = dir->i_sb; |
dir | 84 | fs/sysv/namei.c | while (pos < dir->i_size) { |
dir | 86 | fs/sysv/namei.c | bh = sysv_file_bread(dir,block,0,&bh_data); |
dir | 109 | fs/sysv/namei.c | int sysv_lookup(struct inode * dir,const char * name, int len, |
dir | 117 | fs/sysv/namei.c | if (!dir) |
dir | 119 | fs/sysv/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 120 | fs/sysv/namei.c | iput(dir); |
dir | 123 | fs/sysv/namei.c | if (!(bh = sysv_find_entry(dir,name,len,&de))) { |
dir | 124 | fs/sysv/namei.c | iput(dir); |
dir | 129 | fs/sysv/namei.c | if (!(*result = iget(dir->i_sb,ino))) { |
dir | 130 | fs/sysv/namei.c | iput(dir); |
dir | 133 | fs/sysv/namei.c | iput(dir); |
dir | 147 | fs/sysv/namei.c | static int sysv_add_entry(struct inode * dir, |
dir | 161 | fs/sysv/namei.c | if (!dir) |
dir | 163 | fs/sysv/namei.c | sb = dir->i_sb; |
dir | 175 | fs/sysv/namei.c | bh = sysv_file_bread(dir,block,1,&bh_data); |
dir | 182 | fs/sysv/namei.c | if (pos > dir->i_size) { |
dir | 184 | fs/sysv/namei.c | dir->i_size = pos; |
dir | 185 | fs/sysv/namei.c | dir->i_dirt = 1; |
dir | 193 | fs/sysv/namei.c | dir->i_mtime = dir->i_ctime = CURRENT_TIME; |
dir | 210 | fs/sysv/namei.c | int sysv_create(struct inode * dir,const char * name, int len, int mode, |
dir | 219 | fs/sysv/namei.c | if (!dir) |
dir | 221 | fs/sysv/namei.c | inode = sysv_new_inode(dir); |
dir | 223 | fs/sysv/namei.c | iput(dir); |
dir | 232 | fs/sysv/namei.c | error = sysv_add_entry(dir,name,len, &bh ,&de); |
dir | 237 | fs/sysv/namei.c | iput(dir); |
dir | 243 | fs/sysv/namei.c | iput(dir); |
dir | 248 | fs/sysv/namei.c | int sysv_mknod(struct inode * dir, const char * name, int len, int mode, int rdev) |
dir | 255 | fs/sysv/namei.c | if (!dir) |
dir | 257 | fs/sysv/namei.c | bh = sysv_find_entry(dir,name,len,&de); |
dir | 260 | fs/sysv/namei.c | iput(dir); |
dir | 263 | fs/sysv/namei.c | inode = sysv_new_inode(dir); |
dir | 265 | fs/sysv/namei.c | iput(dir); |
dir | 278 | fs/sysv/namei.c | if (dir->i_mode & S_ISGID) |
dir | 292 | fs/sysv/namei.c | error = sysv_add_entry(dir, name, len, &bh, &de); |
dir | 297 | fs/sysv/namei.c | iput(dir); |
dir | 303 | fs/sysv/namei.c | iput(dir); |
dir | 308 | fs/sysv/namei.c | int sysv_mkdir(struct inode * dir, const char * name, int len, int mode) |
dir | 316 | fs/sysv/namei.c | if (!dir) { |
dir | 317 | fs/sysv/namei.c | iput(dir); |
dir | 320 | fs/sysv/namei.c | bh = sysv_find_entry(dir,name,len,&de); |
dir | 323 | fs/sysv/namei.c | iput(dir); |
dir | 326 | fs/sysv/namei.c | if (dir->i_nlink >= dir->i_sb->sv_link_max) { |
dir | 327 | fs/sysv/namei.c | iput(dir); |
dir | 330 | fs/sysv/namei.c | inode = sysv_new_inode(dir); |
dir | 332 | fs/sysv/namei.c | iput(dir); |
dir | 339 | fs/sysv/namei.c | iput(dir); |
dir | 349 | fs/sysv/namei.c | de->inode = dir->i_ino; |
dir | 355 | fs/sysv/namei.c | if (dir->i_mode & S_ISGID) |
dir | 358 | fs/sysv/namei.c | error = sysv_add_entry(dir, name, len, &bh, &de); |
dir | 360 | fs/sysv/namei.c | iput(dir); |
dir | 367 | fs/sysv/namei.c | dir->i_nlink++; |
dir | 368 | fs/sysv/namei.c | dir->i_dirt = 1; |
dir | 369 | fs/sysv/namei.c | iput(dir); |
dir | 435 | fs/sysv/namei.c | int sysv_rmdir(struct inode * dir, const char * name, int len) |
dir | 443 | fs/sysv/namei.c | bh = sysv_find_entry(dir,name,len,&de); |
dir | 448 | fs/sysv/namei.c | if (!(inode = iget(dir->i_sb, de->inode))) |
dir | 450 | fs/sysv/namei.c | if ((dir->i_mode & S_ISVTX) && current->euid && |
dir | 453 | fs/sysv/namei.c | if (inode->i_dev != dir->i_dev) |
dir | 455 | fs/sysv/namei.c | if (inode == dir) /* we may not delete ".", but "../dir" is ok */ |
dir | 479 | fs/sysv/namei.c | dir->i_nlink--; |
dir | 480 | fs/sysv/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 481 | fs/sysv/namei.c | dir->i_dirt=1; |
dir | 484 | fs/sysv/namei.c | iput(dir); |
dir | 490 | fs/sysv/namei.c | int sysv_unlink(struct inode * dir, const char * name, int len) |
dir | 500 | fs/sysv/namei.c | bh = sysv_find_entry(dir,name,len,&de); |
dir | 503 | fs/sysv/namei.c | if (!(inode = iget(dir->i_sb, de->inode))) |
dir | 515 | fs/sysv/namei.c | if ((dir->i_mode & S_ISVTX) && !suser() && |
dir | 517 | fs/sysv/namei.c | current->euid != dir->i_uid) |
dir | 530 | fs/sysv/namei.c | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 531 | fs/sysv/namei.c | dir->i_dirt = 1; |
dir | 533 | fs/sysv/namei.c | inode->i_ctime = dir->i_ctime; |
dir | 539 | fs/sysv/namei.c | iput(dir); |
dir | 543 | fs/sysv/namei.c | int sysv_symlink(struct inode * dir, const char * name, int len, const char * symname) |
dir | 554 | fs/sysv/namei.c | if (!(inode = sysv_new_inode(dir))) { |
dir | 555 | fs/sysv/namei.c | iput(dir); |
dir | 562 | fs/sysv/namei.c | iput(dir); |
dir | 577 | fs/sysv/namei.c | bh = sysv_find_entry(dir,name,len,&de); |
dir | 583 | fs/sysv/namei.c | iput(dir); |
dir | 586 | fs/sysv/namei.c | i = sysv_add_entry(dir, name, len, &bh, &de); |
dir | 591 | fs/sysv/namei.c | iput(dir); |
dir | 597 | fs/sysv/namei.c | iput(dir); |
dir | 602 | fs/sysv/namei.c | int sysv_link(struct inode * oldinode, struct inode * dir, const char * name, int len) |
dir | 610 | fs/sysv/namei.c | iput(dir); |
dir | 615 | fs/sysv/namei.c | iput(dir); |
dir | 618 | fs/sysv/namei.c | bh = sysv_find_entry(dir,name,len,&de); |
dir | 621 | fs/sysv/namei.c | iput(dir); |
dir | 625 | fs/sysv/namei.c | error = sysv_add_entry(dir, name, len, &bh, &de); |
dir | 627 | fs/sysv/namei.c | iput(dir); |
dir | 634 | fs/sysv/namei.c | iput(dir); |
dir | 47 | fs/sysv/symlink.c | static int sysv_follow_link(struct inode * dir, struct inode * inode, |
dir | 55 | fs/sysv/symlink.c | if (!dir) { |
dir | 56 | fs/sysv/symlink.c | dir = current->root; |
dir | 57 | fs/sysv/symlink.c | dir->i_count++; |
dir | 60 | fs/sysv/symlink.c | iput(dir); |
dir | 64 | fs/sysv/symlink.c | iput(dir); |
dir | 70 | fs/sysv/symlink.c | iput(dir); |
dir | 75 | fs/sysv/symlink.c | iput(dir); |
dir | 80 | fs/sysv/symlink.c | error = open_namei(bh_data,flag,mode,res_inode,dir); |
dir | 312 | fs/xiafs/bitmap.c | struct inode * xiafs_new_inode(struct inode * dir) |
dir | 318 | fs/xiafs/bitmap.c | sb = dir->i_sb; |
dir | 319 | fs/xiafs/bitmap.c | if (!dir || !(inode = get_empty_inode())) |
dir | 324 | fs/xiafs/bitmap.c | tmp=get_free_ibit(sb, dir->i_ino); |
dir | 333 | fs/xiafs/bitmap.c | inode->i_gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->egid; |
dir | 115 | fs/xiafs/namei.c | int xiafs_lookup(struct inode * dir, const char * name, int len, |
dir | 123 | fs/xiafs/namei.c | if (!dir) |
dir | 125 | fs/xiafs/namei.c | if (!S_ISDIR(dir->i_mode)) { |
dir | 126 | fs/xiafs/namei.c | iput(dir); |
dir | 129 | fs/xiafs/namei.c | if (!(bh = xiafs_find_entry(dir, name, len, &dep, NULL))) { |
dir | 130 | fs/xiafs/namei.c | iput(dir); |
dir | 135 | fs/xiafs/namei.c | if (!(*result = iget(dir->i_sb, ino))) { |
dir | 136 | fs/xiafs/namei.c | iput(dir); |
dir | 139 | fs/xiafs/namei.c | iput(dir); |
dir | 153 | fs/xiafs/namei.c | static struct buffer_head * xiafs_add_entry(struct inode * dir, |
dir | 162 | fs/xiafs/namei.c | if (!dir || !namelen || namelen > _XIAFS_NAME_LEN) |
dir | 165 | fs/xiafs/namei.c | if (dir->i_size & (XIAFS_ZSIZE(dir->i_sb) - 1)) { |
dir | 171 | fs/xiafs/namei.c | bh = xiafs_bread(dir, pos >> XIAFS_ZSIZE_BITS(dir->i_sb), pos ? 1:0); |
dir | 186 | fs/xiafs/namei.c | while (offset < XIAFS_ZSIZE(dir->i_sb)) { |
dir | 187 | fs/xiafs/namei.c | if (pos >= dir->i_size) { |
dir | 191 | fs/xiafs/namei.c | de->d_rec_len=XIAFS_ZSIZE(dir->i_sb); |
dir | 192 | fs/xiafs/namei.c | dir->i_size += XIAFS_ZSIZE(dir->i_sb); |
dir | 193 | fs/xiafs/namei.c | dir->i_dirt = 1; |
dir | 195 | fs/xiafs/namei.c | if (de->d_ino > dir->i_sb->u.xiafs_sb.s_ninodes || |
dir | 197 | fs/xiafs/namei.c | (char *)de+de->d_rec_len > bh->b_data+XIAFS_ZSIZE(dir->i_sb) || |
dir | 219 | fs/xiafs/namei.c | dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 220 | fs/xiafs/namei.c | dir->i_dirt = 1; |
dir | 235 | fs/xiafs/namei.c | if (offset > XIAFS_ZSIZE(dir->i_sb)) { |
dir | 239 | fs/xiafs/namei.c | pos+=XIAFS_ZSIZE(dir->i_sb); |
dir | 244 | fs/xiafs/namei.c | int xiafs_create(struct inode * dir, const char * name, int len, int mode, |
dir | 252 | fs/xiafs/namei.c | if (!dir) |
dir | 254 | fs/xiafs/namei.c | inode = xiafs_new_inode(dir); |
dir | 256 | fs/xiafs/namei.c | iput(dir); |
dir | 262 | fs/xiafs/namei.c | bh = xiafs_add_entry(dir, name, len, &de, NULL); |
dir | 267 | fs/xiafs/namei.c | iput(dir); |
dir | 273 | fs/xiafs/namei.c | iput(dir); |
dir | 278 | fs/xiafs/namei.c | int xiafs_mknod(struct inode *dir, const char *name, int len, int mode, int rdev) |
dir | 284 | fs/xiafs/namei.c | if (!dir) |
dir | 286 | fs/xiafs/namei.c | bh = xiafs_find_entry(dir,name,len,&de, NULL); |
dir | 289 | fs/xiafs/namei.c | iput(dir); |
dir | 292 | fs/xiafs/namei.c | inode = xiafs_new_inode(dir); |
dir | 294 | fs/xiafs/namei.c | iput(dir); |
dir | 304 | fs/xiafs/namei.c | if (dir->i_mode & S_ISGID) |
dir | 319 | fs/xiafs/namei.c | bh = xiafs_add_entry(dir, name, len, &de, NULL); |
dir | 324 | fs/xiafs/namei.c | iput(dir); |
dir | 330 | fs/xiafs/namei.c | iput(dir); |
dir | 335 | fs/xiafs/namei.c | int xiafs_mkdir(struct inode * dir, const char * name, int len, int mode) |
dir | 341 | fs/xiafs/namei.c | bh = xiafs_find_entry(dir,name,len,&de, NULL); |
dir | 344 | fs/xiafs/namei.c | iput(dir); |
dir | 347 | fs/xiafs/namei.c | if (dir->i_nlink > 64000) { |
dir | 348 | fs/xiafs/namei.c | iput(dir); |
dir | 351 | fs/xiafs/namei.c | inode = xiafs_new_inode(dir); |
dir | 353 | fs/xiafs/namei.c | iput(dir); |
dir | 357 | fs/xiafs/namei.c | inode->i_size = XIAFS_ZSIZE(dir->i_sb); |
dir | 361 | fs/xiafs/namei.c | iput(dir); |
dir | 373 | fs/xiafs/namei.c | de->d_ino = dir->i_ino; |
dir | 376 | fs/xiafs/namei.c | de->d_rec_len=XIAFS_ZSIZE(dir->i_sb)-12; |
dir | 381 | fs/xiafs/namei.c | if (dir->i_mode & S_ISGID) |
dir | 384 | fs/xiafs/namei.c | bh = xiafs_add_entry(dir, name, len, &de, NULL); |
dir | 386 | fs/xiafs/namei.c | iput(dir); |
dir | 393 | fs/xiafs/namei.c | dir->i_nlink++; |
dir | 394 | fs/xiafs/namei.c | dir->i_dirt = 1; |
dir | 395 | fs/xiafs/namei.c | iput(dir); |
dir | 484 | fs/xiafs/namei.c | int xiafs_rmdir(struct inode * dir, const char * name, int len) |
dir | 492 | fs/xiafs/namei.c | bh = xiafs_find_entry(dir, name, len, &de, &de_pre); |
dir | 497 | fs/xiafs/namei.c | if (!(inode = iget(dir->i_sb, de->d_ino))) |
dir | 499 | fs/xiafs/namei.c | if ((dir->i_mode & S_ISVTX) && current->euid && |
dir | 502 | fs/xiafs/namei.c | if (inode->i_dev != dir->i_dev) |
dir | 504 | fs/xiafs/namei.c | if (inode == dir) /* we may not delete ".", but "../dir" is ok */ |
dir | 524 | fs/xiafs/namei.c | dir->i_nlink--; |
dir | 525 | fs/xiafs/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 526 | fs/xiafs/namei.c | dir->i_dirt=1; |
dir | 529 | fs/xiafs/namei.c | iput(dir); |
dir | 535 | fs/xiafs/namei.c | int xiafs_unlink(struct inode * dir, const char * name, int len) |
dir | 545 | fs/xiafs/namei.c | bh = xiafs_find_entry(dir, name, len, &de, &de_pre); |
dir | 548 | fs/xiafs/namei.c | if (!(inode = iget(dir->i_sb, de->d_ino))) |
dir | 560 | fs/xiafs/namei.c | if ((dir->i_mode & S_ISVTX) && !suser() && |
dir | 562 | fs/xiafs/namei.c | current->euid != dir->i_uid) |
dir | 570 | fs/xiafs/namei.c | inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME; |
dir | 571 | fs/xiafs/namei.c | dir->i_dirt = 1; |
dir | 578 | fs/xiafs/namei.c | iput(dir); |
dir | 582 | fs/xiafs/namei.c | int xiafs_symlink(struct inode * dir, const char * name, |
dir | 591 | fs/xiafs/namei.c | bh = xiafs_find_entry(dir,name,len, &de, NULL); |
dir | 594 | fs/xiafs/namei.c | iput(dir); |
dir | 597 | fs/xiafs/namei.c | if (!(inode = xiafs_new_inode(dir))) { |
dir | 598 | fs/xiafs/namei.c | iput(dir); |
dir | 605 | fs/xiafs/namei.c | iput(dir); |
dir | 618 | fs/xiafs/namei.c | bh = xiafs_add_entry(dir, name, len, &de, NULL); |
dir | 623 | fs/xiafs/namei.c | iput(dir); |
dir | 629 | fs/xiafs/namei.c | iput(dir); |
dir | 634 | fs/xiafs/namei.c | int xiafs_link(struct inode * oldinode, struct inode * dir, |
dir | 642 | fs/xiafs/namei.c | iput(dir); |
dir | 647 | fs/xiafs/namei.c | iput(dir); |
dir | 650 | fs/xiafs/namei.c | bh = xiafs_find_entry(dir, name, len, &de, NULL); |
dir | 653 | fs/xiafs/namei.c | iput(dir); |
dir | 657 | fs/xiafs/namei.c | bh = xiafs_add_entry(dir, name, len, &de, NULL); |
dir | 659 | fs/xiafs/namei.c | iput(dir); |
dir | 666 | fs/xiafs/namei.c | iput(dir); |
dir | 75 | fs/xiafs/symlink.c | static int xiafs_follow_link(struct inode * dir, struct inode * inode, |
dir | 82 | fs/xiafs/symlink.c | if (!dir) { |
dir | 83 | fs/xiafs/symlink.c | dir = current->root; |
dir | 84 | fs/xiafs/symlink.c | dir->i_count++; |
dir | 87 | fs/xiafs/symlink.c | iput(dir); |
dir | 91 | fs/xiafs/symlink.c | iput(dir); |
dir | 101 | fs/xiafs/symlink.c | iput(dir); |
dir | 106 | fs/xiafs/symlink.c | iput(dir); |
dir | 111 | fs/xiafs/symlink.c | error = open_namei(bh->b_data,flag,mode,res_inode,dir); |
dir | 64 | include/linux/ext_fs.h | extern int ext_lookup(struct inode * dir,const char * name, int len, |
dir | 66 | include/linux/ext_fs.h | extern int ext_create(struct inode * dir,const char * name, int len, int mode, |
dir | 68 | include/linux/ext_fs.h | extern int ext_mkdir(struct inode * dir, const char * name, int len, int mode); |
dir | 69 | include/linux/ext_fs.h | extern int ext_rmdir(struct inode * dir, const char * name, int len); |
dir | 70 | include/linux/ext_fs.h | extern int ext_unlink(struct inode * dir, const char * name, int len); |
dir | 73 | include/linux/ext_fs.h | extern int ext_link(struct inode * oldinode, struct inode * dir, const char * name, int len); |
dir | 74 | include/linux/ext_fs.h | extern int ext_mknod(struct inode * dir, const char * name, int len, int mode, int rdev); |
dir | 77 | include/linux/ext_fs.h | extern struct inode * ext_new_inode(const struct inode * dir); |
dir | 169 | include/linux/iso_fs.h | extern int isofs_lookup(struct inode * dir,const char * name, int len, |
dir | 194 | include/linux/iso_fs.h | unsigned long dir; /* If this matches... */ |
dir | 72 | include/linux/kd.h | char dir; /* direction in vs out */ |
dir | 75 | include/linux/minix_fs.h | extern int minix_lookup(struct inode * dir,const char * name, int len, |
dir | 77 | include/linux/minix_fs.h | extern int minix_create(struct inode * dir,const char * name, int len, int mode, |
dir | 79 | include/linux/minix_fs.h | extern int minix_mkdir(struct inode * dir, const char * name, int len, int mode); |
dir | 80 | include/linux/minix_fs.h | extern int minix_rmdir(struct inode * dir, const char * name, int len); |
dir | 81 | include/linux/minix_fs.h | extern int minix_unlink(struct inode * dir, const char * name, int len); |
dir | 84 | include/linux/minix_fs.h | extern int minix_link(struct inode * oldinode, struct inode * dir, const char * name, int len); |
dir | 85 | include/linux/minix_fs.h | extern int minix_mknod(struct inode * dir, const char * name, int len, int mode, int rdev); |
dir | 88 | include/linux/minix_fs.h | extern struct inode * minix_new_inode(const struct inode * dir); |
dir | 136 | include/linux/msdos_fs.h | extern int msdos_get_entry(struct inode *dir,off_t *pos,struct buffer_head **bh, |
dir | 138 | include/linux/msdos_fs.h | extern int msdos_scan(struct inode *dir,char *name,struct buffer_head **res_bh, |
dir | 140 | include/linux/msdos_fs.h | extern int msdos_parent_ino(struct inode *dir,int locked); |
dir | 141 | include/linux/msdos_fs.h | extern int msdos_subdirs(struct inode *dir); |
dir | 157 | include/linux/msdos_fs.h | extern int msdos_lookup(struct inode *dir,const char *name,int len, |
dir | 159 | include/linux/msdos_fs.h | extern int msdos_create(struct inode *dir,const char *name,int len,int mode, |
dir | 161 | include/linux/msdos_fs.h | extern int msdos_mkdir(struct inode *dir,const char *name,int len,int mode); |
dir | 162 | include/linux/msdos_fs.h | extern int msdos_rmdir(struct inode *dir,const char *name,int len); |
dir | 163 | include/linux/msdos_fs.h | extern int msdos_unlink(struct inode *dir,const char *name,int len); |
dir | 62 | include/linux/nfs_fs.h | extern int nfs_proc_lookup(struct nfs_server *server, struct nfs_fh *dir, |
dir | 73 | include/linux/nfs_fs.h | extern int nfs_proc_create(struct nfs_server *server, struct nfs_fh *dir, |
dir | 76 | include/linux/nfs_fs.h | extern int nfs_proc_remove(struct nfs_server *server, struct nfs_fh *dir, |
dir | 82 | include/linux/nfs_fs.h | struct nfs_fh *dir, const char *name); |
dir | 83 | include/linux/nfs_fs.h | extern int nfs_proc_symlink(struct nfs_server *server, struct nfs_fh *dir, |
dir | 85 | include/linux/nfs_fs.h | extern int nfs_proc_mkdir(struct nfs_server *server, struct nfs_fh *dir, |
dir | 88 | include/linux/nfs_fs.h | extern int nfs_proc_rmdir(struct nfs_server *server, struct nfs_fh *dir, |
dir | 391 | include/linux/sysv_fs.h | extern int sysv_lookup(struct inode * dir,const char * name, int len, |
dir | 393 | include/linux/sysv_fs.h | extern int sysv_create(struct inode * dir,const char * name, int len, int mode, |
dir | 395 | include/linux/sysv_fs.h | extern int sysv_mkdir(struct inode * dir, const char * name, int len, int mode); |
dir | 396 | include/linux/sysv_fs.h | extern int sysv_rmdir(struct inode * dir, const char * name, int len); |
dir | 397 | include/linux/sysv_fs.h | extern int sysv_unlink(struct inode * dir, const char * name, int len); |
dir | 400 | include/linux/sysv_fs.h | extern int sysv_link(struct inode * oldinode, struct inode * dir, const char * name, int len); |
dir | 401 | include/linux/sysv_fs.h | extern int sysv_mknod(struct inode * dir, const char * name, int len, int mode, int rdev); |
dir | 404 | include/linux/sysv_fs.h | extern struct inode * sysv_new_inode(const struct inode * dir); |
dir | 65 | include/linux/xia_fs.h | extern int xiafs_lookup(struct inode * dir,const char * name, int len, |
dir | 67 | include/linux/xia_fs.h | extern int xiafs_create(struct inode * dir,const char * name, int len, int mode, |
dir | 69 | include/linux/xia_fs.h | extern int xiafs_mkdir(struct inode * dir, const char * name, int len, int mode); |
dir | 70 | include/linux/xia_fs.h | extern int xiafs_rmdir(struct inode * dir, const char * name, int len); |
dir | 71 | include/linux/xia_fs.h | extern int xiafs_unlink(struct inode * dir, const char * name, int len); |
dir | 74 | include/linux/xia_fs.h | extern int xiafs_link(struct inode * oldinode, struct inode * dir, |
dir | 76 | include/linux/xia_fs.h | extern int xiafs_mknod(struct inode * dir, const char * name, int len, |
dir | 81 | include/linux/xia_fs.h | extern struct inode * xiafs_new_inode(struct inode * dir); |
dir | 275 | mm/memory.c | unsigned long *page_table, *dir; |
dir | 283 | mm/memory.c | dir = PAGE_DIR_OFFSET(current->tss.cr3,from); |
dir | 288 | mm/memory.c | for ( ; size > 0; ++dir, size -= pcnt, |
dir | 290 | mm/memory.c | if (!(page_dir = *dir)) { |
dir | 316 | mm/memory.c | *dir = 0; |
dir | 326 | mm/memory.c | unsigned long *page_table, *dir; |
dir | 341 | mm/memory.c | dir = PAGE_DIR_OFFSET(current->tss.cr3,from); |
dir | 348 | mm/memory.c | if (!(PAGE_PRESENT & *dir)) { |
dir | 354 | mm/memory.c | if (PAGE_PRESENT & *dir) { |
dir | 356 | mm/memory.c | page_table = (unsigned long *)(PAGE_MASK & *dir++); |
dir | 358 | mm/memory.c | *dir++ = ((unsigned long) page_table) | PAGE_TABLE; |
dir | 360 | mm/memory.c | page_table = (unsigned long *)(PAGE_MASK & *dir++); |
dir | 389 | mm/memory.c | unsigned long *page_table, *dir; |
dir | 403 | mm/memory.c | dir = PAGE_DIR_OFFSET(current->tss.cr3,from); |
dir | 410 | mm/memory.c | if (!(PAGE_PRESENT & *dir)) { |
dir | 416 | mm/memory.c | *dir++ = ((unsigned long) page_table) | PAGE_TABLE; |
dir | 419 | mm/memory.c | page_table = (unsigned long *)(PAGE_MASK & *dir++); |