1 /* 2 * linux/fs/inode.c 3 * 4 * (C) 1997 Linus Torvalds 5 */ 6 7 #include <linux/fs.h> 8 #include <linux/mm.h> 9 #include <linux/dcache.h> 10 #include <linux/init.h> 11 #include <linux/quotaops.h> 12 #include <linux/slab.h> 13 #include <linux/writeback.h> 14 #include <linux/module.h> 15 #include <linux/backing-dev.h> 16 #include <linux/wait.h> 17 #include <linux/hash.h> 18 #include <linux/swap.h> 19 #include <linux/security.h> 20 #include <linux/pagemap.h> 21 #include <linux/cdev.h> 22 #include <linux/bootmem.h> 23 #include <linux/inotify.h> 24 #include <linux/mount.h> 25 26 /* 27 * This is needed for the following functions: 28 * - inode_has_buffers 29 * - invalidate_inode_buffers 30 * - invalidate_bdev 31 * 32 * FIXME: remove all knowledge of the buffer layer from this file 33 */ 34 #include <linux/buffer_head.h> 35 36 /* 37 * New inode.c implementation. 38 * 39 * This implementation has the basic premise of trying 40 * to be extremely low-overhead and SMP-safe, yet be 41 * simple enough to be "obviously correct". 42 * 43 * Famous last words. 44 */ 45 46 /* inode dynamic allocation 1999, Andrea Arcangeli <andrea@suse.de> */ 47 48 /* #define INODE_PARANOIA 1 */ 49 /* #define INODE_DEBUG 1 */ 50 51 /* 52 * Inode lookup is no longer as critical as it used to be: 53 * most of the lookups are going to be through the dcache. 54 */ 55 #define I_HASHBITS i_hash_shift 56 #define I_HASHMASK i_hash_mask 57 58 static unsigned int i_hash_mask __read_mostly; 59 static unsigned int i_hash_shift __read_mostly; 60 61 /* 62 * Each inode can be on two separate lists. One is 63 * the hash list of the inode, used for lookups. The 64 * other linked list is the "type" list: 65 * "in_use" - valid inode, i_count > 0, i_nlink > 0 66 * "dirty" - as "in_use" but also dirty 67 * "unused" - valid inode, i_count = 0 68 * 69 * A "dirty" list is maintained for each super block, 70 * allowing for low-overhead inode sync() operations. 71 */ 72 73 LIST_HEAD(inode_in_use); 74 LIST_HEAD(inode_unused); 75 static struct hlist_head *inode_hashtable __read_mostly; 76 77 /* 78 * A simple spinlock to protect the list manipulations. 79 * 80 * NOTE! You also have to own the lock if you change 81 * the i_state of an inode while it is in use.. 82 */ 83 DEFINE_SPINLOCK(inode_lock); 84 85 /* 86 * iprune_mutex provides exclusion between the kswapd or try_to_free_pages 87 * icache shrinking path, and the umount path. Without this exclusion, 88 * by the time prune_icache calls iput for the inode whose pages it has 89 * been invalidating, or by the time it calls clear_inode & destroy_inode 90 * from its final dispose_list, the struct super_block they refer to 91 * (for inode->i_sb->s_op) may already have been freed and reused. 92 */ 93 static DEFINE_MUTEX(iprune_mutex); 94 95 /* 96 * Statistics gathering.. 97 */ 98 struct inodes_stat_t inodes_stat; 99 100 static struct kmem_cache * inode_cachep __read_mostly; 101 102 static struct inode *alloc_inode(struct super_block *sb) 103 { 104 static const struct address_space_operations empty_aops; 105 static struct inode_operations empty_iops; 106 static const struct file_operations empty_fops; 107 struct inode *inode; 108 109 if (sb->s_op->alloc_inode) 110 inode = sb->s_op->alloc_inode(sb); 111 else 112 inode = (struct inode *) kmem_cache_alloc(inode_cachep, GFP_KERNEL); 113 114 if (inode) { 115 struct address_space * const mapping = &inode->i_data; 116 117 inode->i_sb = sb; 118 inode->i_blkbits = sb->s_blocksize_bits; 119 inode->i_flags = 0; 120 atomic_set(&inode->i_count, 1); 121 inode->i_op = &empty_iops; 122 inode->i_fop = &empty_fops; 123 inode->i_nlink = 1; 124 atomic_set(&inode->i_writecount, 0); 125 inode->i_size = 0; 126 inode->i_blocks = 0; 127 inode->i_bytes = 0; 128 inode->i_generation = 0; 129 #ifdef CONFIG_QUOTA 130 memset(&inode->i_dquot, 0, sizeof(inode->i_dquot)); 131 #endif 132 inode->i_pipe = NULL; 133 inode->i_bdev = NULL; 134 inode->i_cdev = NULL; 135 inode->i_rdev = 0; 136 inode->dirtied_when = 0; 137 if (security_inode_alloc(inode)) { 138 if (inode->i_sb->s_op->destroy_inode) 139 inode->i_sb->s_op->destroy_inode(inode); 140 else 141 kmem_cache_free(inode_cachep, (inode)); 142 return NULL; 143 } 144 145 mapping->a_ops = &empty_aops; 146 mapping->host = inode; 147 mapping->flags = 0; 148 mapping_set_gfp_mask(mapping, GFP_HIGHUSER); 149 mapping->assoc_mapping = NULL; 150 mapping->backing_dev_info = &default_backing_dev_info; 151 152 /* 153 * If the block_device provides a backing_dev_info for client 154 * inodes then use that. Otherwise the inode share the bdev's 155 * backing_dev_info. 156 */ 157 if (sb->s_bdev) { 158 struct backing_dev_info *bdi; 159 160 bdi = sb->s_bdev->bd_inode_backing_dev_info; 161 if (!bdi) 162 bdi = sb->s_bdev->bd_inode->i_mapping->backing_dev_info; 163 mapping->backing_dev_info = bdi; 164 } 165 inode->i_private = NULL; 166 inode->i_mapping = mapping; 167 } 168 return inode; 169 } 170 171 void destroy_inode(struct inode *inode) 172 { 173 BUG_ON(inode_has_buffers(inode)); 174 security_inode_free(inode); 175 if (inode->i_sb->s_op->destroy_inode) 176 inode->i_sb->s_op->destroy_inode(inode); 177 else 178 kmem_cache_free(inode_cachep, (inode)); 179 } 180 181 182 /* 183 * These are initializations that only need to be done 184 * once, because the fields are idempotent across use 185 * of the inode, so let the slab aware of that. 186 */ 187 void inode_init_once(struct inode *inode) 188 { 189 memset(inode, 0, sizeof(*inode)); 190 INIT_HLIST_NODE(&inode->i_hash); 191 INIT_LIST_HEAD(&inode->i_dentry); 192 INIT_LIST_HEAD(&inode->i_devices); 193 mutex_init(&inode->i_mutex); 194 init_rwsem(&inode->i_alloc_sem); 195 INIT_RADIX_TREE(&inode->i_data.page_tree, GFP_ATOMIC); 196 rwlock_init(&inode->i_data.tree_lock); 197 spin_lock_init(&inode->i_data.i_mmap_lock); 198 INIT_LIST_HEAD(&inode->i_data.private_list); 199 spin_lock_init(&inode->i_data.private_lock); 200 INIT_RAW_PRIO_TREE_ROOT(&inode->i_data.i_mmap); 201 INIT_LIST_HEAD(&inode->i_data.i_mmap_nonlinear); 202 spin_lock_init(&inode->i_lock); 203 i_size_ordered_init(inode); 204 #ifdef CONFIG_INOTIFY 205 INIT_LIST_HEAD(&inode->inotify_watches); 206 mutex_init(&inode->inotify_mutex); 207 #endif 208 } 209 210 EXPORT_SYMBOL(inode_init_once); 211 212 static void init_once(void * foo, struct kmem_cache * cachep, unsigned long flags) 213 { 214 struct inode * inode = (struct inode *) foo; 215 216 if (flags & SLAB_CTOR_CONSTRUCTOR) 217 inode_init_once(inode); 218 } 219 220 /* 221 * inode_lock must be held 222 */ 223 void __iget(struct inode * inode) 224 { 225 if (atomic_read(&inode->i_count)) { 226 atomic_inc(&inode->i_count); 227 return; 228 } 229 atomic_inc(&inode->i_count); 230 if (!(inode->i_state & (I_DIRTY|I_LOCK))) 231 list_move(&inode->i_list, &inode_in_use); 232 inodes_stat.nr_unused--; 233 } 234 235 /** 236 * clear_inode - clear an inode 237 * @inode: inode to clear 238 * 239 * This is called by the filesystem to tell us 240 * that the inode is no longer useful. We just 241 * terminate it with extreme prejudice. 242 */ 243 void clear_inode(struct inode *inode) 244 { 245 might_sleep(); 246 invalidate_inode_buffers(inode); 247 248 BUG_ON(inode->i_data.nrpages); 249 BUG_ON(!(inode->i_state & I_FREEING)); 250 BUG_ON(inode->i_state & I_CLEAR); 251 wait_on_inode(inode); 252 DQUOT_DROP(inode); 253 if (inode->i_sb && inode->i_sb->s_op->clear_inode) 254 inode->i_sb->s_op->clear_inode(inode); 255 if (S_ISBLK(inode->i_mode) && inode->i_bdev) 256 bd_forget(inode); 257 if (S_ISCHR(inode->i_mode) && inode->i_cdev) 258 cd_forget(inode); 259 inode->i_state = I_CLEAR; 260 } 261 262 EXPORT_SYMBOL(clear_inode); 263 264 /* 265 * dispose_list - dispose of the contents of a local list 266 * @head: the head of the list to free 267 * 268 * Dispose-list gets a local list with local inodes in it, so it doesn't 269 * need to worry about list corruption and SMP locks. 270 */ 271 static void dispose_list(struct list_head *head) 272 { 273 int nr_disposed = 0; 274 275 while (!list_empty(head)) { 276 struct inode *inode; 277 278 inode = list_entry(head->next, struct inode, i_list); 279 list_del(&inode->i_list); 280 281 if (inode->i_data.nrpages) 282 truncate_inode_pages(&inode->i_data, 0); 283 clear_inode(inode); 284 285 spin_lock(&inode_lock); 286 hlist_del_init(&inode->i_hash); 287 list_del_init(&inode->i_sb_list); 288 spin_unlock(&inode_lock); 289 290 wake_up_inode(inode); 291 destroy_inode(inode); 292 nr_disposed++; 293 } 294 spin_lock(&inode_lock); 295 inodes_stat.nr_inodes -= nr_disposed; 296 spin_unlock(&inode_lock); 297 } 298 299 /* 300 * Invalidate all inodes for a device. 301 */ 302 static int invalidate_list(struct list_head *head, struct list_head *dispose) 303 { 304 struct list_head *next; 305 int busy = 0, count = 0; 306 307 next = head->next; 308 for (;;) { 309 struct list_head * tmp = next; 310 struct inode * inode; 311 312 /* 313 * We can reschedule here without worrying about the list's 314 * consistency because the per-sb list of inodes must not 315 * change during umount anymore, and because iprune_mutex keeps 316 * shrink_icache_memory() away. 317 */ 318 cond_resched_lock(&inode_lock); 319 320 next = next->next; 321 if (tmp == head) 322 break; 323 inode = list_entry(tmp, struct inode, i_sb_list); 324 invalidate_inode_buffers(inode); 325 if (!atomic_read(&inode->i_count)) { 326 list_move(&inode->i_list, dispose); 327 inode->i_state |= I_FREEING; 328 count++; 329 continue; 330 } 331 busy = 1; 332 } 333 /* only unused inodes may be cached with i_count zero */ 334 inodes_stat.nr_unused -= count; 335 return busy; 336 } 337 338 /** 339 * invalidate_inodes - discard the inodes on a device 340 * @sb: superblock 341 * 342 * Discard all of the inodes for a given superblock. If the discard 343 * fails because there are busy inodes then a non zero value is returned. 344 * If the discard is successful all the inodes have been discarded. 345 */ 346 int invalidate_inodes(struct super_block * sb) 347 { 348 int busy; 349 LIST_HEAD(throw_away); 350 351 mutex_lock(&iprune_mutex); 352 spin_lock(&inode_lock); 353 inotify_unmount_inodes(&sb->s_inodes); 354 busy = invalidate_list(&sb->s_inodes, &throw_away); 355 spin_unlock(&inode_lock); 356 357 dispose_list(&throw_away); 358 mutex_unlock(&iprune_mutex); 359 360 return busy; 361 } 362 363 EXPORT_SYMBOL(invalidate_inodes); 364 365 static int can_unuse(struct inode *inode) 366 { 367 if (inode->i_state) 368 return 0; 369 if (inode_has_buffers(inode)) 370 return 0; 371 if (atomic_read(&inode->i_count)) 372 return 0; 373 if (inode->i_data.nrpages) 374 return 0; 375 return 1; 376 } 377 378 /* 379 * Scan `goal' inodes on the unused list for freeable ones. They are moved to 380 * a temporary list and then are freed outside inode_lock by dispose_list(). 381 * 382 * Any inodes which are pinned purely because of attached pagecache have their 383 * pagecache removed. We expect the final iput() on that inode to add it to 384 * the front of the inode_unused list. So look for it there and if the 385 * inode is still freeable, proceed. The right inode is found 99.9% of the 386 * time in testing on a 4-way. 387 * 388 * If the inode has metadata buffers attached to mapping->private_list then 389 * try to remove them. 390 */ 391 static void prune_icache(int nr_to_scan) 392 { 393 LIST_HEAD(freeable); 394 int nr_pruned = 0; 395 int nr_scanned; 396 unsigned long reap = 0; 397 398 mutex_lock(&iprune_mutex); 399 spin_lock(&inode_lock); 400 for (nr_scanned = 0; nr_scanned < nr_to_scan; nr_scanned++) { 401 struct inode *inode; 402 403 if (list_empty(&inode_unused)) 404 break; 405 406 inode = list_entry(inode_unused.prev, struct inode, i_list); 407 408 if (inode->i_state || atomic_read(&inode->i_count)) { 409 list_move(&inode->i_list, &inode_unused); 410 continue; 411 } 412 if (inode_has_buffers(inode) || inode->i_data.nrpages) { 413 __iget(inode); 414 spin_unlock(&inode_lock); 415 if (remove_inode_buffers(inode)) 416 reap += invalidate_mapping_pages(&inode->i_data, 417 0, -1); 418 iput(inode); 419 spin_lock(&inode_lock); 420 421 if (inode != list_entry(inode_unused.next, 422 struct inode, i_list)) 423 continue; /* wrong inode or list_empty */ 424 if (!can_unuse(inode)) 425 continue; 426 } 427 list_move(&inode->i_list, &freeable); 428 inode->i_state |= I_FREEING; 429 nr_pruned++; 430 } 431 inodes_stat.nr_unused -= nr_pruned; 432 if (current_is_kswapd()) 433 __count_vm_events(KSWAPD_INODESTEAL, reap); 434 else 435 __count_vm_events(PGINODESTEAL, reap); 436 spin_unlock(&inode_lock); 437 438 dispose_list(&freeable); 439 mutex_unlock(&iprune_mutex); 440 } 441 442 /* 443 * shrink_icache_memory() will attempt to reclaim some unused inodes. Here, 444 * "unused" means that no dentries are referring to the inodes: the files are 445 * not open and the dcache references to those inodes have already been 446 * reclaimed. 447 * 448 * This function is passed the number of inodes to scan, and it returns the 449 * total number of remaining possibly-reclaimable inodes. 450 */ 451 static int shrink_icache_memory(int nr, gfp_t gfp_mask) 452 { 453 if (nr) { 454 /* 455 * Nasty deadlock avoidance. We may hold various FS locks, 456 * and we don't want to recurse into the FS that called us 457 * in clear_inode() and friends.. 458 */ 459 if (!(gfp_mask & __GFP_FS)) 460 return -1; 461 prune_icache(nr); 462 } 463 return (inodes_stat.nr_unused / 100) * sysctl_vfs_cache_pressure; 464 } 465 466 static void __wait_on_freeing_inode(struct inode *inode); 467 /* 468 * Called with the inode lock held. 469 * NOTE: we are not increasing the inode-refcount, you must call __iget() 470 * by hand after calling find_inode now! This simplifies iunique and won't 471 * add any additional branch in the common code. 472 */ 473 static struct inode * find_inode(struct super_block * sb, struct hlist_head *head, int (*test)(struct inode *, void *), void *data) 474 { 475 struct hlist_node *node; 476 struct inode * inode = NULL; 477 478 repeat: 479 hlist_for_each (node, head) { 480 inode = hlist_entry(node, struct inode, i_hash); 481 if (inode->i_sb != sb) 482 continue; 483 if (!test(inode, data)) 484 continue; 485 if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) { 486 __wait_on_freeing_inode(inode); 487 goto repeat; 488 } 489 break; 490 } 491 return node ? inode : NULL; 492 } 493 494 /* 495 * find_inode_fast is the fast path version of find_inode, see the comment at 496 * iget_locked for details. 497 */ 498 static struct inode * find_inode_fast(struct super_block * sb, struct hlist_head *head, unsigned long ino) 499 { 500 struct hlist_node *node; 501 struct inode * inode = NULL; 502 503 repeat: 504 hlist_for_each (node, head) { 505 inode = hlist_entry(node, struct inode, i_hash); 506 if (inode->i_ino != ino) 507 continue; 508 if (inode->i_sb != sb) 509 continue; 510 if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) { 511 __wait_on_freeing_inode(inode); 512 goto repeat; 513 } 514 break; 515 } 516 return node ? inode : NULL; 517 } 518 519 /** 520 * new_inode - obtain an inode 521 * @sb: superblock 522 * 523 * Allocates a new inode for given superblock. 524 */ 525 struct inode *new_inode(struct super_block *sb) 526 { 527 static unsigned long last_ino; 528 struct inode * inode; 529 530 spin_lock_prefetch(&inode_lock); 531 532 inode = alloc_inode(sb); 533 if (inode) { 534 spin_lock(&inode_lock); 535 inodes_stat.nr_inodes++; 536 list_add(&inode->i_list, &inode_in_use); 537 list_add(&inode->i_sb_list, &sb->s_inodes); 538 inode->i_ino = ++last_ino; 539 inode->i_state = 0; 540 spin_unlock(&inode_lock); 541 } 542 return inode; 543 } 544 545 EXPORT_SYMBOL(new_inode); 546 547 void unlock_new_inode(struct inode *inode) 548 { 549 /* 550 * This is special! We do not need the spinlock 551 * when clearing I_LOCK, because we're guaranteed 552 * that nobody else tries to do anything about the 553 * state of the inode when it is locked, as we 554 * just created it (so there can be no old holders 555 * that haven't tested I_LOCK). 556 */ 557 inode->i_state &= ~(I_LOCK|I_NEW); 558 wake_up_inode(inode); 559 } 560 561 EXPORT_SYMBOL(unlock_new_inode); 562 563 /* 564 * This is called without the inode lock held.. Be careful. 565 * 566 * We no longer cache the sb_flags in i_flags - see fs.h 567 * -- rmk@arm.uk.linux.org 568 */ 569 static struct inode * get_new_inode(struct super_block *sb, struct hlist_head *head, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *data) 570 { 571 struct inode * inode; 572 573 inode = alloc_inode(sb); 574 if (inode) { 575 struct inode * old; 576 577 spin_lock(&inode_lock); 578 /* We released the lock, so.. */ 579 old = find_inode(sb, head, test, data); 580 if (!old) { 581 if (set(inode, data)) 582 goto set_failed; 583 584 inodes_stat.nr_inodes++; 585 list_add(&inode->i_list, &inode_in_use); 586 list_add(&inode->i_sb_list, &sb->s_inodes); 587 hlist_add_head(&inode->i_hash, head); 588 inode->i_state = I_LOCK|I_NEW; 589 spin_unlock(&inode_lock); 590 591 /* Return the locked inode with I_NEW set, the 592 * caller is responsible for filling in the contents 593 */ 594 return inode; 595 } 596 597 /* 598 * Uhhuh, somebody else created the same inode under 599 * us. Use the old inode instead of the one we just 600 * allocated. 601 */ 602 __iget(old); 603 spin_unlock(&inode_lock); 604 destroy_inode(inode); 605 inode = old; 606 wait_on_inode(inode); 607 } 608 return inode; 609 610 set_failed: 611 spin_unlock(&inode_lock); 612 destroy_inode(inode); 613 return NULL; 614 } 615 616 /* 617 * get_new_inode_fast is the fast path version of get_new_inode, see the 618 * comment at iget_locked for details. 619 */ 620 static struct inode * get_new_inode_fast(struct super_block *sb, struct hlist_head *head, unsigned long ino) 621 { 622 struct inode * inode; 623 624 inode = alloc_inode(sb); 625 if (inode) { 626 struct inode * old; 627 628 spin_lock(&inode_lock); 629 /* We released the lock, so.. */ 630 old = find_inode_fast(sb, head, ino); 631 if (!old) { 632 inode->i_ino = ino; 633 inodes_stat.nr_inodes++; 634 list_add(&inode->i_list, &inode_in_use); 635 list_add(&inode->i_sb_list, &sb->s_inodes); 636 hlist_add_head(&inode->i_hash, head); 637 inode->i_state = I_LOCK|I_NEW; 638 spin_unlock(&inode_lock); 639 640 /* Return the locked inode with I_NEW set, the 641 * caller is responsible for filling in the contents 642 */ 643 return inode; 644 } 645 646 /* 647 * Uhhuh, somebody else created the same inode under 648 * us. Use the old inode instead of the one we just 649 * allocated. 650 */ 651 __iget(old); 652 spin_unlock(&inode_lock); 653 destroy_inode(inode); 654 inode = old; 655 wait_on_inode(inode); 656 } 657 return inode; 658 } 659 660 static unsigned long hash(struct super_block *sb, unsigned long hashval) 661 { 662 unsigned long tmp; 663 664 tmp = (hashval * (unsigned long)sb) ^ (GOLDEN_RATIO_PRIME + hashval) / 665 L1_CACHE_BYTES; 666 tmp = tmp ^ ((tmp ^ GOLDEN_RATIO_PRIME) >> I_HASHBITS); 667 return tmp & I_HASHMASK; 668 } 669 670 /** 671 * iunique - get a unique inode number 672 * @sb: superblock 673 * @max_reserved: highest reserved inode number 674 * 675 * Obtain an inode number that is unique on the system for a given 676 * superblock. This is used by file systems that have no natural 677 * permanent inode numbering system. An inode number is returned that 678 * is higher than the reserved limit but unique. 679 * 680 * BUGS: 681 * With a large number of inodes live on the file system this function 682 * currently becomes quite slow. 683 */ 684 ino_t iunique(struct super_block *sb, ino_t max_reserved) 685 { 686 static ino_t counter; 687 struct inode *inode; 688 struct hlist_head * head; 689 ino_t res; 690 spin_lock(&inode_lock); 691 retry: 692 if (counter > max_reserved) { 693 head = inode_hashtable + hash(sb,counter); 694 res = counter++; 695 inode = find_inode_fast(sb, head, res); 696 if (!inode) { 697 spin_unlock(&inode_lock); 698 return res; 699 } 700 } else { 701 counter = max_reserved + 1; 702 } 703 goto retry; 704 705 } 706 707 EXPORT_SYMBOL(iunique); 708 709 struct inode *igrab(struct inode *inode) 710 { 711 spin_lock(&inode_lock); 712 if (!(inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE))) 713 __iget(inode); 714 else 715 /* 716 * Handle the case where s_op->clear_inode is not been 717 * called yet, and somebody is calling igrab 718 * while the inode is getting freed. 719 */ 720 inode = NULL; 721 spin_unlock(&inode_lock); 722 return inode; 723 } 724 725 EXPORT_SYMBOL(igrab); 726 727 /** 728 * ifind - internal function, you want ilookup5() or iget5(). 729 * @sb: super block of file system to search 730 * @head: the head of the list to search 731 * @test: callback used for comparisons between inodes 732 * @data: opaque data pointer to pass to @test 733 * @wait: if true wait for the inode to be unlocked, if false do not 734 * 735 * ifind() searches for the inode specified by @data in the inode 736 * cache. This is a generalized version of ifind_fast() for file systems where 737 * the inode number is not sufficient for unique identification of an inode. 738 * 739 * If the inode is in the cache, the inode is returned with an incremented 740 * reference count. 741 * 742 * Otherwise NULL is returned. 743 * 744 * Note, @test is called with the inode_lock held, so can't sleep. 745 */ 746 static struct inode *ifind(struct super_block *sb, 747 struct hlist_head *head, int (*test)(struct inode *, void *), 748 void *data, const int wait) 749 { 750 struct inode *inode; 751 752 spin_lock(&inode_lock); 753 inode = find_inode(sb, head, test, data); 754 if (inode) { 755 __iget(inode); 756 spin_unlock(&inode_lock); 757 if (likely(wait)) 758 wait_on_inode(inode); 759 return inode; 760 } 761 spin_unlock(&inode_lock); 762 return NULL; 763 } 764 765 /** 766 * ifind_fast - internal function, you want ilookup() or iget(). 767 * @sb: super block of file system to search 768 * @head: head of the list to search 769 * @ino: inode number to search for 770 * 771 * ifind_fast() searches for the inode @ino in the inode cache. This is for 772 * file systems where the inode number is sufficient for unique identification 773 * of an inode. 774 * 775 * If the inode is in the cache, the inode is returned with an incremented 776 * reference count. 777 * 778 * Otherwise NULL is returned. 779 */ 780 static struct inode *ifind_fast(struct super_block *sb, 781 struct hlist_head *head, unsigned long ino) 782 { 783 struct inode *inode; 784 785 spin_lock(&inode_lock); 786 inode = find_inode_fast(sb, head, ino); 787 if (inode) { 788 __iget(inode); 789 spin_unlock(&inode_lock); 790 wait_on_inode(inode); 791 return inode; 792 } 793 spin_unlock(&inode_lock); 794 return NULL; 795 } 796 797 /** 798 * ilookup5_nowait - search for an inode in the inode cache 799 * @sb: super block of file system to search 800 * @hashval: hash value (usually inode number) to search for 801 * @test: callback used for comparisons between inodes 802 * @data: opaque data pointer to pass to @test 803 * 804 * ilookup5() uses ifind() to search for the inode specified by @hashval and 805 * @data in the inode cache. This is a generalized version of ilookup() for 806 * file systems where the inode number is not sufficient for unique 807 * identification of an inode. 808 * 809 * If the inode is in the cache, the inode is returned with an incremented 810 * reference count. Note, the inode lock is not waited upon so you have to be 811 * very careful what you do with the returned inode. You probably should be 812 * using ilookup5() instead. 813 * 814 * Otherwise NULL is returned. 815 * 816 * Note, @test is called with the inode_lock held, so can't sleep. 817 */ 818 struct inode *ilookup5_nowait(struct super_block *sb, unsigned long hashval, 819 int (*test)(struct inode *, void *), void *data) 820 { 821 struct hlist_head *head = inode_hashtable + hash(sb, hashval); 822 823 return ifind(sb, head, test, data, 0); 824 } 825 826 EXPORT_SYMBOL(ilookup5_nowait); 827 828 /** 829 * ilookup5 - search for an inode in the inode cache 830 * @sb: super block of file system to search 831 * @hashval: hash value (usually inode number) to search for 832 * @test: callback used for comparisons between inodes 833 * @data: opaque data pointer to pass to @test 834 * 835 * ilookup5() uses ifind() to search for the inode specified by @hashval and 836 * @data in the inode cache. This is a generalized version of ilookup() for 837 * file systems where the inode number is not sufficient for unique 838 * identification of an inode. 839 * 840 * If the inode is in the cache, the inode lock is waited upon and the inode is 841 * returned with an incremented reference count. 842 * 843 * Otherwise NULL is returned. 844 * 845 * Note, @test is called with the inode_lock held, so can't sleep. 846 */ 847 struct inode *ilookup5(struct super_block *sb, unsigned long hashval, 848 int (*test)(struct inode *, void *), void *data) 849 { 850 struct hlist_head *head = inode_hashtable + hash(sb, hashval); 851 852 return ifind(sb, head, test, data, 1); 853 } 854 855 EXPORT_SYMBOL(ilookup5); 856 857 /** 858 * ilookup - search for an inode in the inode cache 859 * @sb: super block of file system to search 860 * @ino: inode number to search for 861 * 862 * ilookup() uses ifind_fast() to search for the inode @ino in the inode cache. 863 * This is for file systems where the inode number is sufficient for unique 864 * identification of an inode. 865 * 866 * If the inode is in the cache, the inode is returned with an incremented 867 * reference count. 868 * 869 * Otherwise NULL is returned. 870 */ 871 struct inode *ilookup(struct super_block *sb, unsigned long ino) 872 { 873 struct hlist_head *head = inode_hashtable + hash(sb, ino); 874 875 return ifind_fast(sb, head, ino); 876 } 877 878 EXPORT_SYMBOL(ilookup); 879 880 /** 881 * iget5_locked - obtain an inode from a mounted file system 882 * @sb: super block of file system 883 * @hashval: hash value (usually inode number) to get 884 * @test: callback used for comparisons between inodes 885 * @set: callback used to initialize a new struct inode 886 * @data: opaque data pointer to pass to @test and @set 887 * 888 * This is iget() without the read_inode() portion of get_new_inode(). 889 * 890 * iget5_locked() uses ifind() to search for the inode specified by @hashval 891 * and @data in the inode cache and if present it is returned with an increased 892 * reference count. This is a generalized version of iget_locked() for file 893 * systems where the inode number is not sufficient for unique identification 894 * of an inode. 895 * 896 * If the inode is not in cache, get_new_inode() is called to allocate a new 897 * inode and this is returned locked, hashed, and with the I_NEW flag set. The 898 * file system gets to fill it in before unlocking it via unlock_new_inode(). 899 * 900 * Note both @test and @set are called with the inode_lock held, so can't sleep. 901 */ 902 struct inode *iget5_locked(struct super_block *sb, unsigned long hashval, 903 int (*test)(struct inode *, void *), 904 int (*set)(struct inode *, void *), void *data) 905 { 906 struct hlist_head *head = inode_hashtable + hash(sb, hashval); 907 struct inode *inode; 908 909 inode = ifind(sb, head, test, data, 1); 910 if (inode) 911 return inode; 912 /* 913 * get_new_inode() will do the right thing, re-trying the search 914 * in case it had to block at any point. 915 */ 916 return get_new_inode(sb, head, test, set, data); 917 } 918 919 EXPORT_SYMBOL(iget5_locked); 920 921 /** 922 * iget_locked - obtain an inode from a mounted file system 923 * @sb: super block of file system 924 * @ino: inode number to get 925 * 926 * This is iget() without the read_inode() portion of get_new_inode_fast(). 927 * 928 * iget_locked() uses ifind_fast() to search for the inode specified by @ino in 929 * the inode cache and if present it is returned with an increased reference 930 * count. This is for file systems where the inode number is sufficient for 931 * unique identification of an inode. 932 * 933 * If the inode is not in cache, get_new_inode_fast() is called to allocate a 934 * new inode and this is returned locked, hashed, and with the I_NEW flag set. 935 * The file system gets to fill it in before unlocking it via 936 * unlock_new_inode(). 937 */ 938 struct inode *iget_locked(struct super_block *sb, unsigned long ino) 939 { 940 struct hlist_head *head = inode_hashtable + hash(sb, ino); 941 struct inode *inode; 942 943 inode = ifind_fast(sb, head, ino); 944 if (inode) 945 return inode; 946 /* 947 * get_new_inode_fast() will do the right thing, re-trying the search 948 * in case it had to block at any point. 949 */ 950 return get_new_inode_fast(sb, head, ino); 951 } 952 953 EXPORT_SYMBOL(iget_locked); 954 955 /** 956 * __insert_inode_hash - hash an inode 957 * @inode: unhashed inode 958 * @hashval: unsigned long value used to locate this object in the 959 * inode_hashtable. 960 * 961 * Add an inode to the inode hash for this superblock. 962 */ 963 void __insert_inode_hash(struct inode *inode, unsigned long hashval) 964 { 965 struct hlist_head *head = inode_hashtable + hash(inode->i_sb, hashval); 966 spin_lock(&inode_lock); 967 hlist_add_head(&inode->i_hash, head); 968 spin_unlock(&inode_lock); 969 } 970 971 EXPORT_SYMBOL(__insert_inode_hash); 972 973 /** 974 * remove_inode_hash - remove an inode from the hash 975 * @inode: inode to unhash 976 * 977 * Remove an inode from the superblock. 978 */ 979 void remove_inode_hash(struct inode *inode) 980 { 981 spin_lock(&inode_lock); 982 hlist_del_init(&inode->i_hash); 983 spin_unlock(&inode_lock); 984 } 985 986 EXPORT_SYMBOL(remove_inode_hash); 987 988 /* 989 * Tell the filesystem that this inode is no longer of any interest and should 990 * be completely destroyed. 991 * 992 * We leave the inode in the inode hash table until *after* the filesystem's 993 * ->delete_inode completes. This ensures that an iget (such as nfsd might 994 * instigate) will always find up-to-date information either in the hash or on 995 * disk. 996 * 997 * I_FREEING is set so that no-one will take a new reference to the inode while 998 * it is being deleted. 999 */ 1000 void generic_delete_inode(struct inode *inode) 1001 { 1002 const struct super_operations *op = inode->i_sb->s_op; 1003 1004 list_del_init(&inode->i_list); 1005 list_del_init(&inode->i_sb_list); 1006 inode->i_state |= I_FREEING; 1007 inodes_stat.nr_inodes--; 1008 spin_unlock(&inode_lock); 1009 1010 security_inode_delete(inode); 1011 1012 if (op->delete_inode) { 1013 void (*delete)(struct inode *) = op->delete_inode; 1014 if (!is_bad_inode(inode)) 1015 DQUOT_INIT(inode); 1016 /* Filesystems implementing their own 1017 * s_op->delete_inode are required to call 1018 * truncate_inode_pages and clear_inode() 1019 * internally */ 1020 delete(inode); 1021 } else { 1022 truncate_inode_pages(&inode->i_data, 0); 1023 clear_inode(inode); 1024 } 1025 spin_lock(&inode_lock); 1026 hlist_del_init(&inode->i_hash); 1027 spin_unlock(&inode_lock); 1028 wake_up_inode(inode); 1029 BUG_ON(inode->i_state != I_CLEAR); 1030 destroy_inode(inode); 1031 } 1032 1033 EXPORT_SYMBOL(generic_delete_inode); 1034 1035 static void generic_forget_inode(struct inode *inode) 1036 { 1037 struct super_block *sb = inode->i_sb; 1038 1039 if (!hlist_unhashed(&inode->i_hash)) { 1040 if (!(inode->i_state & (I_DIRTY|I_LOCK))) 1041 list_move(&inode->i_list, &inode_unused); 1042 inodes_stat.nr_unused++; 1043 if (!sb || (sb->s_flags & MS_ACTIVE)) { 1044 spin_unlock(&inode_lock); 1045 return; 1046 } 1047 inode->i_state |= I_WILL_FREE; 1048 spin_unlock(&inode_lock); 1049 write_inode_now(inode, 1); 1050 spin_lock(&inode_lock); 1051 inode->i_state &= ~I_WILL_FREE; 1052 inodes_stat.nr_unused--; 1053 hlist_del_init(&inode->i_hash); 1054 } 1055 list_del_init(&inode->i_list); 1056 list_del_init(&inode->i_sb_list); 1057 inode->i_state |= I_FREEING; 1058 inodes_stat.nr_inodes--; 1059 spin_unlock(&inode_lock); 1060 if (inode->i_data.nrpages) 1061 truncate_inode_pages(&inode->i_data, 0); 1062 clear_inode(inode); 1063 wake_up_inode(inode); 1064 destroy_inode(inode); 1065 } 1066 1067 /* 1068 * Normal UNIX filesystem behaviour: delete the 1069 * inode when the usage count drops to zero, and 1070 * i_nlink is zero. 1071 */ 1072 void generic_drop_inode(struct inode *inode) 1073 { 1074 if (!inode->i_nlink) 1075 generic_delete_inode(inode); 1076 else 1077 generic_forget_inode(inode); 1078 } 1079 1080 EXPORT_SYMBOL_GPL(generic_drop_inode); 1081 1082 /* 1083 * Called when we're dropping the last reference 1084 * to an inode. 1085 * 1086 * Call the FS "drop()" function, defaulting to 1087 * the legacy UNIX filesystem behaviour.. 1088 * 1089 * NOTE! NOTE! NOTE! We're called with the inode lock 1090 * held, and the drop function is supposed to release 1091 * the lock! 1092 */ 1093 static inline void iput_final(struct inode *inode) 1094 { 1095 const struct super_operations *op = inode->i_sb->s_op; 1096 void (*drop)(struct inode *) = generic_drop_inode; 1097 1098 if (op && op->drop_inode) 1099 drop = op->drop_inode; 1100 drop(inode); 1101 } 1102 1103 /** 1104 * iput - put an inode 1105 * @inode: inode to put 1106 * 1107 * Puts an inode, dropping its usage count. If the inode use count hits 1108 * zero, the inode is then freed and may also be destroyed. 1109 * 1110 * Consequently, iput() can sleep. 1111 */ 1112 void iput(struct inode *inode) 1113 { 1114 if (inode) { 1115 const struct super_operations *op = inode->i_sb->s_op; 1116 1117 BUG_ON(inode->i_state == I_CLEAR); 1118 1119 if (op && op->put_inode) 1120 op->put_inode(inode); 1121 1122 if (atomic_dec_and_lock(&inode->i_count, &inode_lock)) 1123 iput_final(inode); 1124 } 1125 } 1126 1127 EXPORT_SYMBOL(iput); 1128 1129 /** 1130 * bmap - find a block number in a file 1131 * @inode: inode of file 1132 * @block: block to find 1133 * 1134 * Returns the block number on the device holding the inode that 1135 * is the disk block number for the block of the file requested. 1136 * That is, asked for block 4 of inode 1 the function will return the 1137 * disk block relative to the disk start that holds that block of the 1138 * file. 1139 */ 1140 sector_t bmap(struct inode * inode, sector_t block) 1141 { 1142 sector_t res = 0; 1143 if (inode->i_mapping->a_ops->bmap) 1144 res = inode->i_mapping->a_ops->bmap(inode->i_mapping, block); 1145 return res; 1146 } 1147 EXPORT_SYMBOL(bmap); 1148 1149 /** 1150 * touch_atime - update the access time 1151 * @mnt: mount the inode is accessed on 1152 * @dentry: dentry accessed 1153 * 1154 * Update the accessed time on an inode and mark it for writeback. 1155 * This function automatically handles read only file systems and media, 1156 * as well as the "noatime" flag and inode specific "noatime" markers. 1157 */ 1158 void touch_atime(struct vfsmount *mnt, struct dentry *dentry) 1159 { 1160 struct inode *inode = dentry->d_inode; 1161 struct timespec now; 1162 1163 if (inode->i_flags & S_NOATIME) 1164 return; 1165 if (IS_NOATIME(inode)) 1166 return; 1167 if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode)) 1168 return; 1169 1170 /* 1171 * We may have a NULL vfsmount when coming from NFSD 1172 */ 1173 if (mnt) { 1174 if (mnt->mnt_flags & MNT_NOATIME) 1175 return; 1176 if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode)) 1177 return; 1178 1179 if (mnt->mnt_flags & MNT_RELATIME) { 1180 /* 1181 * With relative atime, only update atime if the 1182 * previous atime is earlier than either the ctime or 1183 * mtime. 1184 */ 1185 if (timespec_compare(&inode->i_mtime, 1186 &inode->i_atime) < 0 && 1187 timespec_compare(&inode->i_ctime, 1188 &inode->i_atime) < 0) 1189 return; 1190 } 1191 } 1192 1193 now = current_fs_time(inode->i_sb); 1194 if (timespec_equal(&inode->i_atime, &now)) 1195 return; 1196 1197 inode->i_atime = now; 1198 mark_inode_dirty_sync(inode); 1199 } 1200 EXPORT_SYMBOL(touch_atime); 1201 1202 /** 1203 * file_update_time - update mtime and ctime time 1204 * @file: file accessed 1205 * 1206 * Update the mtime and ctime members of an inode and mark the inode 1207 * for writeback. Note that this function is meant exclusively for 1208 * usage in the file write path of filesystems, and filesystems may 1209 * choose to explicitly ignore update via this function with the 1210 * S_NOCTIME inode flag, e.g. for network filesystem where these 1211 * timestamps are handled by the server. 1212 */ 1213 1214 void file_update_time(struct file *file) 1215 { 1216 struct inode *inode = file->f_path.dentry->d_inode; 1217 struct timespec now; 1218 int sync_it = 0; 1219 1220 if (IS_NOCMTIME(inode)) 1221 return; 1222 if (IS_RDONLY(inode)) 1223 return; 1224 1225 now = current_fs_time(inode->i_sb); 1226 if (!timespec_equal(&inode->i_mtime, &now)) { 1227 inode->i_mtime = now; 1228 sync_it = 1; 1229 } 1230 1231 if (!timespec_equal(&inode->i_ctime, &now)) { 1232 inode->i_ctime = now; 1233 sync_it = 1; 1234 } 1235 1236 if (sync_it) 1237 mark_inode_dirty_sync(inode); 1238 } 1239 1240 EXPORT_SYMBOL(file_update_time); 1241 1242 int inode_needs_sync(struct inode *inode) 1243 { 1244 if (IS_SYNC(inode)) 1245 return 1; 1246 if (S_ISDIR(inode->i_mode) && IS_DIRSYNC(inode)) 1247 return 1; 1248 return 0; 1249 } 1250 1251 EXPORT_SYMBOL(inode_needs_sync); 1252 1253 int inode_wait(void *word) 1254 { 1255 schedule(); 1256 return 0; 1257 } 1258 1259 /* 1260 * If we try to find an inode in the inode hash while it is being 1261 * deleted, we have to wait until the filesystem completes its 1262 * deletion before reporting that it isn't found. This function waits 1263 * until the deletion _might_ have completed. Callers are responsible 1264 * to recheck inode state. 1265 * 1266 * It doesn't matter if I_LOCK is not set initially, a call to 1267 * wake_up_inode() after removing from the hash list will DTRT. 1268 * 1269 * This is called with inode_lock held. 1270 */ 1271 static void __wait_on_freeing_inode(struct inode *inode) 1272 { 1273 wait_queue_head_t *wq; 1274 DEFINE_WAIT_BIT(wait, &inode->i_state, __I_LOCK); 1275 wq = bit_waitqueue(&inode->i_state, __I_LOCK); 1276 prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE); 1277 spin_unlock(&inode_lock); 1278 schedule(); 1279 finish_wait(wq, &wait.wait); 1280 spin_lock(&inode_lock); 1281 } 1282 1283 void wake_up_inode(struct inode *inode) 1284 { 1285 /* 1286 * Prevent speculative execution through spin_unlock(&inode_lock); 1287 */ 1288 smp_mb(); 1289 wake_up_bit(&inode->i_state, __I_LOCK); 1290 } 1291 1292 /* 1293 * We rarely want to lock two inodes that do not have a parent/child 1294 * relationship (such as directory, child inode) simultaneously. The 1295 * vast majority of file systems should be able to get along fine 1296 * without this. Do not use these functions except as a last resort. 1297 */ 1298 void inode_double_lock(struct inode *inode1, struct inode *inode2) 1299 { 1300 if (inode1 == NULL || inode2 == NULL || inode1 == inode2) { 1301 if (inode1) 1302 mutex_lock(&inode1->i_mutex); 1303 else if (inode2) 1304 mutex_lock(&inode2->i_mutex); 1305 return; 1306 } 1307 1308 if (inode1 < inode2) { 1309 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT); 1310 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); 1311 } else { 1312 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT); 1313 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD); 1314 } 1315 } 1316 EXPORT_SYMBOL(inode_double_lock); 1317 1318 void inode_double_unlock(struct inode *inode1, struct inode *inode2) 1319 { 1320 if (inode1) 1321 mutex_unlock(&inode1->i_mutex); 1322 1323 if (inode2 && inode2 != inode1) 1324 mutex_unlock(&inode2->i_mutex); 1325 } 1326 EXPORT_SYMBOL(inode_double_unlock); 1327 1328 static __initdata unsigned long ihash_entries; 1329 static int __init set_ihash_entries(char *str) 1330 { 1331 if (!str) 1332 return 0; 1333 ihash_entries = simple_strtoul(str, &str, 0); 1334 return 1; 1335 } 1336 __setup("ihash_entries=", set_ihash_entries); 1337 1338 /* 1339 * Initialize the waitqueues and inode hash table. 1340 */ 1341 void __init inode_init_early(void) 1342 { 1343 int loop; 1344 1345 /* If hashes are distributed across NUMA nodes, defer 1346 * hash allocation until vmalloc space is available. 1347 */ 1348 if (hashdist) 1349 return; 1350 1351 inode_hashtable = 1352 alloc_large_system_hash("Inode-cache", 1353 sizeof(struct hlist_head), 1354 ihash_entries, 1355 14, 1356 HASH_EARLY, 1357 &i_hash_shift, 1358 &i_hash_mask, 1359 0); 1360 1361 for (loop = 0; loop < (1 << i_hash_shift); loop++) 1362 INIT_HLIST_HEAD(&inode_hashtable[loop]); 1363 } 1364 1365 void __init inode_init(unsigned long mempages) 1366 { 1367 int loop; 1368 1369 /* inode slab cache */ 1370 inode_cachep = kmem_cache_create("inode_cache", 1371 sizeof(struct inode), 1372 0, 1373 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC| 1374 SLAB_MEM_SPREAD), 1375 init_once, 1376 NULL); 1377 set_shrinker(DEFAULT_SEEKS, shrink_icache_memory); 1378 1379 /* Hash may have been set up in inode_init_early */ 1380 if (!hashdist) 1381 return; 1382 1383 inode_hashtable = 1384 alloc_large_system_hash("Inode-cache", 1385 sizeof(struct hlist_head), 1386 ihash_entries, 1387 14, 1388 0, 1389 &i_hash_shift, 1390 &i_hash_mask, 1391 0); 1392 1393 for (loop = 0; loop < (1 << i_hash_shift); loop++) 1394 INIT_HLIST_HEAD(&inode_hashtable[loop]); 1395 } 1396 1397 void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev) 1398 { 1399 inode->i_mode = mode; 1400 if (S_ISCHR(mode)) { 1401 inode->i_fop = &def_chr_fops; 1402 inode->i_rdev = rdev; 1403 } else if (S_ISBLK(mode)) { 1404 inode->i_fop = &def_blk_fops; 1405 inode->i_rdev = rdev; 1406 } else if (S_ISFIFO(mode)) 1407 inode->i_fop = &def_fifo_fops; 1408 else if (S_ISSOCK(mode)) 1409 inode->i_fop = &bad_sock_fops; 1410 else 1411 printk(KERN_DEBUG "init_special_inode: bogus i_mode (%o)\n", 1412 mode); 1413 } 1414 EXPORT_SYMBOL(init_special_inode); 1415