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