1
2
3
4
5#include <linux/export.h>
6#include <linux/fs.h>
7#include <linux/mm.h>
8#include <linux/backing-dev.h>
9#include <linux/hash.h>
10#include <linux/swap.h>
11#include <linux/security.h>
12#include <linux/cdev.h>
13#include <linux/bootmem.h>
14#include <linux/fsnotify.h>
15#include <linux/mount.h>
16#include <linux/posix_acl.h>
17#include <linux/prefetch.h>
18#include <linux/buffer_head.h>
19#include <linux/ratelimit.h>
20#include "internal.h"
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53static unsigned int i_hash_mask __read_mostly;
54static unsigned int i_hash_shift __read_mostly;
55static struct hlist_head *inode_hashtable __read_mostly;
56static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock);
57
58__cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock);
59
60
61
62
63
64const struct address_space_operations empty_aops = {
65};
66EXPORT_SYMBOL(empty_aops);
67
68
69
70
71struct inodes_stat_t inodes_stat;
72
73static DEFINE_PER_CPU(unsigned int, nr_inodes);
74static DEFINE_PER_CPU(unsigned int, nr_unused);
75
76static struct kmem_cache *inode_cachep __read_mostly;
77
78static int get_nr_inodes(void)
79{
80 int i;
81 int sum = 0;
82 for_each_possible_cpu(i)
83 sum += per_cpu(nr_inodes, i);
84 return sum < 0 ? 0 : sum;
85}
86
87static inline int get_nr_inodes_unused(void)
88{
89 int i;
90 int sum = 0;
91 for_each_possible_cpu(i)
92 sum += per_cpu(nr_unused, i);
93 return sum < 0 ? 0 : sum;
94}
95
96int get_nr_dirty_inodes(void)
97{
98
99 int nr_dirty = get_nr_inodes() - get_nr_inodes_unused();
100 return nr_dirty > 0 ? nr_dirty : 0;
101}
102
103
104
105
106#ifdef CONFIG_SYSCTL
107int proc_nr_inodes(ctl_table *table, int write,
108 void __user *buffer, size_t *lenp, loff_t *ppos)
109{
110 inodes_stat.nr_inodes = get_nr_inodes();
111 inodes_stat.nr_unused = get_nr_inodes_unused();
112 return proc_dointvec(table, write, buffer, lenp, ppos);
113}
114#endif
115
116
117
118
119
120
121
122
123
124int inode_init_always(struct super_block *sb, struct inode *inode)
125{
126 static const struct inode_operations empty_iops;
127 static const struct file_operations empty_fops;
128 struct address_space *const mapping = &inode->i_data;
129
130 inode->i_sb = sb;
131 inode->i_blkbits = sb->s_blocksize_bits;
132 inode->i_flags = 0;
133 atomic_set(&inode->i_count, 1);
134 inode->i_op = &empty_iops;
135 inode->i_fop = &empty_fops;
136 inode->__i_nlink = 1;
137 inode->i_opflags = 0;
138 i_uid_write(inode, 0);
139 i_gid_write(inode, 0);
140 atomic_set(&inode->i_writecount, 0);
141 inode->i_size = 0;
142 inode->i_blocks = 0;
143 inode->i_bytes = 0;
144 inode->i_generation = 0;
145#ifdef CONFIG_QUOTA
146 memset(&inode->i_dquot, 0, sizeof(inode->i_dquot));
147#endif
148 inode->i_pipe = NULL;
149 inode->i_bdev = NULL;
150 inode->i_cdev = NULL;
151 inode->i_rdev = 0;
152 inode->dirtied_when = 0;
153
154 if (security_inode_alloc(inode))
155 goto out;
156 spin_lock_init(&inode->i_lock);
157 lockdep_set_class(&inode->i_lock, &sb->s_type->i_lock_key);
158
159 mutex_init(&inode->i_mutex);
160 lockdep_set_class(&inode->i_mutex, &sb->s_type->i_mutex_key);
161
162 atomic_set(&inode->i_dio_count, 0);
163
164 mapping->a_ops = &empty_aops;
165 mapping->host = inode;
166 mapping->flags = 0;
167 mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE);
168 mapping->assoc_mapping = NULL;
169 mapping->backing_dev_info = &default_backing_dev_info;
170 mapping->writeback_index = 0;
171
172
173
174
175
176
177 if (sb->s_bdev) {
178 struct backing_dev_info *bdi;
179
180 bdi = sb->s_bdev->bd_inode->i_mapping->backing_dev_info;
181 mapping->backing_dev_info = bdi;
182 }
183 inode->i_private = NULL;
184 inode->i_mapping = mapping;
185 INIT_HLIST_HEAD(&inode->i_dentry);
186#ifdef CONFIG_FS_POSIX_ACL
187 inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
188#endif
189
190#ifdef CONFIG_FSNOTIFY
191 inode->i_fsnotify_mask = 0;
192#endif
193
194 this_cpu_inc(nr_inodes);
195
196 return 0;
197out:
198 return -ENOMEM;
199}
200EXPORT_SYMBOL(inode_init_always);
201
202static 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
225void free_inode_nonrcu(struct inode *inode)
226{
227 kmem_cache_free(inode_cachep, inode);
228}
229EXPORT_SYMBOL(free_inode_nonrcu);
230
231void __destroy_inode(struct inode *inode)
232{
233 BUG_ON(inode_has_buffers(inode));
234 security_inode_free(inode);
235 fsnotify_inode_delete(inode);
236 if (!inode->i_nlink) {
237 WARN_ON(atomic_long_read(&inode->i_sb->s_remove_count) == 0);
238 atomic_long_dec(&inode->i_sb->s_remove_count);
239 }
240
241#ifdef CONFIG_FS_POSIX_ACL
242 if (inode->i_acl && inode->i_acl != ACL_NOT_CACHED)
243 posix_acl_release(inode->i_acl);
244 if (inode->i_default_acl && inode->i_default_acl != ACL_NOT_CACHED)
245 posix_acl_release(inode->i_default_acl);
246#endif
247 this_cpu_dec(nr_inodes);
248}
249EXPORT_SYMBOL(__destroy_inode);
250
251static void i_callback(struct rcu_head *head)
252{
253 struct inode *inode = container_of(head, struct inode, i_rcu);
254 kmem_cache_free(inode_cachep, inode);
255}
256
257static void destroy_inode(struct inode *inode)
258{
259 BUG_ON(!list_empty(&inode->i_lru));
260 __destroy_inode(inode);
261 if (inode->i_sb->s_op->destroy_inode)
262 inode->i_sb->s_op->destroy_inode(inode);
263 else
264 call_rcu(&inode->i_rcu, i_callback);
265}
266
267
268
269
270
271
272
273
274
275
276
277
278void drop_nlink(struct inode *inode)
279{
280 WARN_ON(inode->i_nlink == 0);
281 inode->__i_nlink--;
282 if (!inode->i_nlink)
283 atomic_long_inc(&inode->i_sb->s_remove_count);
284}
285EXPORT_SYMBOL(drop_nlink);
286
287
288
289
290
291
292
293
294
295void clear_nlink(struct inode *inode)
296{
297 if (inode->i_nlink) {
298 inode->__i_nlink = 0;
299 atomic_long_inc(&inode->i_sb->s_remove_count);
300 }
301}
302EXPORT_SYMBOL(clear_nlink);
303
304
305
306
307
308
309
310
311
312void set_nlink(struct inode *inode, unsigned int nlink)
313{
314 if (!nlink) {
315 clear_nlink(inode);
316 } else {
317
318 if (inode->i_nlink == 0)
319 atomic_long_dec(&inode->i_sb->s_remove_count);
320
321 inode->__i_nlink = nlink;
322 }
323}
324EXPORT_SYMBOL(set_nlink);
325
326
327
328
329
330
331
332
333
334void inc_nlink(struct inode *inode)
335{
336 if (WARN_ON(inode->i_nlink == 0))
337 atomic_long_dec(&inode->i_sb->s_remove_count);
338
339 inode->__i_nlink++;
340}
341EXPORT_SYMBOL(inc_nlink);
342
343void address_space_init_once(struct address_space *mapping)
344{
345 memset(mapping, 0, sizeof(*mapping));
346 INIT_RADIX_TREE(&mapping->page_tree, GFP_ATOMIC);
347 spin_lock_init(&mapping->tree_lock);
348 mutex_init(&mapping->i_mmap_mutex);
349 INIT_LIST_HEAD(&mapping->private_list);
350 spin_lock_init(&mapping->private_lock);
351 mapping->i_mmap = RB_ROOT;
352 INIT_LIST_HEAD(&mapping->i_mmap_nonlinear);
353}
354EXPORT_SYMBOL(address_space_init_once);
355
356
357
358
359
360
361void inode_init_once(struct inode *inode)
362{
363 memset(inode, 0, sizeof(*inode));
364 INIT_HLIST_NODE(&inode->i_hash);
365 INIT_LIST_HEAD(&inode->i_devices);
366 INIT_LIST_HEAD(&inode->i_wb_list);
367 INIT_LIST_HEAD(&inode->i_lru);
368 address_space_init_once(&inode->i_data);
369 i_size_ordered_init(inode);
370#ifdef CONFIG_FSNOTIFY
371 INIT_HLIST_HEAD(&inode->i_fsnotify_marks);
372#endif
373}
374EXPORT_SYMBOL(inode_init_once);
375
376static void init_once(void *foo)
377{
378 struct inode *inode = (struct inode *) foo;
379
380 inode_init_once(inode);
381}
382
383
384
385
386void __iget(struct inode *inode)
387{
388 atomic_inc(&inode->i_count);
389}
390
391
392
393
394void ihold(struct inode *inode)
395{
396 WARN_ON(atomic_inc_return(&inode->i_count) < 2);
397}
398EXPORT_SYMBOL(ihold);
399
400static void inode_lru_list_add(struct inode *inode)
401{
402 spin_lock(&inode->i_sb->s_inode_lru_lock);
403 if (list_empty(&inode->i_lru)) {
404 list_add(&inode->i_lru, &inode->i_sb->s_inode_lru);
405 inode->i_sb->s_nr_inodes_unused++;
406 this_cpu_inc(nr_unused);
407 }
408 spin_unlock(&inode->i_sb->s_inode_lru_lock);
409}
410
411
412
413
414
415
416void inode_add_lru(struct inode *inode)
417{
418 if (!(inode->i_state & (I_DIRTY | I_SYNC | I_FREEING | I_WILL_FREE)) &&
419 !atomic_read(&inode->i_count) && inode->i_sb->s_flags & MS_ACTIVE)
420 inode_lru_list_add(inode);
421}
422
423
424static void inode_lru_list_del(struct inode *inode)
425{
426 spin_lock(&inode->i_sb->s_inode_lru_lock);
427 if (!list_empty(&inode->i_lru)) {
428 list_del_init(&inode->i_lru);
429 inode->i_sb->s_nr_inodes_unused--;
430 this_cpu_dec(nr_unused);
431 }
432 spin_unlock(&inode->i_sb->s_inode_lru_lock);
433}
434
435
436
437
438
439void inode_sb_list_add(struct inode *inode)
440{
441 spin_lock(&inode_sb_list_lock);
442 list_add(&inode->i_sb_list, &inode->i_sb->s_inodes);
443 spin_unlock(&inode_sb_list_lock);
444}
445EXPORT_SYMBOL_GPL(inode_sb_list_add);
446
447static inline void inode_sb_list_del(struct inode *inode)
448{
449 if (!list_empty(&inode->i_sb_list)) {
450 spin_lock(&inode_sb_list_lock);
451 list_del_init(&inode->i_sb_list);
452 spin_unlock(&inode_sb_list_lock);
453 }
454}
455
456static unsigned long hash(struct super_block *sb, unsigned long hashval)
457{
458 unsigned long tmp;
459
460 tmp = (hashval * (unsigned long)sb) ^ (GOLDEN_RATIO_PRIME + hashval) /
461 L1_CACHE_BYTES;
462 tmp = tmp ^ ((tmp ^ GOLDEN_RATIO_PRIME) >> i_hash_shift);
463 return tmp & i_hash_mask;
464}
465
466
467
468
469
470
471
472
473
474void __insert_inode_hash(struct inode *inode, unsigned long hashval)
475{
476 struct hlist_head *b = inode_hashtable + hash(inode->i_sb, hashval);
477
478 spin_lock(&inode_hash_lock);
479 spin_lock(&inode->i_lock);
480 hlist_add_head(&inode->i_hash, b);
481 spin_unlock(&inode->i_lock);
482 spin_unlock(&inode_hash_lock);
483}
484EXPORT_SYMBOL(__insert_inode_hash);
485
486
487
488
489
490
491
492void __remove_inode_hash(struct inode *inode)
493{
494 spin_lock(&inode_hash_lock);
495 spin_lock(&inode->i_lock);
496 hlist_del_init(&inode->i_hash);
497 spin_unlock(&inode->i_lock);
498 spin_unlock(&inode_hash_lock);
499}
500EXPORT_SYMBOL(__remove_inode_hash);
501
502void clear_inode(struct inode *inode)
503{
504 might_sleep();
505
506
507
508
509
510 spin_lock_irq(&inode->i_data.tree_lock);
511 BUG_ON(inode->i_data.nrpages);
512 spin_unlock_irq(&inode->i_data.tree_lock);
513 BUG_ON(!list_empty(&inode->i_data.private_list));
514 BUG_ON(!(inode->i_state & I_FREEING));
515 BUG_ON(inode->i_state & I_CLEAR);
516
517 inode->i_state = I_FREEING | I_CLEAR;
518}
519EXPORT_SYMBOL(clear_inode);
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534static void evict(struct inode *inode)
535{
536 const struct super_operations *op = inode->i_sb->s_op;
537
538 BUG_ON(!(inode->i_state & I_FREEING));
539 BUG_ON(!list_empty(&inode->i_lru));
540
541 if (!list_empty(&inode->i_wb_list))
542 inode_wb_list_del(inode);
543
544 inode_sb_list_del(inode);
545
546
547
548
549
550
551
552 inode_wait_for_writeback(inode);
553
554 if (op->evict_inode) {
555 op->evict_inode(inode);
556 } else {
557 if (inode->i_data.nrpages)
558 truncate_inode_pages(&inode->i_data, 0);
559 clear_inode(inode);
560 }
561 if (S_ISBLK(inode->i_mode) && inode->i_bdev)
562 bd_forget(inode);
563 if (S_ISCHR(inode->i_mode) && inode->i_cdev)
564 cd_forget(inode);
565
566 remove_inode_hash(inode);
567
568 spin_lock(&inode->i_lock);
569 wake_up_bit(&inode->i_state, __I_NEW);
570 BUG_ON(inode->i_state != (I_FREEING | I_CLEAR));
571 spin_unlock(&inode->i_lock);
572
573 destroy_inode(inode);
574}
575
576
577
578
579
580
581
582
583static void dispose_list(struct list_head *head)
584{
585 while (!list_empty(head)) {
586 struct inode *inode;
587
588 inode = list_first_entry(head, struct inode, i_lru);
589 list_del_init(&inode->i_lru);
590
591 evict(inode);
592 }
593}
594
595
596
597
598
599
600
601
602
603
604void evict_inodes(struct super_block *sb)
605{
606 struct inode *inode, *next;
607 LIST_HEAD(dispose);
608
609 spin_lock(&inode_sb_list_lock);
610 list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) {
611 if (atomic_read(&inode->i_count))
612 continue;
613
614 spin_lock(&inode->i_lock);
615 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
616 spin_unlock(&inode->i_lock);
617 continue;
618 }
619
620 inode->i_state |= I_FREEING;
621 inode_lru_list_del(inode);
622 spin_unlock(&inode->i_lock);
623 list_add(&inode->i_lru, &dispose);
624 }
625 spin_unlock(&inode_sb_list_lock);
626
627 dispose_list(&dispose);
628}
629
630
631
632
633
634
635
636
637
638
639
640int invalidate_inodes(struct super_block *sb, bool kill_dirty)
641{
642 int busy = 0;
643 struct inode *inode, *next;
644 LIST_HEAD(dispose);
645
646 spin_lock(&inode_sb_list_lock);
647 list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) {
648 spin_lock(&inode->i_lock);
649 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
650 spin_unlock(&inode->i_lock);
651 continue;
652 }
653 if (inode->i_state & I_DIRTY && !kill_dirty) {
654 spin_unlock(&inode->i_lock);
655 busy = 1;
656 continue;
657 }
658 if (atomic_read(&inode->i_count)) {
659 spin_unlock(&inode->i_lock);
660 busy = 1;
661 continue;
662 }
663
664 inode->i_state |= I_FREEING;
665 inode_lru_list_del(inode);
666 spin_unlock(&inode->i_lock);
667 list_add(&inode->i_lru, &dispose);
668 }
669 spin_unlock(&inode_sb_list_lock);
670
671 dispose_list(&dispose);
672
673 return busy;
674}
675
676static int can_unuse(struct inode *inode)
677{
678 if (inode->i_state & ~I_REFERENCED)
679 return 0;
680 if (inode_has_buffers(inode))
681 return 0;
682 if (atomic_read(&inode->i_count))
683 return 0;
684 if (inode->i_data.nrpages)
685 return 0;
686 return 1;
687}
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707void prune_icache_sb(struct super_block *sb, int nr_to_scan)
708{
709 LIST_HEAD(freeable);
710 int nr_scanned;
711 unsigned long reap = 0;
712
713 spin_lock(&sb->s_inode_lru_lock);
714 for (nr_scanned = nr_to_scan; nr_scanned >= 0; nr_scanned--) {
715 struct inode *inode;
716
717 if (list_empty(&sb->s_inode_lru))
718 break;
719
720 inode = list_entry(sb->s_inode_lru.prev, struct inode, i_lru);
721
722
723
724
725
726
727 if (!spin_trylock(&inode->i_lock)) {
728 list_move_tail(&inode->i_lru, &sb->s_inode_lru);
729 continue;
730 }
731
732
733
734
735
736 if (atomic_read(&inode->i_count) ||
737 (inode->i_state & ~I_REFERENCED)) {
738 list_del_init(&inode->i_lru);
739 spin_unlock(&inode->i_lock);
740 sb->s_nr_inodes_unused--;
741 this_cpu_dec(nr_unused);
742 continue;
743 }
744
745
746 if (inode->i_state & I_REFERENCED) {
747 inode->i_state &= ~I_REFERENCED;
748 list_move(&inode->i_lru, &sb->s_inode_lru);
749 spin_unlock(&inode->i_lock);
750 continue;
751 }
752 if (inode_has_buffers(inode) || inode->i_data.nrpages) {
753 __iget(inode);
754 spin_unlock(&inode->i_lock);
755 spin_unlock(&sb->s_inode_lru_lock);
756 if (remove_inode_buffers(inode))
757 reap += invalidate_mapping_pages(&inode->i_data,
758 0, -1);
759 iput(inode);
760 spin_lock(&sb->s_inode_lru_lock);
761
762 if (inode != list_entry(sb->s_inode_lru.next,
763 struct inode, i_lru))
764 continue;
765
766 if (!spin_trylock(&inode->i_lock))
767 continue;
768 if (!can_unuse(inode)) {
769 spin_unlock(&inode->i_lock);
770 continue;
771 }
772 }
773 WARN_ON(inode->i_state & I_NEW);
774 inode->i_state |= I_FREEING;
775 spin_unlock(&inode->i_lock);
776
777 list_move(&inode->i_lru, &freeable);
778 sb->s_nr_inodes_unused--;
779 this_cpu_dec(nr_unused);
780 }
781 if (current_is_kswapd())
782 __count_vm_events(KSWAPD_INODESTEAL, reap);
783 else
784 __count_vm_events(PGINODESTEAL, reap);
785 spin_unlock(&sb->s_inode_lru_lock);
786 if (current->reclaim_state)
787 current->reclaim_state->reclaimed_slab += reap;
788
789 dispose_list(&freeable);
790}
791
792static void __wait_on_freeing_inode(struct inode *inode);
793
794
795
796static struct inode *find_inode(struct super_block *sb,
797 struct hlist_head *head,
798 int (*test)(struct inode *, void *),
799 void *data)
800{
801 struct hlist_node *node;
802 struct inode *inode = NULL;
803
804repeat:
805 hlist_for_each_entry(inode, node, head, i_hash) {
806 spin_lock(&inode->i_lock);
807 if (inode->i_sb != sb) {
808 spin_unlock(&inode->i_lock);
809 continue;
810 }
811 if (!test(inode, data)) {
812 spin_unlock(&inode->i_lock);
813 continue;
814 }
815 if (inode->i_state & (I_FREEING|I_WILL_FREE)) {
816 __wait_on_freeing_inode(inode);
817 goto repeat;
818 }
819 __iget(inode);
820 spin_unlock(&inode->i_lock);
821 return inode;
822 }
823 return NULL;
824}
825
826
827
828
829
830static struct inode *find_inode_fast(struct super_block *sb,
831 struct hlist_head *head, unsigned long ino)
832{
833 struct hlist_node *node;
834 struct inode *inode = NULL;
835
836repeat:
837 hlist_for_each_entry(inode, node, head, i_hash) {
838 spin_lock(&inode->i_lock);
839 if (inode->i_ino != ino) {
840 spin_unlock(&inode->i_lock);
841 continue;
842 }
843 if (inode->i_sb != sb) {
844 spin_unlock(&inode->i_lock);
845 continue;
846 }
847 if (inode->i_state & (I_FREEING|I_WILL_FREE)) {
848 __wait_on_freeing_inode(inode);
849 goto repeat;
850 }
851 __iget(inode);
852 spin_unlock(&inode->i_lock);
853 return inode;
854 }
855 return NULL;
856}
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873#define LAST_INO_BATCH 1024
874static DEFINE_PER_CPU(unsigned int, last_ino);
875
876unsigned int get_next_ino(void)
877{
878 unsigned int *p = &get_cpu_var(last_ino);
879 unsigned int res = *p;
880
881#ifdef CONFIG_SMP
882 if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
883 static atomic_t shared_last_ino;
884 int next = atomic_add_return(LAST_INO_BATCH, &shared_last_ino);
885
886 res = next - LAST_INO_BATCH;
887 }
888#endif
889
890 *p = ++res;
891 put_cpu_var(last_ino);
892 return res;
893}
894EXPORT_SYMBOL(get_next_ino);
895
896
897
898
899
900
901
902
903
904
905
906struct inode *new_inode_pseudo(struct super_block *sb)
907{
908 struct inode *inode = alloc_inode(sb);
909
910 if (inode) {
911 spin_lock(&inode->i_lock);
912 inode->i_state = 0;
913 spin_unlock(&inode->i_lock);
914 INIT_LIST_HEAD(&inode->i_sb_list);
915 }
916 return inode;
917}
918
919
920
921
922
923
924
925
926
927
928
929
930
931struct inode *new_inode(struct super_block *sb)
932{
933 struct inode *inode;
934
935 spin_lock_prefetch(&inode_sb_list_lock);
936
937 inode = new_inode_pseudo(sb);
938 if (inode)
939 inode_sb_list_add(inode);
940 return inode;
941}
942EXPORT_SYMBOL(new_inode);
943
944#ifdef CONFIG_DEBUG_LOCK_ALLOC
945void lockdep_annotate_inode_mutex_key(struct inode *inode)
946{
947 if (S_ISDIR(inode->i_mode)) {
948 struct file_system_type *type = inode->i_sb->s_type;
949
950
951 if (lockdep_match_class(&inode->i_mutex, &type->i_mutex_key)) {
952
953
954
955 mutex_destroy(&inode->i_mutex);
956 mutex_init(&inode->i_mutex);
957 lockdep_set_class(&inode->i_mutex,
958 &type->i_mutex_dir_key);
959 }
960 }
961}
962EXPORT_SYMBOL(lockdep_annotate_inode_mutex_key);
963#endif
964
965
966
967
968
969
970
971
972void unlock_new_inode(struct inode *inode)
973{
974 lockdep_annotate_inode_mutex_key(inode);
975 spin_lock(&inode->i_lock);
976 WARN_ON(!(inode->i_state & I_NEW));
977 inode->i_state &= ~I_NEW;
978 smp_mb();
979 wake_up_bit(&inode->i_state, __I_NEW);
980 spin_unlock(&inode->i_lock);
981}
982EXPORT_SYMBOL(unlock_new_inode);
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004struct inode *iget5_locked(struct super_block *sb, unsigned long hashval,
1005 int (*test)(struct inode *, void *),
1006 int (*set)(struct inode *, void *), void *data)
1007{
1008 struct hlist_head *head = inode_hashtable + hash(sb, hashval);
1009 struct inode *inode;
1010
1011 spin_lock(&inode_hash_lock);
1012 inode = find_inode(sb, head, test, data);
1013 spin_unlock(&inode_hash_lock);
1014
1015 if (inode) {
1016 wait_on_inode(inode);
1017 return inode;
1018 }
1019
1020 inode = alloc_inode(sb);
1021 if (inode) {
1022 struct inode *old;
1023
1024 spin_lock(&inode_hash_lock);
1025
1026 old = find_inode(sb, head, test, data);
1027 if (!old) {
1028 if (set(inode, data))
1029 goto set_failed;
1030
1031 spin_lock(&inode->i_lock);
1032 inode->i_state = I_NEW;
1033 hlist_add_head(&inode->i_hash, head);
1034 spin_unlock(&inode->i_lock);
1035 inode_sb_list_add(inode);
1036 spin_unlock(&inode_hash_lock);
1037
1038
1039
1040
1041 return inode;
1042 }
1043
1044
1045
1046
1047
1048
1049 spin_unlock(&inode_hash_lock);
1050 destroy_inode(inode);
1051 inode = old;
1052 wait_on_inode(inode);
1053 }
1054 return inode;
1055
1056set_failed:
1057 spin_unlock(&inode_hash_lock);
1058 destroy_inode(inode);
1059 return NULL;
1060}
1061EXPORT_SYMBOL(iget5_locked);
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076struct inode *iget_locked(struct super_block *sb, unsigned long ino)
1077{
1078 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1079 struct inode *inode;
1080
1081 spin_lock(&inode_hash_lock);
1082 inode = find_inode_fast(sb, head, ino);
1083 spin_unlock(&inode_hash_lock);
1084 if (inode) {
1085 wait_on_inode(inode);
1086 return inode;
1087 }
1088
1089 inode = alloc_inode(sb);
1090 if (inode) {
1091 struct inode *old;
1092
1093 spin_lock(&inode_hash_lock);
1094
1095 old = find_inode_fast(sb, head, ino);
1096 if (!old) {
1097 inode->i_ino = ino;
1098 spin_lock(&inode->i_lock);
1099 inode->i_state = I_NEW;
1100 hlist_add_head(&inode->i_hash, head);
1101 spin_unlock(&inode->i_lock);
1102 inode_sb_list_add(inode);
1103 spin_unlock(&inode_hash_lock);
1104
1105
1106
1107
1108 return inode;
1109 }
1110
1111
1112
1113
1114
1115
1116 spin_unlock(&inode_hash_lock);
1117 destroy_inode(inode);
1118 inode = old;
1119 wait_on_inode(inode);
1120 }
1121 return inode;
1122}
1123EXPORT_SYMBOL(iget_locked);
1124
1125
1126
1127
1128
1129
1130
1131
1132static int test_inode_iunique(struct super_block *sb, unsigned long ino)
1133{
1134 struct hlist_head *b = inode_hashtable + hash(sb, ino);
1135 struct hlist_node *node;
1136 struct inode *inode;
1137
1138 spin_lock(&inode_hash_lock);
1139 hlist_for_each_entry(inode, node, b, i_hash) {
1140 if (inode->i_ino == ino && inode->i_sb == sb) {
1141 spin_unlock(&inode_hash_lock);
1142 return 0;
1143 }
1144 }
1145 spin_unlock(&inode_hash_lock);
1146
1147 return 1;
1148}
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164ino_t iunique(struct super_block *sb, ino_t max_reserved)
1165{
1166
1167
1168
1169
1170
1171 static DEFINE_SPINLOCK(iunique_lock);
1172 static unsigned int counter;
1173 ino_t res;
1174
1175 spin_lock(&iunique_lock);
1176 do {
1177 if (counter <= max_reserved)
1178 counter = max_reserved + 1;
1179 res = counter++;
1180 } while (!test_inode_iunique(sb, res));
1181 spin_unlock(&iunique_lock);
1182
1183 return res;
1184}
1185EXPORT_SYMBOL(iunique);
1186
1187struct inode *igrab(struct inode *inode)
1188{
1189 spin_lock(&inode->i_lock);
1190 if (!(inode->i_state & (I_FREEING|I_WILL_FREE))) {
1191 __iget(inode);
1192 spin_unlock(&inode->i_lock);
1193 } else {
1194 spin_unlock(&inode->i_lock);
1195
1196
1197
1198
1199
1200 inode = NULL;
1201 }
1202 return inode;
1203}
1204EXPORT_SYMBOL(igrab);
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222struct inode *ilookup5_nowait(struct super_block *sb, unsigned long hashval,
1223 int (*test)(struct inode *, void *), void *data)
1224{
1225 struct hlist_head *head = inode_hashtable + hash(sb, hashval);
1226 struct inode *inode;
1227
1228 spin_lock(&inode_hash_lock);
1229 inode = find_inode(sb, head, test, data);
1230 spin_unlock(&inode_hash_lock);
1231
1232 return inode;
1233}
1234EXPORT_SYMBOL(ilookup5_nowait);
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
1254 int (*test)(struct inode *, void *), void *data)
1255{
1256 struct inode *inode = ilookup5_nowait(sb, hashval, test, data);
1257
1258 if (inode)
1259 wait_on_inode(inode);
1260 return inode;
1261}
1262EXPORT_SYMBOL(ilookup5);
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272struct inode *ilookup(struct super_block *sb, unsigned long ino)
1273{
1274 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1275 struct inode *inode;
1276
1277 spin_lock(&inode_hash_lock);
1278 inode = find_inode_fast(sb, head, ino);
1279 spin_unlock(&inode_hash_lock);
1280
1281 if (inode)
1282 wait_on_inode(inode);
1283 return inode;
1284}
1285EXPORT_SYMBOL(ilookup);
1286
1287int insert_inode_locked(struct inode *inode)
1288{
1289 struct super_block *sb = inode->i_sb;
1290 ino_t ino = inode->i_ino;
1291 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1292
1293 while (1) {
1294 struct hlist_node *node;
1295 struct inode *old = NULL;
1296 spin_lock(&inode_hash_lock);
1297 hlist_for_each_entry(old, node, head, i_hash) {
1298 if (old->i_ino != ino)
1299 continue;
1300 if (old->i_sb != sb)
1301 continue;
1302 spin_lock(&old->i_lock);
1303 if (old->i_state & (I_FREEING|I_WILL_FREE)) {
1304 spin_unlock(&old->i_lock);
1305 continue;
1306 }
1307 break;
1308 }
1309 if (likely(!node)) {
1310 spin_lock(&inode->i_lock);
1311 inode->i_state |= I_NEW;
1312 hlist_add_head(&inode->i_hash, head);
1313 spin_unlock(&inode->i_lock);
1314 spin_unlock(&inode_hash_lock);
1315 return 0;
1316 }
1317 __iget(old);
1318 spin_unlock(&old->i_lock);
1319 spin_unlock(&inode_hash_lock);
1320 wait_on_inode(old);
1321 if (unlikely(!inode_unhashed(old))) {
1322 iput(old);
1323 return -EBUSY;
1324 }
1325 iput(old);
1326 }
1327}
1328EXPORT_SYMBOL(insert_inode_locked);
1329
1330int insert_inode_locked4(struct inode *inode, unsigned long hashval,
1331 int (*test)(struct inode *, void *), void *data)
1332{
1333 struct super_block *sb = inode->i_sb;
1334 struct hlist_head *head = inode_hashtable + hash(sb, hashval);
1335
1336 while (1) {
1337 struct hlist_node *node;
1338 struct inode *old = NULL;
1339
1340 spin_lock(&inode_hash_lock);
1341 hlist_for_each_entry(old, node, head, i_hash) {
1342 if (old->i_sb != sb)
1343 continue;
1344 if (!test(old, data))
1345 continue;
1346 spin_lock(&old->i_lock);
1347 if (old->i_state & (I_FREEING|I_WILL_FREE)) {
1348 spin_unlock(&old->i_lock);
1349 continue;
1350 }
1351 break;
1352 }
1353 if (likely(!node)) {
1354 spin_lock(&inode->i_lock);
1355 inode->i_state |= I_NEW;
1356 hlist_add_head(&inode->i_hash, head);
1357 spin_unlock(&inode->i_lock);
1358 spin_unlock(&inode_hash_lock);
1359 return 0;
1360 }
1361 __iget(old);
1362 spin_unlock(&old->i_lock);
1363 spin_unlock(&inode_hash_lock);
1364 wait_on_inode(old);
1365 if (unlikely(!inode_unhashed(old))) {
1366 iput(old);
1367 return -EBUSY;
1368 }
1369 iput(old);
1370 }
1371}
1372EXPORT_SYMBOL(insert_inode_locked4);
1373
1374
1375int generic_delete_inode(struct inode *inode)
1376{
1377 return 1;
1378}
1379EXPORT_SYMBOL(generic_delete_inode);
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391static void iput_final(struct inode *inode)
1392{
1393 struct super_block *sb = inode->i_sb;
1394 const struct super_operations *op = inode->i_sb->s_op;
1395 int drop;
1396
1397 WARN_ON(inode->i_state & I_NEW);
1398
1399 if (op->drop_inode)
1400 drop = op->drop_inode(inode);
1401 else
1402 drop = generic_drop_inode(inode);
1403
1404 if (!drop && (sb->s_flags & MS_ACTIVE)) {
1405 inode->i_state |= I_REFERENCED;
1406 inode_add_lru(inode);
1407 spin_unlock(&inode->i_lock);
1408 return;
1409 }
1410
1411 if (!drop) {
1412 inode->i_state |= I_WILL_FREE;
1413 spin_unlock(&inode->i_lock);
1414 write_inode_now(inode, 1);
1415 spin_lock(&inode->i_lock);
1416 WARN_ON(inode->i_state & I_NEW);
1417 inode->i_state &= ~I_WILL_FREE;
1418 }
1419
1420 inode->i_state |= I_FREEING;
1421 if (!list_empty(&inode->i_lru))
1422 inode_lru_list_del(inode);
1423 spin_unlock(&inode->i_lock);
1424
1425 evict(inode);
1426}
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437void iput(struct inode *inode)
1438{
1439 if (inode) {
1440 BUG_ON(inode->i_state & I_CLEAR);
1441
1442 if (atomic_dec_and_lock(&inode->i_count, &inode->i_lock))
1443 iput_final(inode);
1444 }
1445}
1446EXPORT_SYMBOL(iput);
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459sector_t bmap(struct inode *inode, sector_t block)
1460{
1461 sector_t res = 0;
1462 if (inode->i_mapping->a_ops->bmap)
1463 res = inode->i_mapping->a_ops->bmap(inode->i_mapping, block);
1464 return res;
1465}
1466EXPORT_SYMBOL(bmap);
1467
1468
1469
1470
1471
1472
1473static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
1474 struct timespec now)
1475{
1476
1477 if (!(mnt->mnt_flags & MNT_RELATIME))
1478 return 1;
1479
1480
1481
1482 if (timespec_compare(&inode->i_mtime, &inode->i_atime) >= 0)
1483 return 1;
1484
1485
1486
1487 if (timespec_compare(&inode->i_ctime, &inode->i_atime) >= 0)
1488 return 1;
1489
1490
1491
1492
1493
1494 if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= 24*60*60)
1495 return 1;
1496
1497
1498
1499 return 0;
1500}
1501
1502
1503
1504
1505
1506static int update_time(struct inode *inode, struct timespec *time, int flags)
1507{
1508 if (inode->i_op->update_time)
1509 return inode->i_op->update_time(inode, time, flags);
1510
1511 if (flags & S_ATIME)
1512 inode->i_atime = *time;
1513 if (flags & S_VERSION)
1514 inode_inc_iversion(inode);
1515 if (flags & S_CTIME)
1516 inode->i_ctime = *time;
1517 if (flags & S_MTIME)
1518 inode->i_mtime = *time;
1519 mark_inode_dirty_sync(inode);
1520 return 0;
1521}
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531void touch_atime(struct path *path)
1532{
1533 struct vfsmount *mnt = path->mnt;
1534 struct inode *inode = path->dentry->d_inode;
1535 struct timespec now;
1536
1537 if (inode->i_flags & S_NOATIME)
1538 return;
1539 if (IS_NOATIME(inode))
1540 return;
1541 if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
1542 return;
1543
1544 if (mnt->mnt_flags & MNT_NOATIME)
1545 return;
1546 if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
1547 return;
1548
1549 now = current_fs_time(inode->i_sb);
1550
1551 if (!relatime_need_update(mnt, inode, now))
1552 return;
1553
1554 if (timespec_equal(&inode->i_atime, &now))
1555 return;
1556
1557 if (!sb_start_write_trylock(inode->i_sb))
1558 return;
1559
1560 if (__mnt_want_write(mnt))
1561 goto skip_update;
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571 update_time(inode, &now, S_ATIME);
1572 __mnt_drop_write(mnt);
1573skip_update:
1574 sb_end_write(inode->i_sb);
1575}
1576EXPORT_SYMBOL(touch_atime);
1577
1578
1579
1580
1581
1582
1583
1584int should_remove_suid(struct dentry *dentry)
1585{
1586 umode_t mode = dentry->d_inode->i_mode;
1587 int kill = 0;
1588
1589
1590 if (unlikely(mode & S_ISUID))
1591 kill = ATTR_KILL_SUID;
1592
1593
1594
1595
1596
1597 if (unlikely((mode & S_ISGID) && (mode & S_IXGRP)))
1598 kill |= ATTR_KILL_SGID;
1599
1600 if (unlikely(kill && !capable(CAP_FSETID) && S_ISREG(mode)))
1601 return kill;
1602
1603 return 0;
1604}
1605EXPORT_SYMBOL(should_remove_suid);
1606
1607static int __remove_suid(struct dentry *dentry, int kill)
1608{
1609 struct iattr newattrs;
1610
1611 newattrs.ia_valid = ATTR_FORCE | kill;
1612 return notify_change(dentry, &newattrs);
1613}
1614
1615int file_remove_suid(struct file *file)
1616{
1617 struct dentry *dentry = file->f_path.dentry;
1618 struct inode *inode = dentry->d_inode;
1619 int killsuid;
1620 int killpriv;
1621 int error = 0;
1622
1623
1624 if (IS_NOSEC(inode))
1625 return 0;
1626
1627 killsuid = should_remove_suid(dentry);
1628 killpriv = security_inode_need_killpriv(dentry);
1629
1630 if (killpriv < 0)
1631 return killpriv;
1632 if (killpriv)
1633 error = security_inode_killpriv(dentry);
1634 if (!error && killsuid)
1635 error = __remove_suid(dentry, killsuid);
1636 if (!error && (inode->i_sb->s_flags & MS_NOSEC))
1637 inode->i_flags |= S_NOSEC;
1638
1639 return error;
1640}
1641EXPORT_SYMBOL(file_remove_suid);
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656int file_update_time(struct file *file)
1657{
1658 struct inode *inode = file->f_path.dentry->d_inode;
1659 struct timespec now;
1660 int sync_it = 0;
1661 int ret;
1662
1663
1664 if (IS_NOCMTIME(inode))
1665 return 0;
1666
1667 now = current_fs_time(inode->i_sb);
1668 if (!timespec_equal(&inode->i_mtime, &now))
1669 sync_it = S_MTIME;
1670
1671 if (!timespec_equal(&inode->i_ctime, &now))
1672 sync_it |= S_CTIME;
1673
1674 if (IS_I_VERSION(inode))
1675 sync_it |= S_VERSION;
1676
1677 if (!sync_it)
1678 return 0;
1679
1680
1681 if (__mnt_want_write_file(file))
1682 return 0;
1683
1684 ret = update_time(inode, &now, sync_it);
1685 __mnt_drop_write_file(file);
1686
1687 return ret;
1688}
1689EXPORT_SYMBOL(file_update_time);
1690
1691int inode_needs_sync(struct inode *inode)
1692{
1693 if (IS_SYNC(inode))
1694 return 1;
1695 if (S_ISDIR(inode->i_mode) && IS_DIRSYNC(inode))
1696 return 1;
1697 return 0;
1698}
1699EXPORT_SYMBOL(inode_needs_sync);
1700
1701int inode_wait(void *word)
1702{
1703 schedule();
1704 return 0;
1705}
1706EXPORT_SYMBOL(inode_wait);
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719static void __wait_on_freeing_inode(struct inode *inode)
1720{
1721 wait_queue_head_t *wq;
1722 DEFINE_WAIT_BIT(wait, &inode->i_state, __I_NEW);
1723 wq = bit_waitqueue(&inode->i_state, __I_NEW);
1724 prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE);
1725 spin_unlock(&inode->i_lock);
1726 spin_unlock(&inode_hash_lock);
1727 schedule();
1728 finish_wait(wq, &wait.wait);
1729 spin_lock(&inode_hash_lock);
1730}
1731
1732static __initdata unsigned long ihash_entries;
1733static int __init set_ihash_entries(char *str)
1734{
1735 if (!str)
1736 return 0;
1737 ihash_entries = simple_strtoul(str, &str, 0);
1738 return 1;
1739}
1740__setup("ihash_entries=", set_ihash_entries);
1741
1742
1743
1744
1745void __init inode_init_early(void)
1746{
1747 unsigned int loop;
1748
1749
1750
1751
1752 if (hashdist)
1753 return;
1754
1755 inode_hashtable =
1756 alloc_large_system_hash("Inode-cache",
1757 sizeof(struct hlist_head),
1758 ihash_entries,
1759 14,
1760 HASH_EARLY,
1761 &i_hash_shift,
1762 &i_hash_mask,
1763 0,
1764 0);
1765
1766 for (loop = 0; loop < (1U << i_hash_shift); loop++)
1767 INIT_HLIST_HEAD(&inode_hashtable[loop]);
1768}
1769
1770void __init inode_init(void)
1771{
1772 unsigned int loop;
1773
1774
1775 inode_cachep = kmem_cache_create("inode_cache",
1776 sizeof(struct inode),
1777 0,
1778 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
1779 SLAB_MEM_SPREAD),
1780 init_once);
1781
1782
1783 if (!hashdist)
1784 return;
1785
1786 inode_hashtable =
1787 alloc_large_system_hash("Inode-cache",
1788 sizeof(struct hlist_head),
1789 ihash_entries,
1790 14,
1791 0,
1792 &i_hash_shift,
1793 &i_hash_mask,
1794 0,
1795 0);
1796
1797 for (loop = 0; loop < (1U << i_hash_shift); loop++)
1798 INIT_HLIST_HEAD(&inode_hashtable[loop]);
1799}
1800
1801void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev)
1802{
1803 inode->i_mode = mode;
1804 if (S_ISCHR(mode)) {
1805 inode->i_fop = &def_chr_fops;
1806 inode->i_rdev = rdev;
1807 } else if (S_ISBLK(mode)) {
1808 inode->i_fop = &def_blk_fops;
1809 inode->i_rdev = rdev;
1810 } else if (S_ISFIFO(mode))
1811 inode->i_fop = &def_fifo_fops;
1812 else if (S_ISSOCK(mode))
1813 inode->i_fop = &bad_sock_fops;
1814 else
1815 printk(KERN_DEBUG "init_special_inode: bogus i_mode (%o) for"
1816 " inode %s:%lu\n", mode, inode->i_sb->s_id,
1817 inode->i_ino);
1818}
1819EXPORT_SYMBOL(init_special_inode);
1820
1821
1822
1823
1824
1825
1826
1827void inode_init_owner(struct inode *inode, const struct inode *dir,
1828 umode_t mode)
1829{
1830 inode->i_uid = current_fsuid();
1831 if (dir && dir->i_mode & S_ISGID) {
1832 inode->i_gid = dir->i_gid;
1833 if (S_ISDIR(mode))
1834 mode |= S_ISGID;
1835 } else
1836 inode->i_gid = current_fsgid();
1837 inode->i_mode = mode;
1838}
1839EXPORT_SYMBOL(inode_init_owner);
1840
1841
1842
1843
1844
1845
1846
1847
1848bool inode_owner_or_capable(const struct inode *inode)
1849{
1850 if (uid_eq(current_fsuid(), inode->i_uid))
1851 return true;
1852 if (inode_capable(inode, CAP_FOWNER))
1853 return true;
1854 return false;
1855}
1856EXPORT_SYMBOL(inode_owner_or_capable);
1857
1858
1859
1860
1861static void __inode_dio_wait(struct inode *inode)
1862{
1863 wait_queue_head_t *wq = bit_waitqueue(&inode->i_state, __I_DIO_WAKEUP);
1864 DEFINE_WAIT_BIT(q, &inode->i_state, __I_DIO_WAKEUP);
1865
1866 do {
1867 prepare_to_wait(wq, &q.wait, TASK_UNINTERRUPTIBLE);
1868 if (atomic_read(&inode->i_dio_count))
1869 schedule();
1870 } while (atomic_read(&inode->i_dio_count));
1871 finish_wait(wq, &q.wait);
1872}
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884void inode_dio_wait(struct inode *inode)
1885{
1886 if (atomic_read(&inode->i_dio_count))
1887 __inode_dio_wait(inode);
1888}
1889EXPORT_SYMBOL(inode_dio_wait);
1890
1891
1892
1893
1894
1895
1896
1897
1898void inode_dio_done(struct inode *inode)
1899{
1900 if (atomic_dec_and_test(&inode->i_dio_count))
1901 wake_up_bit(&inode->i_state, __I_DIO_WAKEUP);
1902}
1903EXPORT_SYMBOL(inode_dio_done);
1904