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_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == 217 SLAB_CTOR_CONSTRUCTOR) 218 inode_init_once(inode); 219 } 220 221 /* 222 * inode_lock must be held 223 */ 224 void __iget(struct inode * inode) 225 { 226 if (atomic_read(&inode->i_count)) { 227 atomic_inc(&inode->i_count); 228 return; 229 } 230 atomic_inc(&inode->i_count); 231 if (!(inode->i_state & (I_DIRTY|I_LOCK))) 232 list_move(&inode->i_list, &inode_in_use); 233 inodes_stat.nr_unused--; 234 } 235 236 /** 237 * clear_inode - clear an inode 238 * @inode: inode to clear 239 * 240 * This is called by the filesystem to tell us 241 * that the inode is no longer useful. We just 242 * terminate it with extreme prejudice. 243 */ 244 void clear_inode(struct inode *inode) 245 { 246 might_sleep(); 247 invalidate_inode_buffers(inode); 248 249 BUG_ON(inode->i_data.nrpages); 250 BUG_ON(!(inode->i_state & I_FREEING)); 251 BUG_ON(inode->i_state & I_CLEAR); 252 wait_on_inode(inode); 253 DQUOT_DROP(inode); 254 if (inode->i_sb && inode->i_sb->s_op->clear_inode) 255 inode->i_sb->s_op->clear_inode(inode); 256 if (S_ISBLK(inode->i_mode) && inode->i_bdev) 257 bd_forget(inode); 258 if (S_ISCHR(inode->i_mode) && inode->i_cdev) 259 cd_forget(inode); 260 inode->i_state = I_CLEAR; 261 } 262 263 EXPORT_SYMBOL(clear_inode); 264 265 /* 266 * dispose_list - dispose of the contents of a local list 267 * @head: the head of the list to free 268 * 269 * Dispose-list gets a local list with local inodes in it, so it doesn't 270 * need to worry about list corruption and SMP locks. 271 */ 272 static void dispose_list(struct list_head *head) 273 { 274 int nr_disposed = 0; 275 276 while (!list_empty(head)) { 277 struct inode *inode; 278 279 inode = list_entry(head->next, struct inode, i_list); 280 list_del(&inode->i_list); 281 282 if (inode->i_data.nrpages) 283 truncate_inode_pages(&inode->i_data, 0); 284 clear_inode(inode); 285 286 spin_lock(&inode_lock); 287 hlist_del_init(&inode->i_hash); 288 list_del_init(&inode->i_sb_list); 289 spin_unlock(&inode_lock); 290 291 wake_up_inode(inode); 292 destroy_inode(inode); 293 nr_disposed++; 294 } 295 spin_lock(&inode_lock); 296 inodes_stat.nr_inodes -= nr_disposed; 297 spin_unlock(&inode_lock); 298 } 299 300 /* 301 * Invalidate all inodes for a device. 302 */ 303 static int invalidate_list(struct list_head *head, struct list_head *dispose) 304 { 305 struct list_head *next; 306 int busy = 0, count = 0; 307 308 next = head->next; 309 for (;;) { 310 struct list_head * tmp = next; 311 struct inode * inode; 312 313 /* 314 * We can reschedule here without worrying about the list's 315 * consistency because the per-sb list of inodes must not 316 * change during umount anymore, and because iprune_mutex keeps 317 * shrink_icache_memory() away. 318 */ 319 cond_resched_lock(&inode_lock); 320 321 next = next->next; 322 if (tmp == head) 323 break; 324 inode = list_entry(tmp, struct inode, i_sb_list); 325 invalidate_inode_buffers(inode); 326 if (!atomic_read(&inode->i_count)) { 327 list_move(&inode->i_list, dispose); 328 inode->i_state |= I_FREEING; 329 count++; 330 continue; 331 } 332 busy = 1; 333 } 334 /* only unused inodes may be cached with i_count zero */ 335 inodes_stat.nr_unused -= count; 336 return busy; 337 } 338 339 /** 340 * invalidate_inodes - discard the inodes on a device 341 * @sb: superblock 342 * 343 * Discard all of the inodes for a given superblock. If the discard 344 * fails because there are busy inodes then a non zero value is returned. 345 * If the discard is successful all the inodes have been discarded. 346 */ 347 int invalidate_inodes(struct super_block * sb) 348 { 349 int busy; 350 LIST_HEAD(throw_away); 351 352 mutex_lock(&iprune_mutex); 353 spin_lock(&inode_lock); 354 inotify_unmount_inodes(&sb->s_inodes); 355 busy = invalidate_list(&sb->s_inodes, &throw_away); 356 spin_unlock(&inode_lock); 357 358 dispose_list(&throw_away); 359 mutex_unlock(&iprune_mutex); 360 361 return busy; 362 } 363 364 EXPORT_SYMBOL(invalidate_inodes); 365 366 static int can_unuse(struct inode *inode) 367 { 368 if (inode->i_state) 369 return 0; 370 if (inode_has_buffers(inode)) 371 return 0; 372 if (atomic_read(&inode->i_count)) 373 return 0; 374 if (inode->i_data.nrpages) 375 return 0; 376 return 1; 377 } 378 379 /* 380 * Scan `goal' inodes on the unused list for freeable ones. They are moved to 381 * a temporary list and then are freed outside inode_lock by dispose_list(). 382 * 383 * Any inodes which are pinned purely because of attached pagecache have their 384 * pagecache removed. We expect the final iput() on that inode to add it to 385 * the front of the inode_unused list. So look for it there and if the 386 * inode is still freeable, proceed. The right inode is found 99.9% of the 387 * time in testing on a 4-way. 388 * 389 * If the inode has metadata buffers attached to mapping->private_list then 390 * try to remove them. 391 */ 392 static void prune_icache(int nr_to_scan) 393 { 394 LIST_HEAD(freeable); 395 int nr_pruned = 0; 396 int nr_scanned; 397 unsigned long reap = 0; 398 399 mutex_lock(&iprune_mutex); 400 spin_lock(&inode_lock); 401 for (nr_scanned = 0; nr_scanned < nr_to_scan; nr_scanned++) { 402 struct inode *inode; 403 404 if (list_empty(&inode_unused)) 405 break; 406 407 inode = list_entry(inode_unused.prev, struct inode, i_list); 408 409 if (inode->i_state || atomic_read(&inode->i_count)) { 410 list_move(&inode->i_list, &inode_unused); 411 continue; 412 } 413 if (inode_has_buffers(inode) || inode->i_data.nrpages) { 414 __iget(inode); 415 spin_unlock(&inode_lock); 416 if (remove_inode_buffers(inode)) 417 reap += invalidate_inode_pages(&inode->i_data); 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_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 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 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 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 (IS_RDONLY(inode)) 1164 return; 1165 if (inode->i_flags & S_NOATIME) 1166 return; 1167 if (inode->i_sb->s_flags & MS_NOATIME) 1168 return; 1169 if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode)) 1170 return; 1171 1172 /* 1173 * We may have a NULL vfsmount when coming from NFSD 1174 */ 1175 if (mnt) { 1176 if (mnt->mnt_flags & MNT_NOATIME) 1177 return; 1178 if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode)) 1179 return; 1180 1181 if (mnt->mnt_flags & MNT_RELATIME) { 1182 /* 1183 * With relative atime, only update atime if the 1184 * previous atime is earlier than either the ctime or 1185 * mtime. 1186 */ 1187 if (timespec_compare(&inode->i_mtime, 1188 &inode->i_atime) < 0 && 1189 timespec_compare(&inode->i_ctime, 1190 &inode->i_atime) < 0) 1191 return; 1192 } 1193 } 1194 1195 now = current_fs_time(inode->i_sb); 1196 if (timespec_equal(&inode->i_atime, &now)) 1197 return; 1198 1199 inode->i_atime = now; 1200 mark_inode_dirty_sync(inode); 1201 } 1202 EXPORT_SYMBOL(touch_atime); 1203 1204 /** 1205 * file_update_time - update mtime and ctime time 1206 * @file: file accessed 1207 * 1208 * Update the mtime and ctime members of an inode and mark the inode 1209 * for writeback. Note that this function is meant exclusively for 1210 * usage in the file write path of filesystems, and filesystems may 1211 * choose to explicitly ignore update via this function with the 1212 * S_NOCTIME inode flag, e.g. for network filesystem where these 1213 * timestamps are handled by the server. 1214 */ 1215 1216 void file_update_time(struct file *file) 1217 { 1218 struct inode *inode = file->f_path.dentry->d_inode; 1219 struct timespec now; 1220 int sync_it = 0; 1221 1222 if (IS_NOCMTIME(inode)) 1223 return; 1224 if (IS_RDONLY(inode)) 1225 return; 1226 1227 now = current_fs_time(inode->i_sb); 1228 if (!timespec_equal(&inode->i_mtime, &now)) { 1229 inode->i_mtime = now; 1230 sync_it = 1; 1231 } 1232 1233 if (!timespec_equal(&inode->i_ctime, &now)) { 1234 inode->i_ctime = now; 1235 sync_it = 1; 1236 } 1237 1238 if (sync_it) 1239 mark_inode_dirty_sync(inode); 1240 } 1241 1242 EXPORT_SYMBOL(file_update_time); 1243 1244 int inode_needs_sync(struct inode *inode) 1245 { 1246 if (IS_SYNC(inode)) 1247 return 1; 1248 if (S_ISDIR(inode->i_mode) && IS_DIRSYNC(inode)) 1249 return 1; 1250 return 0; 1251 } 1252 1253 EXPORT_SYMBOL(inode_needs_sync); 1254 1255 /* 1256 * Quota functions that want to walk the inode lists.. 1257 */ 1258 #ifdef CONFIG_QUOTA 1259 1260 void remove_dquot_ref(struct super_block *sb, int type, 1261 struct list_head *tofree_head) 1262 { 1263 struct inode *inode; 1264 1265 if (!sb->dq_op) 1266 return; /* nothing to do */ 1267 spin_lock(&inode_lock); /* This lock is for inodes code */ 1268 1269 /* 1270 * We don't have to lock against quota code - test IS_QUOTAINIT is 1271 * just for speedup... 1272 */ 1273 list_for_each_entry(inode, &sb->s_inodes, i_sb_list) 1274 if (!IS_NOQUOTA(inode)) 1275 remove_inode_dquot_ref(inode, type, tofree_head); 1276 1277 spin_unlock(&inode_lock); 1278 } 1279 1280 #endif 1281 1282 int inode_wait(void *word) 1283 { 1284 schedule(); 1285 return 0; 1286 } 1287 1288 /* 1289 * If we try to find an inode in the inode hash while it is being 1290 * deleted, we have to wait until the filesystem completes its 1291 * deletion before reporting that it isn't found. This function waits 1292 * until the deletion _might_ have completed. Callers are responsible 1293 * to recheck inode state. 1294 * 1295 * It doesn't matter if I_LOCK is not set initially, a call to 1296 * wake_up_inode() after removing from the hash list will DTRT. 1297 * 1298 * This is called with inode_lock held. 1299 */ 1300 static void __wait_on_freeing_inode(struct inode *inode) 1301 { 1302 wait_queue_head_t *wq; 1303 DEFINE_WAIT_BIT(wait, &inode->i_state, __I_LOCK); 1304 wq = bit_waitqueue(&inode->i_state, __I_LOCK); 1305 prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE); 1306 spin_unlock(&inode_lock); 1307 schedule(); 1308 finish_wait(wq, &wait.wait); 1309 spin_lock(&inode_lock); 1310 } 1311 1312 void wake_up_inode(struct inode *inode) 1313 { 1314 /* 1315 * Prevent speculative execution through spin_unlock(&inode_lock); 1316 */ 1317 smp_mb(); 1318 wake_up_bit(&inode->i_state, __I_LOCK); 1319 } 1320 1321 /* 1322 * We rarely want to lock two inodes that do not have a parent/child 1323 * relationship (such as directory, child inode) simultaneously. The 1324 * vast majority of file systems should be able to get along fine 1325 * without this. Do not use these functions except as a last resort. 1326 */ 1327 void inode_double_lock(struct inode *inode1, struct inode *inode2) 1328 { 1329 if (inode1 == NULL || inode2 == NULL || inode1 == inode2) { 1330 if (inode1) 1331 mutex_lock(&inode1->i_mutex); 1332 else if (inode2) 1333 mutex_lock(&inode2->i_mutex); 1334 return; 1335 } 1336 1337 if (inode1 < inode2) { 1338 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT); 1339 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); 1340 } else { 1341 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT); 1342 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD); 1343 } 1344 } 1345 EXPORT_SYMBOL(inode_double_lock); 1346 1347 void inode_double_unlock(struct inode *inode1, struct inode *inode2) 1348 { 1349 if (inode1) 1350 mutex_unlock(&inode1->i_mutex); 1351 1352 if (inode2 && inode2 != inode1) 1353 mutex_unlock(&inode2->i_mutex); 1354 } 1355 EXPORT_SYMBOL(inode_double_unlock); 1356 1357 static __initdata unsigned long ihash_entries; 1358 static int __init set_ihash_entries(char *str) 1359 { 1360 if (!str) 1361 return 0; 1362 ihash_entries = simple_strtoul(str, &str, 0); 1363 return 1; 1364 } 1365 __setup("ihash_entries=", set_ihash_entries); 1366 1367 /* 1368 * Initialize the waitqueues and inode hash table. 1369 */ 1370 void __init inode_init_early(void) 1371 { 1372 int loop; 1373 1374 /* If hashes are distributed across NUMA nodes, defer 1375 * hash allocation until vmalloc space is available. 1376 */ 1377 if (hashdist) 1378 return; 1379 1380 inode_hashtable = 1381 alloc_large_system_hash("Inode-cache", 1382 sizeof(struct hlist_head), 1383 ihash_entries, 1384 14, 1385 HASH_EARLY, 1386 &i_hash_shift, 1387 &i_hash_mask, 1388 0); 1389 1390 for (loop = 0; loop < (1 << i_hash_shift); loop++) 1391 INIT_HLIST_HEAD(&inode_hashtable[loop]); 1392 } 1393 1394 void __init inode_init(unsigned long mempages) 1395 { 1396 int loop; 1397 1398 /* inode slab cache */ 1399 inode_cachep = kmem_cache_create("inode_cache", 1400 sizeof(struct inode), 1401 0, 1402 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC| 1403 SLAB_MEM_SPREAD), 1404 init_once, 1405 NULL); 1406 set_shrinker(DEFAULT_SEEKS, shrink_icache_memory); 1407 1408 /* Hash may have been set up in inode_init_early */ 1409 if (!hashdist) 1410 return; 1411 1412 inode_hashtable = 1413 alloc_large_system_hash("Inode-cache", 1414 sizeof(struct hlist_head), 1415 ihash_entries, 1416 14, 1417 0, 1418 &i_hash_shift, 1419 &i_hash_mask, 1420 0); 1421 1422 for (loop = 0; loop < (1 << i_hash_shift); loop++) 1423 INIT_HLIST_HEAD(&inode_hashtable[loop]); 1424 } 1425 1426 void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev) 1427 { 1428 inode->i_mode = mode; 1429 if (S_ISCHR(mode)) { 1430 inode->i_fop = &def_chr_fops; 1431 inode->i_rdev = rdev; 1432 } else if (S_ISBLK(mode)) { 1433 inode->i_fop = &def_blk_fops; 1434 inode->i_rdev = rdev; 1435 } else if (S_ISFIFO(mode)) 1436 inode->i_fop = &def_fifo_fops; 1437 else if (S_ISSOCK(mode)) 1438 inode->i_fop = &bad_sock_fops; 1439 else 1440 printk(KERN_DEBUG "init_special_inode: bogus i_mode (%o)\n", 1441 mode); 1442 } 1443 EXPORT_SYMBOL(init_special_inode); 1444