.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * linux/fs/affs/inode.c |
---|
3 | 4 | * |
---|
.. | .. |
---|
111 | 112 | return &i->vfs_inode; |
---|
112 | 113 | } |
---|
113 | 114 | |
---|
114 | | -static void affs_i_callback(struct rcu_head *head) |
---|
| 115 | +static void affs_free_inode(struct inode *inode) |
---|
115 | 116 | { |
---|
116 | | - struct inode *inode = container_of(head, struct inode, i_rcu); |
---|
117 | 117 | kmem_cache_free(affs_inode_cachep, AFFS_I(inode)); |
---|
118 | | -} |
---|
119 | | - |
---|
120 | | -static void affs_destroy_inode(struct inode *inode) |
---|
121 | | -{ |
---|
122 | | - call_rcu(&inode->i_rcu, affs_i_callback); |
---|
123 | 118 | } |
---|
124 | 119 | |
---|
125 | 120 | static void init_once(void *foo) |
---|
126 | 121 | { |
---|
127 | 122 | struct affs_inode_info *ei = (struct affs_inode_info *) foo; |
---|
128 | 123 | |
---|
129 | | - sema_init(&ei->i_link_lock, 1); |
---|
130 | | - sema_init(&ei->i_ext_lock, 1); |
---|
| 124 | + mutex_init(&ei->i_link_lock); |
---|
| 125 | + mutex_init(&ei->i_ext_lock); |
---|
131 | 126 | inode_init_once(&ei->vfs_inode); |
---|
132 | 127 | } |
---|
133 | 128 | |
---|
.. | .. |
---|
155 | 150 | |
---|
156 | 151 | static const struct super_operations affs_sops = { |
---|
157 | 152 | .alloc_inode = affs_alloc_inode, |
---|
158 | | - .destroy_inode = affs_destroy_inode, |
---|
| 153 | + .free_inode = affs_free_inode, |
---|
159 | 154 | .write_inode = affs_write_inode, |
---|
160 | 155 | .evict_inode = affs_evict_inode, |
---|
161 | 156 | .put_super = affs_put_super, |
---|
.. | .. |
---|
360 | 355 | sb->s_op = &affs_sops; |
---|
361 | 356 | sb->s_flags |= SB_NODIRATIME; |
---|
362 | 357 | |
---|
| 358 | + sb->s_time_gran = NSEC_PER_SEC; |
---|
| 359 | + sb->s_time_min = sys_tz.tz_minuteswest * 60 + AFFS_EPOCH_DELTA; |
---|
| 360 | + sb->s_time_max = 86400LL * U32_MAX + 86400 + sb->s_time_min; |
---|
| 361 | + |
---|
363 | 362 | sbi = kzalloc(sizeof(struct affs_sb_info), GFP_KERNEL); |
---|
364 | 363 | if (!sbi) |
---|
365 | 364 | return -ENOMEM; |
---|
.. | .. |
---|
475 | 474 | case MUFS_INTLFFS: |
---|
476 | 475 | case MUFS_DCFFS: |
---|
477 | 476 | affs_set_opt(sbi->s_flags, SF_MUFS); |
---|
478 | | - /* fall thru */ |
---|
| 477 | + fallthrough; |
---|
479 | 478 | case FS_INTLFFS: |
---|
480 | 479 | case FS_DCFFS: |
---|
481 | 480 | affs_set_opt(sbi->s_flags, SF_INTL); |
---|
.. | .. |
---|
487 | 486 | break; |
---|
488 | 487 | case MUFS_OFS: |
---|
489 | 488 | affs_set_opt(sbi->s_flags, SF_MUFS); |
---|
490 | | - /* fall thru */ |
---|
| 489 | + fallthrough; |
---|
491 | 490 | case FS_OFS: |
---|
492 | 491 | affs_set_opt(sbi->s_flags, SF_OFS); |
---|
493 | 492 | sb->s_flags |= SB_NOEXEC; |
---|
.. | .. |
---|
495 | 494 | case MUFS_DCOFS: |
---|
496 | 495 | case MUFS_INTLOFS: |
---|
497 | 496 | affs_set_opt(sbi->s_flags, SF_MUFS); |
---|
| 497 | + fallthrough; |
---|
498 | 498 | case FS_DCOFS: |
---|
499 | 499 | case FS_INTLOFS: |
---|
500 | 500 | affs_set_opt(sbi->s_flags, SF_INTL); |
---|
.. | .. |
---|
620 | 620 | buf->f_blocks = AFFS_SB(sb)->s_partition_size - AFFS_SB(sb)->s_reserved; |
---|
621 | 621 | buf->f_bfree = free; |
---|
622 | 622 | buf->f_bavail = free; |
---|
623 | | - buf->f_fsid.val[0] = (u32)id; |
---|
624 | | - buf->f_fsid.val[1] = (u32)(id >> 32); |
---|
| 623 | + buf->f_fsid = u64_to_fsid(id); |
---|
625 | 624 | buf->f_namelen = AFFSNAMEMAX; |
---|
626 | 625 | return 0; |
---|
627 | 626 | } |
---|
.. | .. |
---|
677 | 676 | |
---|
678 | 677 | MODULE_DESCRIPTION("Amiga filesystem support for Linux"); |
---|
679 | 678 | MODULE_LICENSE("GPL"); |
---|
| 679 | +MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY); |
---|
680 | 680 | |
---|
681 | 681 | module_init(init_affs_fs) |
---|
682 | 682 | module_exit(exit_affs_fs) |
---|