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