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