hc
2024-02-19 1c055e55a242a33e574e48be530e06770a210dcd
kernel/fs/affs/super.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * linux/fs/affs/inode.c
34 *
....@@ -111,23 +112,17 @@
111112 return &i->vfs_inode;
112113 }
113114
114
-static void affs_i_callback(struct rcu_head *head)
115
+static void affs_free_inode(struct inode *inode)
115116 {
116
- struct inode *inode = container_of(head, struct inode, i_rcu);
117117 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);
123118 }
124119
125120 static void init_once(void *foo)
126121 {
127122 struct affs_inode_info *ei = (struct affs_inode_info *) foo;
128123
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);
131126 inode_init_once(&ei->vfs_inode);
132127 }
133128
....@@ -155,7 +150,7 @@
155150
156151 static const struct super_operations affs_sops = {
157152 .alloc_inode = affs_alloc_inode,
158
- .destroy_inode = affs_destroy_inode,
153
+ .free_inode = affs_free_inode,
159154 .write_inode = affs_write_inode,
160155 .evict_inode = affs_evict_inode,
161156 .put_super = affs_put_super,
....@@ -360,6 +355,10 @@
360355 sb->s_op = &affs_sops;
361356 sb->s_flags |= SB_NODIRATIME;
362357
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
+
363362 sbi = kzalloc(sizeof(struct affs_sb_info), GFP_KERNEL);
364363 if (!sbi)
365364 return -ENOMEM;
....@@ -475,7 +474,7 @@
475474 case MUFS_INTLFFS:
476475 case MUFS_DCFFS:
477476 affs_set_opt(sbi->s_flags, SF_MUFS);
478
- /* fall thru */
477
+ fallthrough;
479478 case FS_INTLFFS:
480479 case FS_DCFFS:
481480 affs_set_opt(sbi->s_flags, SF_INTL);
....@@ -487,7 +486,7 @@
487486 break;
488487 case MUFS_OFS:
489488 affs_set_opt(sbi->s_flags, SF_MUFS);
490
- /* fall thru */
489
+ fallthrough;
491490 case FS_OFS:
492491 affs_set_opt(sbi->s_flags, SF_OFS);
493492 sb->s_flags |= SB_NOEXEC;
....@@ -495,6 +494,7 @@
495494 case MUFS_DCOFS:
496495 case MUFS_INTLOFS:
497496 affs_set_opt(sbi->s_flags, SF_MUFS);
497
+ fallthrough;
498498 case FS_DCOFS:
499499 case FS_INTLOFS:
500500 affs_set_opt(sbi->s_flags, SF_INTL);
....@@ -620,8 +620,7 @@
620620 buf->f_blocks = AFFS_SB(sb)->s_partition_size - AFFS_SB(sb)->s_reserved;
621621 buf->f_bfree = free;
622622 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);
625624 buf->f_namelen = AFFSNAMEMAX;
626625 return 0;
627626 }
....@@ -677,6 +676,7 @@
677676
678677 MODULE_DESCRIPTION("Amiga filesystem support for Linux");
679678 MODULE_LICENSE("GPL");
679
+MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
680680
681681 module_init(init_affs_fs)
682682 module_exit(exit_affs_fs)