| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * QNX4 file system, Linux implementation. |
|---|
| 3 | 4 | * |
|---|
| .. | .. |
|---|
| 28 | 29 | static const struct super_operations qnx4_sops; |
|---|
| 29 | 30 | |
|---|
| 30 | 31 | static struct inode *qnx4_alloc_inode(struct super_block *sb); |
|---|
| 31 | | -static void qnx4_destroy_inode(struct inode *inode); |
|---|
| 32 | +static void qnx4_free_inode(struct inode *inode); |
|---|
| 32 | 33 | static int qnx4_remount(struct super_block *sb, int *flags, char *data); |
|---|
| 33 | 34 | static int qnx4_statfs(struct dentry *, struct kstatfs *); |
|---|
| 34 | 35 | |
|---|
| 35 | 36 | static const struct super_operations qnx4_sops = |
|---|
| 36 | 37 | { |
|---|
| 37 | 38 | .alloc_inode = qnx4_alloc_inode, |
|---|
| 38 | | - .destroy_inode = qnx4_destroy_inode, |
|---|
| 39 | + .free_inode = qnx4_free_inode, |
|---|
| 39 | 40 | .statfs = qnx4_statfs, |
|---|
| 40 | 41 | .remount_fs = qnx4_remount, |
|---|
| 41 | 42 | }; |
|---|
| .. | .. |
|---|
| 136 | 137 | buf->f_bfree = qnx4_count_free_blocks(sb); |
|---|
| 137 | 138 | buf->f_bavail = buf->f_bfree; |
|---|
| 138 | 139 | buf->f_namelen = QNX4_NAME_MAX; |
|---|
| 139 | | - buf->f_fsid.val[0] = (u32)id; |
|---|
| 140 | | - buf->f_fsid.val[1] = (u32)(id >> 32); |
|---|
| 140 | + buf->f_fsid = u64_to_fsid(id); |
|---|
| 141 | 141 | |
|---|
| 142 | 142 | return 0; |
|---|
| 143 | 143 | } |
|---|
| .. | .. |
|---|
| 200 | 200 | s->s_op = &qnx4_sops; |
|---|
| 201 | 201 | s->s_magic = QNX4_SUPER_MAGIC; |
|---|
| 202 | 202 | s->s_flags |= SB_RDONLY; /* Yup, read-only yet */ |
|---|
| 203 | + s->s_time_min = 0; |
|---|
| 204 | + s->s_time_max = U32_MAX; |
|---|
| 203 | 205 | |
|---|
| 204 | 206 | /* Check the superblock signature. Since the qnx4 code is |
|---|
| 205 | 207 | dangerous, we should leave as quickly as possible |
|---|
| .. | .. |
|---|
| 342 | 344 | return &ei->vfs_inode; |
|---|
| 343 | 345 | } |
|---|
| 344 | 346 | |
|---|
| 345 | | -static void qnx4_i_callback(struct rcu_head *head) |
|---|
| 347 | +static void qnx4_free_inode(struct inode *inode) |
|---|
| 346 | 348 | { |
|---|
| 347 | | - struct inode *inode = container_of(head, struct inode, i_rcu); |
|---|
| 348 | 349 | kmem_cache_free(qnx4_inode_cachep, qnx4_i(inode)); |
|---|
| 349 | | -} |
|---|
| 350 | | - |
|---|
| 351 | | -static void qnx4_destroy_inode(struct inode *inode) |
|---|
| 352 | | -{ |
|---|
| 353 | | - call_rcu(&inode->i_rcu, qnx4_i_callback); |
|---|
| 354 | 350 | } |
|---|
| 355 | 351 | |
|---|
| 356 | 352 | static void init_once(void *foo) |
|---|
| .. | .. |
|---|
| 424 | 420 | module_init(init_qnx4_fs) |
|---|
| 425 | 421 | module_exit(exit_qnx4_fs) |
|---|
| 426 | 422 | MODULE_LICENSE("GPL"); |
|---|
| 423 | +MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY); |
|---|
| 427 | 424 | |
|---|