| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * linux/fs/ufs/super.c |
|---|
| 3 | 4 | * |
|---|
| .. | .. |
|---|
| 842 | 843 | |
|---|
| 843 | 844 | sb->s_maxbytes = MAX_LFS_FILESIZE; |
|---|
| 844 | 845 | |
|---|
| 846 | + sb->s_time_gran = NSEC_PER_SEC; |
|---|
| 847 | + sb->s_time_min = S32_MIN; |
|---|
| 848 | + sb->s_time_max = S32_MAX; |
|---|
| 849 | + |
|---|
| 845 | 850 | switch (sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) { |
|---|
| 846 | 851 | case UFS_MOUNT_UFSTYPE_44BSD: |
|---|
| 847 | 852 | UFSD("ufstype=44bsd\n"); |
|---|
| .. | .. |
|---|
| 860 | 865 | uspi->s_fshift = 9; |
|---|
| 861 | 866 | uspi->s_sbsize = super_block_size = 1536; |
|---|
| 862 | 867 | uspi->s_sbbase = 0; |
|---|
| 868 | + sb->s_time_gran = 1; |
|---|
| 869 | + sb->s_time_min = S64_MIN; |
|---|
| 870 | + sb->s_time_max = S64_MAX; |
|---|
| 863 | 871 | flags |= UFS_TYPE_UFS2 | UFS_DE_44BSD | UFS_UID_44BSD | UFS_ST_44BSD | UFS_CG_44BSD; |
|---|
| 864 | 872 | break; |
|---|
| 865 | 873 | |
|---|
| .. | .. |
|---|
| 1406 | 1414 | struct super_block *sb = dentry->d_sb; |
|---|
| 1407 | 1415 | struct ufs_sb_private_info *uspi= UFS_SB(sb)->s_uspi; |
|---|
| 1408 | 1416 | unsigned flags = UFS_SB(sb)->s_flags; |
|---|
| 1409 | | - struct ufs_super_block_third *usb3; |
|---|
| 1410 | 1417 | u64 id = huge_encode_dev(sb->s_bdev->bd_dev); |
|---|
| 1411 | 1418 | |
|---|
| 1412 | 1419 | mutex_lock(&UFS_SB(sb)->s_lock); |
|---|
| 1413 | | - usb3 = ubh_get_usb_third(uspi); |
|---|
| 1414 | 1420 | |
|---|
| 1415 | 1421 | if ((flags & UFS_TYPE_MASK) == UFS_TYPE_UFS2) |
|---|
| 1416 | 1422 | buf->f_type = UFS2_MAGIC; |
|---|
| .. | .. |
|---|
| 1425 | 1431 | ? (buf->f_bfree - uspi->s_root_blocks) : 0; |
|---|
| 1426 | 1432 | buf->f_files = uspi->s_ncg * uspi->s_ipg; |
|---|
| 1427 | 1433 | buf->f_namelen = UFS_MAXNAMLEN; |
|---|
| 1428 | | - buf->f_fsid.val[0] = (u32)id; |
|---|
| 1429 | | - buf->f_fsid.val[1] = (u32)(id >> 32); |
|---|
| 1434 | + buf->f_fsid = u64_to_fsid(id); |
|---|
| 1430 | 1435 | |
|---|
| 1431 | 1436 | mutex_unlock(&UFS_SB(sb)->s_lock); |
|---|
| 1432 | 1437 | |
|---|
| .. | .. |
|---|
| 1449 | 1454 | return &ei->vfs_inode; |
|---|
| 1450 | 1455 | } |
|---|
| 1451 | 1456 | |
|---|
| 1452 | | -static void ufs_i_callback(struct rcu_head *head) |
|---|
| 1457 | +static void ufs_free_in_core_inode(struct inode *inode) |
|---|
| 1453 | 1458 | { |
|---|
| 1454 | | - struct inode *inode = container_of(head, struct inode, i_rcu); |
|---|
| 1455 | 1459 | kmem_cache_free(ufs_inode_cachep, UFS_I(inode)); |
|---|
| 1456 | | -} |
|---|
| 1457 | | - |
|---|
| 1458 | | -static void ufs_destroy_inode(struct inode *inode) |
|---|
| 1459 | | -{ |
|---|
| 1460 | | - call_rcu(&inode->i_rcu, ufs_i_callback); |
|---|
| 1461 | 1460 | } |
|---|
| 1462 | 1461 | |
|---|
| 1463 | 1462 | static void init_once(void *foo) |
|---|
| .. | .. |
|---|
| 1494 | 1493 | |
|---|
| 1495 | 1494 | static const struct super_operations ufs_super_ops = { |
|---|
| 1496 | 1495 | .alloc_inode = ufs_alloc_inode, |
|---|
| 1497 | | - .destroy_inode = ufs_destroy_inode, |
|---|
| 1496 | + .free_inode = ufs_free_in_core_inode, |
|---|
| 1498 | 1497 | .write_inode = ufs_write_inode, |
|---|
| 1499 | 1498 | .evict_inode = ufs_evict_inode, |
|---|
| 1500 | 1499 | .put_super = ufs_put_super, |
|---|
| .. | .. |
|---|
| 1543 | 1542 | module_init(init_ufs_fs) |
|---|
| 1544 | 1543 | module_exit(exit_ufs_fs) |
|---|
| 1545 | 1544 | MODULE_LICENSE("GPL"); |
|---|
| 1545 | +MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY); |
|---|