[PATCH] Dynamic kernel command-line: i386
[linux-2.6] / fs / inode.c
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_mapping_pages(&inode->i_data,
418                                                                 0, -1);
419                         iput(inode);
420                         spin_lock(&inode_lock);
421
422                         if (inode != list_entry(inode_unused.next,
423                                                 struct inode, i_list))
424                                 continue;       /* wrong inode or list_empty */
425                         if (!can_unuse(inode))
426                                 continue;
427                 }
428                 list_move(&inode->i_list, &freeable);
429                 inode->i_state |= I_FREEING;
430                 nr_pruned++;
431         }
432         inodes_stat.nr_unused -= nr_pruned;
433         if (current_is_kswapd())
434                 __count_vm_events(KSWAPD_INODESTEAL, reap);
435         else
436                 __count_vm_events(PGINODESTEAL, reap);
437         spin_unlock(&inode_lock);
438
439         dispose_list(&freeable);
440         mutex_unlock(&iprune_mutex);
441 }
442
443 /*
444  * shrink_icache_memory() will attempt to reclaim some unused inodes.  Here,
445  * "unused" means that no dentries are referring to the inodes: the files are
446  * not open and the dcache references to those inodes have already been
447  * reclaimed.
448  *
449  * This function is passed the number of inodes to scan, and it returns the
450  * total number of remaining possibly-reclaimable inodes.
451  */
452 static int shrink_icache_memory(int nr, gfp_t gfp_mask)
453 {
454         if (nr) {
455                 /*
456                  * Nasty deadlock avoidance.  We may hold various FS locks,
457                  * and we don't want to recurse into the FS that called us
458                  * in clear_inode() and friends..
459                  */
460                 if (!(gfp_mask & __GFP_FS))
461                         return -1;
462                 prune_icache(nr);
463         }
464         return (inodes_stat.nr_unused / 100) * sysctl_vfs_cache_pressure;
465 }
466
467 static void __wait_on_freeing_inode(struct inode *inode);
468 /*
469  * Called with the inode lock held.
470  * NOTE: we are not increasing the inode-refcount, you must call __iget()
471  * by hand after calling find_inode now! This simplifies iunique and won't
472  * add any additional branch in the common code.
473  */
474 static struct inode * find_inode(struct super_block * sb, struct hlist_head *head, int (*test)(struct inode *, void *), void *data)
475 {
476         struct hlist_node *node;
477         struct inode * inode = NULL;
478
479 repeat:
480         hlist_for_each (node, head) { 
481                 inode = hlist_entry(node, struct inode, i_hash);
482                 if (inode->i_sb != sb)
483                         continue;
484                 if (!test(inode, data))
485                         continue;
486                 if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) {
487                         __wait_on_freeing_inode(inode);
488                         goto repeat;
489                 }
490                 break;
491         }
492         return node ? inode : NULL;
493 }
494
495 /*
496  * find_inode_fast is the fast path version of find_inode, see the comment at
497  * iget_locked for details.
498  */
499 static struct inode * find_inode_fast(struct super_block * sb, struct hlist_head *head, unsigned long ino)
500 {
501         struct hlist_node *node;
502         struct inode * inode = NULL;
503
504 repeat:
505         hlist_for_each (node, head) {
506                 inode = hlist_entry(node, struct inode, i_hash);
507                 if (inode->i_ino != ino)
508                         continue;
509                 if (inode->i_sb != sb)
510                         continue;
511                 if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)) {
512                         __wait_on_freeing_inode(inode);
513                         goto repeat;
514                 }
515                 break;
516         }
517         return node ? inode : NULL;
518 }
519
520 /**
521  *      new_inode       - obtain an inode
522  *      @sb: superblock
523  *
524  *      Allocates a new inode for given superblock.
525  */
526 struct inode *new_inode(struct super_block *sb)
527 {
528         static unsigned long last_ino;
529         struct inode * inode;
530
531         spin_lock_prefetch(&inode_lock);
532         
533         inode = alloc_inode(sb);
534         if (inode) {
535                 spin_lock(&inode_lock);
536                 inodes_stat.nr_inodes++;
537                 list_add(&inode->i_list, &inode_in_use);
538                 list_add(&inode->i_sb_list, &sb->s_inodes);
539                 inode->i_ino = ++last_ino;
540                 inode->i_state = 0;
541                 spin_unlock(&inode_lock);
542         }
543         return inode;
544 }
545
546 EXPORT_SYMBOL(new_inode);
547
548 void unlock_new_inode(struct inode *inode)
549 {
550         /*
551          * This is special!  We do not need the spinlock
552          * when clearing I_LOCK, because we're guaranteed
553          * that nobody else tries to do anything about the
554          * state of the inode when it is locked, as we
555          * just created it (so there can be no old holders
556          * that haven't tested I_LOCK).
557          */
558         inode->i_state &= ~(I_LOCK|I_NEW);
559         wake_up_inode(inode);
560 }
561
562 EXPORT_SYMBOL(unlock_new_inode);
563
564 /*
565  * This is called without the inode lock held.. Be careful.
566  *
567  * We no longer cache the sb_flags in i_flags - see fs.h
568  *      -- rmk@arm.uk.linux.org
569  */
570 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)
571 {
572         struct inode * inode;
573
574         inode = alloc_inode(sb);
575         if (inode) {
576                 struct inode * old;
577
578                 spin_lock(&inode_lock);
579                 /* We released the lock, so.. */
580                 old = find_inode(sb, head, test, data);
581                 if (!old) {
582                         if (set(inode, data))
583                                 goto set_failed;
584
585                         inodes_stat.nr_inodes++;
586                         list_add(&inode->i_list, &inode_in_use);
587                         list_add(&inode->i_sb_list, &sb->s_inodes);
588                         hlist_add_head(&inode->i_hash, head);
589                         inode->i_state = I_LOCK|I_NEW;
590                         spin_unlock(&inode_lock);
591
592                         /* Return the locked inode with I_NEW set, the
593                          * caller is responsible for filling in the contents
594                          */
595                         return inode;
596                 }
597
598                 /*
599                  * Uhhuh, somebody else created the same inode under
600                  * us. Use the old inode instead of the one we just
601                  * allocated.
602                  */
603                 __iget(old);
604                 spin_unlock(&inode_lock);
605                 destroy_inode(inode);
606                 inode = old;
607                 wait_on_inode(inode);
608         }
609         return inode;
610
611 set_failed:
612         spin_unlock(&inode_lock);
613         destroy_inode(inode);
614         return NULL;
615 }
616
617 /*
618  * get_new_inode_fast is the fast path version of get_new_inode, see the
619  * comment at iget_locked for details.
620  */
621 static struct inode * get_new_inode_fast(struct super_block *sb, struct hlist_head *head, unsigned long ino)
622 {
623         struct inode * inode;
624
625         inode = alloc_inode(sb);
626         if (inode) {
627                 struct inode * old;
628
629                 spin_lock(&inode_lock);
630                 /* We released the lock, so.. */
631                 old = find_inode_fast(sb, head, ino);
632                 if (!old) {
633                         inode->i_ino = ino;
634                         inodes_stat.nr_inodes++;
635                         list_add(&inode->i_list, &inode_in_use);
636                         list_add(&inode->i_sb_list, &sb->s_inodes);
637                         hlist_add_head(&inode->i_hash, head);
638                         inode->i_state = I_LOCK|I_NEW;
639                         spin_unlock(&inode_lock);
640
641                         /* Return the locked inode with I_NEW set, the
642                          * caller is responsible for filling in the contents
643                          */
644                         return inode;
645                 }
646
647                 /*
648                  * Uhhuh, somebody else created the same inode under
649                  * us. Use the old inode instead of the one we just
650                  * allocated.
651                  */
652                 __iget(old);
653                 spin_unlock(&inode_lock);
654                 destroy_inode(inode);
655                 inode = old;
656                 wait_on_inode(inode);
657         }
658         return inode;
659 }
660
661 static unsigned long hash(struct super_block *sb, unsigned long hashval)
662 {
663         unsigned long tmp;
664
665         tmp = (hashval * (unsigned long)sb) ^ (GOLDEN_RATIO_PRIME + hashval) /
666                         L1_CACHE_BYTES;
667         tmp = tmp ^ ((tmp ^ GOLDEN_RATIO_PRIME) >> I_HASHBITS);
668         return tmp & I_HASHMASK;
669 }
670
671 /**
672  *      iunique - get a unique inode number
673  *      @sb: superblock
674  *      @max_reserved: highest reserved inode number
675  *
676  *      Obtain an inode number that is unique on the system for a given
677  *      superblock. This is used by file systems that have no natural
678  *      permanent inode numbering system. An inode number is returned that
679  *      is higher than the reserved limit but unique.
680  *
681  *      BUGS:
682  *      With a large number of inodes live on the file system this function
683  *      currently becomes quite slow.
684  */
685 ino_t iunique(struct super_block *sb, ino_t max_reserved)
686 {
687         static ino_t counter;
688         struct inode *inode;
689         struct hlist_head * head;
690         ino_t res;
691         spin_lock(&inode_lock);
692 retry:
693         if (counter > max_reserved) {
694                 head = inode_hashtable + hash(sb,counter);
695                 res = counter++;
696                 inode = find_inode_fast(sb, head, res);
697                 if (!inode) {
698                         spin_unlock(&inode_lock);
699                         return res;
700                 }
701         } else {
702                 counter = max_reserved + 1;
703         }
704         goto retry;
705         
706 }
707
708 EXPORT_SYMBOL(iunique);
709
710 struct inode *igrab(struct inode *inode)
711 {
712         spin_lock(&inode_lock);
713         if (!(inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)))
714                 __iget(inode);
715         else
716                 /*
717                  * Handle the case where s_op->clear_inode is not been
718                  * called yet, and somebody is calling igrab
719                  * while the inode is getting freed.
720                  */
721                 inode = NULL;
722         spin_unlock(&inode_lock);
723         return inode;
724 }
725
726 EXPORT_SYMBOL(igrab);
727
728 /**
729  * ifind - internal function, you want ilookup5() or iget5().
730  * @sb:         super block of file system to search
731  * @head:       the head of the list to search
732  * @test:       callback used for comparisons between inodes
733  * @data:       opaque data pointer to pass to @test
734  * @wait:       if true wait for the inode to be unlocked, if false do not
735  *
736  * ifind() searches for the inode specified by @data in the inode
737  * cache. This is a generalized version of ifind_fast() for file systems where
738  * the inode number is not sufficient for unique identification of an inode.
739  *
740  * If the inode is in the cache, the inode is returned with an incremented
741  * reference count.
742  *
743  * Otherwise NULL is returned.
744  *
745  * Note, @test is called with the inode_lock held, so can't sleep.
746  */
747 static struct inode *ifind(struct super_block *sb,
748                 struct hlist_head *head, int (*test)(struct inode *, void *),
749                 void *data, const int wait)
750 {
751         struct inode *inode;
752
753         spin_lock(&inode_lock);
754         inode = find_inode(sb, head, test, data);
755         if (inode) {
756                 __iget(inode);
757                 spin_unlock(&inode_lock);
758                 if (likely(wait))
759                         wait_on_inode(inode);
760                 return inode;
761         }
762         spin_unlock(&inode_lock);
763         return NULL;
764 }
765
766 /**
767  * ifind_fast - internal function, you want ilookup() or iget().
768  * @sb:         super block of file system to search
769  * @head:       head of the list to search
770  * @ino:        inode number to search for
771  *
772  * ifind_fast() searches for the inode @ino in the inode cache. This is for
773  * file systems where the inode number is sufficient for unique identification
774  * of an inode.
775  *
776  * If the inode is in the cache, the inode is returned with an incremented
777  * reference count.
778  *
779  * Otherwise NULL is returned.
780  */
781 static struct inode *ifind_fast(struct super_block *sb,
782                 struct hlist_head *head, unsigned long ino)
783 {
784         struct inode *inode;
785
786         spin_lock(&inode_lock);
787         inode = find_inode_fast(sb, head, ino);
788         if (inode) {
789                 __iget(inode);
790                 spin_unlock(&inode_lock);
791                 wait_on_inode(inode);
792                 return inode;
793         }
794         spin_unlock(&inode_lock);
795         return NULL;
796 }
797
798 /**
799  * ilookup5_nowait - search for an inode in the inode cache
800  * @sb:         super block of file system to search
801  * @hashval:    hash value (usually inode number) to search for
802  * @test:       callback used for comparisons between inodes
803  * @data:       opaque data pointer to pass to @test
804  *
805  * ilookup5() uses ifind() to search for the inode specified by @hashval and
806  * @data in the inode cache. This is a generalized version of ilookup() for
807  * file systems where the inode number is not sufficient for unique
808  * identification of an inode.
809  *
810  * If the inode is in the cache, the inode is returned with an incremented
811  * reference count.  Note, the inode lock is not waited upon so you have to be
812  * very careful what you do with the returned inode.  You probably should be
813  * using ilookup5() instead.
814  *
815  * Otherwise NULL is returned.
816  *
817  * Note, @test is called with the inode_lock held, so can't sleep.
818  */
819 struct inode *ilookup5_nowait(struct super_block *sb, unsigned long hashval,
820                 int (*test)(struct inode *, void *), void *data)
821 {
822         struct hlist_head *head = inode_hashtable + hash(sb, hashval);
823
824         return ifind(sb, head, test, data, 0);
825 }
826
827 EXPORT_SYMBOL(ilookup5_nowait);
828
829 /**
830  * ilookup5 - search for an inode in the inode cache
831  * @sb:         super block of file system to search
832  * @hashval:    hash value (usually inode number) to search for
833  * @test:       callback used for comparisons between inodes
834  * @data:       opaque data pointer to pass to @test
835  *
836  * ilookup5() uses ifind() to search for the inode specified by @hashval and
837  * @data in the inode cache. This is a generalized version of ilookup() for
838  * file systems where the inode number is not sufficient for unique
839  * identification of an inode.
840  *
841  * If the inode is in the cache, the inode lock is waited upon and the inode is
842  * returned with an incremented reference count.
843  *
844  * Otherwise NULL is returned.
845  *
846  * Note, @test is called with the inode_lock held, so can't sleep.
847  */
848 struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
849                 int (*test)(struct inode *, void *), void *data)
850 {
851         struct hlist_head *head = inode_hashtable + hash(sb, hashval);
852
853         return ifind(sb, head, test, data, 1);
854 }
855
856 EXPORT_SYMBOL(ilookup5);
857
858 /**
859  * ilookup - search for an inode in the inode cache
860  * @sb:         super block of file system to search
861  * @ino:        inode number to search for
862  *
863  * ilookup() uses ifind_fast() to search for the inode @ino in the inode cache.
864  * This is for file systems where the inode number is sufficient for unique
865  * identification of an inode.
866  *
867  * If the inode is in the cache, the inode is returned with an incremented
868  * reference count.
869  *
870  * Otherwise NULL is returned.
871  */
872 struct inode *ilookup(struct super_block *sb, unsigned long ino)
873 {
874         struct hlist_head *head = inode_hashtable + hash(sb, ino);
875
876         return ifind_fast(sb, head, ino);
877 }
878
879 EXPORT_SYMBOL(ilookup);
880
881 /**
882  * iget5_locked - obtain an inode from a mounted file system
883  * @sb:         super block of file system
884  * @hashval:    hash value (usually inode number) to get
885  * @test:       callback used for comparisons between inodes
886  * @set:        callback used to initialize a new struct inode
887  * @data:       opaque data pointer to pass to @test and @set
888  *
889  * This is iget() without the read_inode() portion of get_new_inode().
890  *
891  * iget5_locked() uses ifind() to search for the inode specified by @hashval
892  * and @data in the inode cache and if present it is returned with an increased
893  * reference count. This is a generalized version of iget_locked() for file
894  * systems where the inode number is not sufficient for unique identification
895  * of an inode.
896  *
897  * If the inode is not in cache, get_new_inode() is called to allocate a new
898  * inode and this is returned locked, hashed, and with the I_NEW flag set. The
899  * file system gets to fill it in before unlocking it via unlock_new_inode().
900  *
901  * Note both @test and @set are called with the inode_lock held, so can't sleep.
902  */
903 struct inode *iget5_locked(struct super_block *sb, unsigned long hashval,
904                 int (*test)(struct inode *, void *),
905                 int (*set)(struct inode *, void *), void *data)
906 {
907         struct hlist_head *head = inode_hashtable + hash(sb, hashval);
908         struct inode *inode;
909
910         inode = ifind(sb, head, test, data, 1);
911         if (inode)
912                 return inode;
913         /*
914          * get_new_inode() will do the right thing, re-trying the search
915          * in case it had to block at any point.
916          */
917         return get_new_inode(sb, head, test, set, data);
918 }
919
920 EXPORT_SYMBOL(iget5_locked);
921
922 /**
923  * iget_locked - obtain an inode from a mounted file system
924  * @sb:         super block of file system
925  * @ino:        inode number to get
926  *
927  * This is iget() without the read_inode() portion of get_new_inode_fast().
928  *
929  * iget_locked() uses ifind_fast() to search for the inode specified by @ino in
930  * the inode cache and if present it is returned with an increased reference
931  * count. This is for file systems where the inode number is sufficient for
932  * unique identification of an inode.
933  *
934  * If the inode is not in cache, get_new_inode_fast() is called to allocate a
935  * new inode and this is returned locked, hashed, and with the I_NEW flag set.
936  * The file system gets to fill it in before unlocking it via
937  * unlock_new_inode().
938  */
939 struct inode *iget_locked(struct super_block *sb, unsigned long ino)
940 {
941         struct hlist_head *head = inode_hashtable + hash(sb, ino);
942         struct inode *inode;
943
944         inode = ifind_fast(sb, head, ino);
945         if (inode)
946                 return inode;
947         /*
948          * get_new_inode_fast() will do the right thing, re-trying the search
949          * in case it had to block at any point.
950          */
951         return get_new_inode_fast(sb, head, ino);
952 }
953
954 EXPORT_SYMBOL(iget_locked);
955
956 /**
957  *      __insert_inode_hash - hash an inode
958  *      @inode: unhashed inode
959  *      @hashval: unsigned long value used to locate this object in the
960  *              inode_hashtable.
961  *
962  *      Add an inode to the inode hash for this superblock.
963  */
964 void __insert_inode_hash(struct inode *inode, unsigned long hashval)
965 {
966         struct hlist_head *head = inode_hashtable + hash(inode->i_sb, hashval);
967         spin_lock(&inode_lock);
968         hlist_add_head(&inode->i_hash, head);
969         spin_unlock(&inode_lock);
970 }
971
972 EXPORT_SYMBOL(__insert_inode_hash);
973
974 /**
975  *      remove_inode_hash - remove an inode from the hash
976  *      @inode: inode to unhash
977  *
978  *      Remove an inode from the superblock.
979  */
980 void remove_inode_hash(struct inode *inode)
981 {
982         spin_lock(&inode_lock);
983         hlist_del_init(&inode->i_hash);
984         spin_unlock(&inode_lock);
985 }
986
987 EXPORT_SYMBOL(remove_inode_hash);
988
989 /*
990  * Tell the filesystem that this inode is no longer of any interest and should
991  * be completely destroyed.
992  *
993  * We leave the inode in the inode hash table until *after* the filesystem's
994  * ->delete_inode completes.  This ensures that an iget (such as nfsd might
995  * instigate) will always find up-to-date information either in the hash or on
996  * disk.
997  *
998  * I_FREEING is set so that no-one will take a new reference to the inode while
999  * it is being deleted.
1000  */
1001 void generic_delete_inode(struct inode *inode)
1002 {
1003         struct super_operations *op = inode->i_sb->s_op;
1004
1005         list_del_init(&inode->i_list);
1006         list_del_init(&inode->i_sb_list);
1007         inode->i_state |= I_FREEING;
1008         inodes_stat.nr_inodes--;
1009         spin_unlock(&inode_lock);
1010
1011         security_inode_delete(inode);
1012
1013         if (op->delete_inode) {
1014                 void (*delete)(struct inode *) = op->delete_inode;
1015                 if (!is_bad_inode(inode))
1016                         DQUOT_INIT(inode);
1017                 /* Filesystems implementing their own
1018                  * s_op->delete_inode are required to call
1019                  * truncate_inode_pages and clear_inode()
1020                  * internally */
1021                 delete(inode);
1022         } else {
1023                 truncate_inode_pages(&inode->i_data, 0);
1024                 clear_inode(inode);
1025         }
1026         spin_lock(&inode_lock);
1027         hlist_del_init(&inode->i_hash);
1028         spin_unlock(&inode_lock);
1029         wake_up_inode(inode);
1030         BUG_ON(inode->i_state != I_CLEAR);
1031         destroy_inode(inode);
1032 }
1033
1034 EXPORT_SYMBOL(generic_delete_inode);
1035
1036 static void generic_forget_inode(struct inode *inode)
1037 {
1038         struct super_block *sb = inode->i_sb;
1039
1040         if (!hlist_unhashed(&inode->i_hash)) {
1041                 if (!(inode->i_state & (I_DIRTY|I_LOCK)))
1042                         list_move(&inode->i_list, &inode_unused);
1043                 inodes_stat.nr_unused++;
1044                 if (!sb || (sb->s_flags & MS_ACTIVE)) {
1045                         spin_unlock(&inode_lock);
1046                         return;
1047                 }
1048                 inode->i_state |= I_WILL_FREE;
1049                 spin_unlock(&inode_lock);
1050                 write_inode_now(inode, 1);
1051                 spin_lock(&inode_lock);
1052                 inode->i_state &= ~I_WILL_FREE;
1053                 inodes_stat.nr_unused--;
1054                 hlist_del_init(&inode->i_hash);
1055         }
1056         list_del_init(&inode->i_list);
1057         list_del_init(&inode->i_sb_list);
1058         inode->i_state |= I_FREEING;
1059         inodes_stat.nr_inodes--;
1060         spin_unlock(&inode_lock);
1061         if (inode->i_data.nrpages)
1062                 truncate_inode_pages(&inode->i_data, 0);
1063         clear_inode(inode);
1064         wake_up_inode(inode);
1065         destroy_inode(inode);
1066 }
1067
1068 /*
1069  * Normal UNIX filesystem behaviour: delete the
1070  * inode when the usage count drops to zero, and
1071  * i_nlink is zero.
1072  */
1073 void generic_drop_inode(struct inode *inode)
1074 {
1075         if (!inode->i_nlink)
1076                 generic_delete_inode(inode);
1077         else
1078                 generic_forget_inode(inode);
1079 }
1080
1081 EXPORT_SYMBOL_GPL(generic_drop_inode);
1082
1083 /*
1084  * Called when we're dropping the last reference
1085  * to an inode. 
1086  *
1087  * Call the FS "drop()" function, defaulting to
1088  * the legacy UNIX filesystem behaviour..
1089  *
1090  * NOTE! NOTE! NOTE! We're called with the inode lock
1091  * held, and the drop function is supposed to release
1092  * the lock!
1093  */
1094 static inline void iput_final(struct inode *inode)
1095 {
1096         struct super_operations *op = inode->i_sb->s_op;
1097         void (*drop)(struct inode *) = generic_drop_inode;
1098
1099         if (op && op->drop_inode)
1100                 drop = op->drop_inode;
1101         drop(inode);
1102 }
1103
1104 /**
1105  *      iput    - put an inode 
1106  *      @inode: inode to put
1107  *
1108  *      Puts an inode, dropping its usage count. If the inode use count hits
1109  *      zero, the inode is then freed and may also be destroyed.
1110  *
1111  *      Consequently, iput() can sleep.
1112  */
1113 void iput(struct inode *inode)
1114 {
1115         if (inode) {
1116                 struct super_operations *op = inode->i_sb->s_op;
1117
1118                 BUG_ON(inode->i_state == I_CLEAR);
1119
1120                 if (op && op->put_inode)
1121                         op->put_inode(inode);
1122
1123                 if (atomic_dec_and_lock(&inode->i_count, &inode_lock))
1124                         iput_final(inode);
1125         }
1126 }
1127
1128 EXPORT_SYMBOL(iput);
1129
1130 /**
1131  *      bmap    - find a block number in a file
1132  *      @inode: inode of file
1133  *      @block: block to find
1134  *
1135  *      Returns the block number on the device holding the inode that
1136  *      is the disk block number for the block of the file requested.
1137  *      That is, asked for block 4 of inode 1 the function will return the
1138  *      disk block relative to the disk start that holds that block of the 
1139  *      file.
1140  */
1141 sector_t bmap(struct inode * inode, sector_t block)
1142 {
1143         sector_t res = 0;
1144         if (inode->i_mapping->a_ops->bmap)
1145                 res = inode->i_mapping->a_ops->bmap(inode->i_mapping, block);
1146         return res;
1147 }
1148 EXPORT_SYMBOL(bmap);
1149
1150 /**
1151  *      touch_atime     -       update the access time
1152  *      @mnt: mount the inode is accessed on
1153  *      @dentry: dentry accessed
1154  *
1155  *      Update the accessed time on an inode and mark it for writeback.
1156  *      This function automatically handles read only file systems and media,
1157  *      as well as the "noatime" flag and inode specific "noatime" markers.
1158  */
1159 void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
1160 {
1161         struct inode *inode = dentry->d_inode;
1162         struct timespec now;
1163
1164         if (inode->i_flags & S_NOATIME)
1165                 return;
1166         if (IS_NOATIME(inode))
1167                 return;
1168         if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
1169                 return;
1170
1171         /*
1172          * We may have a NULL vfsmount when coming from NFSD
1173          */
1174         if (mnt) {
1175                 if (mnt->mnt_flags & MNT_NOATIME)
1176                         return;
1177                 if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
1178                         return;
1179
1180                 if (mnt->mnt_flags & MNT_RELATIME) {
1181                         /*
1182                          * With relative atime, only update atime if the
1183                          * previous atime is earlier than either the ctime or
1184                          * mtime.
1185                          */
1186                         if (timespec_compare(&inode->i_mtime,
1187                                                 &inode->i_atime) < 0 &&
1188                             timespec_compare(&inode->i_ctime,
1189                                                 &inode->i_atime) < 0)
1190                                 return;
1191                 }
1192         }
1193
1194         now = current_fs_time(inode->i_sb);
1195         if (timespec_equal(&inode->i_atime, &now))
1196                 return;
1197
1198         inode->i_atime = now;
1199         mark_inode_dirty_sync(inode);
1200 }
1201 EXPORT_SYMBOL(touch_atime);
1202
1203 /**
1204  *      file_update_time        -       update mtime and ctime time
1205  *      @file: file accessed
1206  *
1207  *      Update the mtime and ctime members of an inode and mark the inode
1208  *      for writeback.  Note that this function is meant exclusively for
1209  *      usage in the file write path of filesystems, and filesystems may
1210  *      choose to explicitly ignore update via this function with the
1211  *      S_NOCTIME inode flag, e.g. for network filesystem where these
1212  *      timestamps are handled by the server.
1213  */
1214
1215 void file_update_time(struct file *file)
1216 {
1217         struct inode *inode = file->f_path.dentry->d_inode;
1218         struct timespec now;
1219         int sync_it = 0;
1220
1221         if (IS_NOCMTIME(inode))
1222                 return;
1223         if (IS_RDONLY(inode))
1224                 return;
1225
1226         now = current_fs_time(inode->i_sb);
1227         if (!timespec_equal(&inode->i_mtime, &now)) {
1228                 inode->i_mtime = now;
1229                 sync_it = 1;
1230         }
1231
1232         if (!timespec_equal(&inode->i_ctime, &now)) {
1233                 inode->i_ctime = now;
1234                 sync_it = 1;
1235         }
1236
1237         if (sync_it)
1238                 mark_inode_dirty_sync(inode);
1239 }
1240
1241 EXPORT_SYMBOL(file_update_time);
1242
1243 int inode_needs_sync(struct inode *inode)
1244 {
1245         if (IS_SYNC(inode))
1246                 return 1;
1247         if (S_ISDIR(inode->i_mode) && IS_DIRSYNC(inode))
1248                 return 1;
1249         return 0;
1250 }
1251
1252 EXPORT_SYMBOL(inode_needs_sync);
1253
1254 int inode_wait(void *word)
1255 {
1256         schedule();
1257         return 0;
1258 }
1259
1260 /*
1261  * If we try to find an inode in the inode hash while it is being
1262  * deleted, we have to wait until the filesystem completes its
1263  * deletion before reporting that it isn't found.  This function waits
1264  * until the deletion _might_ have completed.  Callers are responsible
1265  * to recheck inode state.
1266  *
1267  * It doesn't matter if I_LOCK is not set initially, a call to
1268  * wake_up_inode() after removing from the hash list will DTRT.
1269  *
1270  * This is called with inode_lock held.
1271  */
1272 static void __wait_on_freeing_inode(struct inode *inode)
1273 {
1274         wait_queue_head_t *wq;
1275         DEFINE_WAIT_BIT(wait, &inode->i_state, __I_LOCK);
1276         wq = bit_waitqueue(&inode->i_state, __I_LOCK);
1277         prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE);
1278         spin_unlock(&inode_lock);
1279         schedule();
1280         finish_wait(wq, &wait.wait);
1281         spin_lock(&inode_lock);
1282 }
1283
1284 void wake_up_inode(struct inode *inode)
1285 {
1286         /*
1287          * Prevent speculative execution through spin_unlock(&inode_lock);
1288          */
1289         smp_mb();
1290         wake_up_bit(&inode->i_state, __I_LOCK);
1291 }
1292
1293 /*
1294  * We rarely want to lock two inodes that do not have a parent/child
1295  * relationship (such as directory, child inode) simultaneously. The
1296  * vast majority of file systems should be able to get along fine
1297  * without this. Do not use these functions except as a last resort.
1298  */
1299 void inode_double_lock(struct inode *inode1, struct inode *inode2)
1300 {
1301         if (inode1 == NULL || inode2 == NULL || inode1 == inode2) {
1302                 if (inode1)
1303                         mutex_lock(&inode1->i_mutex);
1304                 else if (inode2)
1305                         mutex_lock(&inode2->i_mutex);
1306                 return;
1307         }
1308
1309         if (inode1 < inode2) {
1310                 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT);
1311                 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD);
1312         } else {
1313                 mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT);
1314                 mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD);
1315         }
1316 }
1317 EXPORT_SYMBOL(inode_double_lock);
1318
1319 void inode_double_unlock(struct inode *inode1, struct inode *inode2)
1320 {
1321         if (inode1)
1322                 mutex_unlock(&inode1->i_mutex);
1323
1324         if (inode2 && inode2 != inode1)
1325                 mutex_unlock(&inode2->i_mutex);
1326 }
1327 EXPORT_SYMBOL(inode_double_unlock);
1328
1329 static __initdata unsigned long ihash_entries;
1330 static int __init set_ihash_entries(char *str)
1331 {
1332         if (!str)
1333                 return 0;
1334         ihash_entries = simple_strtoul(str, &str, 0);
1335         return 1;
1336 }
1337 __setup("ihash_entries=", set_ihash_entries);
1338
1339 /*
1340  * Initialize the waitqueues and inode hash table.
1341  */
1342 void __init inode_init_early(void)
1343 {
1344         int loop;
1345
1346         /* If hashes are distributed across NUMA nodes, defer
1347          * hash allocation until vmalloc space is available.
1348          */
1349         if (hashdist)
1350                 return;
1351
1352         inode_hashtable =
1353                 alloc_large_system_hash("Inode-cache",
1354                                         sizeof(struct hlist_head),
1355                                         ihash_entries,
1356                                         14,
1357                                         HASH_EARLY,
1358                                         &i_hash_shift,
1359                                         &i_hash_mask,
1360                                         0);
1361
1362         for (loop = 0; loop < (1 << i_hash_shift); loop++)
1363                 INIT_HLIST_HEAD(&inode_hashtable[loop]);
1364 }
1365
1366 void __init inode_init(unsigned long mempages)
1367 {
1368         int loop;
1369
1370         /* inode slab cache */
1371         inode_cachep = kmem_cache_create("inode_cache",
1372                                          sizeof(struct inode),
1373                                          0,
1374                                          (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
1375                                          SLAB_MEM_SPREAD),
1376                                          init_once,
1377                                          NULL);
1378         set_shrinker(DEFAULT_SEEKS, shrink_icache_memory);
1379
1380         /* Hash may have been set up in inode_init_early */
1381         if (!hashdist)
1382                 return;
1383
1384         inode_hashtable =
1385                 alloc_large_system_hash("Inode-cache",
1386                                         sizeof(struct hlist_head),
1387                                         ihash_entries,
1388                                         14,
1389                                         0,
1390                                         &i_hash_shift,
1391                                         &i_hash_mask,
1392                                         0);
1393
1394         for (loop = 0; loop < (1 << i_hash_shift); loop++)
1395                 INIT_HLIST_HEAD(&inode_hashtable[loop]);
1396 }
1397
1398 void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev)
1399 {
1400         inode->i_mode = mode;
1401         if (S_ISCHR(mode)) {
1402                 inode->i_fop = &def_chr_fops;
1403                 inode->i_rdev = rdev;
1404         } else if (S_ISBLK(mode)) {
1405                 inode->i_fop = &def_blk_fops;
1406                 inode->i_rdev = rdev;
1407         } else if (S_ISFIFO(mode))
1408                 inode->i_fop = &def_fifo_fops;
1409         else if (S_ISSOCK(mode))
1410                 inode->i_fop = &bad_sock_fops;
1411         else
1412                 printk(KERN_DEBUG "init_special_inode: bogus i_mode (%o)\n",
1413                        mode);
1414 }
1415 EXPORT_SYMBOL(init_special_inode);