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