summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2019-08-29 08:19:30 -0400
committerJan Kara <jack@suse.cz>2019-09-04 12:19:43 -0400
commit8b47ea6c21cbf169c4c41ad6de1ac12fba5ddd8e (patch)
tree30e63b1b18d3c3970b58f3024ba0e04c128a3b6e
parent2dee5aac05565933c5bf6ad4acd4f9bcd6ea2ff7 (diff)
udf: Drop forward function declarations
Move some functions to make forward declarations unnecessary. Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r--fs/udf/super.c102
1 files changed, 49 insertions, 53 deletions
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 9e72a9e98ab3..7ab29124961c 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -92,10 +92,6 @@ static void udf_put_super(struct super_block *);
92static int udf_sync_fs(struct super_block *, int); 92static int udf_sync_fs(struct super_block *, int);
93static int udf_remount_fs(struct super_block *, int *, char *); 93static int udf_remount_fs(struct super_block *, int *, char *);
94static void udf_load_logicalvolint(struct super_block *, struct kernel_extent_ad); 94static void udf_load_logicalvolint(struct super_block *, struct kernel_extent_ad);
95static int udf_find_fileset(struct super_block *, struct kernel_lb_addr *,
96 struct kernel_lb_addr *);
97static int udf_load_fileset(struct super_block *, struct fileSetDesc *,
98 struct kernel_lb_addr *);
99static void udf_open_lvid(struct super_block *); 95static void udf_open_lvid(struct super_block *);
100static void udf_close_lvid(struct super_block *); 96static void udf_close_lvid(struct super_block *);
101static unsigned int udf_count_free(struct super_block *); 97static unsigned int udf_count_free(struct super_block *);
@@ -769,6 +765,55 @@ static int udf_check_vsd(struct super_block *sb)
769 return 0; 765 return 0;
770} 766}
771 767
768static int udf_verify_domain_identifier(struct super_block *sb,
769 struct regid *ident, char *dname)
770{
771 struct domainEntityIDSuffix *suffix;
772
773 if (memcmp(ident->ident, UDF_ID_COMPLIANT, strlen(UDF_ID_COMPLIANT))) {
774 udf_warn(sb, "Not OSTA UDF compliant %s descriptor.\n", dname);
775 goto force_ro;
776 }
777 if (ident->flags & (1 << ENTITYID_FLAGS_DIRTY)) {
778 udf_warn(sb, "Possibly not OSTA UDF compliant %s descriptor.\n",
779 dname);
780 goto force_ro;
781 }
782 suffix = (struct domainEntityIDSuffix *)ident->identSuffix;
783 if (suffix->flags & (1 << ENTITYIDSUFFIX_FLAGS_HARDWRITEPROTECT) ||
784 suffix->flags & (1 << ENTITYIDSUFFIX_FLAGS_SOFTWRITEPROTECT)) {
785 if (!sb_rdonly(sb)) {
786 udf_warn(sb, "Descriptor for %s marked write protected."
787 " Forcing read only mount.\n", dname);
788 }
789 goto force_ro;
790 }
791 return 0;
792
793force_ro:
794 if (!sb_rdonly(sb))
795 return -EACCES;
796 UDF_SET_FLAG(sb, UDF_FLAG_RW_INCOMPAT);
797 return 0;
798}
799
800static int udf_load_fileset(struct super_block *sb, struct fileSetDesc *fset,
801 struct kernel_lb_addr *root)
802{
803 int ret;
804
805 ret = udf_verify_domain_identifier(sb, &fset->domainIdent, "file set");
806 if (ret < 0)
807 return ret;
808
809 *root = lelb_to_cpu(fset->rootDirectoryICB.extLocation);
810 UDF_SB(sb)->s_serial_number = le16_to_cpu(fset->descTag.tagSerialNum);
811
812 udf_debug("Rootdir at block=%u, partition=%u\n",
813 root->logicalBlockNum, root->partitionReferenceNum);
814 return 0;
815}
816
772static int udf_find_fileset(struct super_block *sb, 817static int udf_find_fileset(struct super_block *sb,
773 struct kernel_lb_addr *fileset, 818 struct kernel_lb_addr *fileset,
774 struct kernel_lb_addr *root) 819 struct kernel_lb_addr *root)
@@ -951,55 +996,6 @@ static int udf_load_metadata_files(struct super_block *sb, int partition,
951 return 0; 996 return 0;
952} 997}
953 998
954static int udf_verify_domain_identifier(struct super_block *sb,
955 struct regid *ident, char *dname)
956{
957 struct domainEntityIDSuffix *suffix;
958
959 if (memcmp(ident->ident, UDF_ID_COMPLIANT, strlen(UDF_ID_COMPLIANT))) {
960 udf_warn(sb, "Not OSTA UDF compliant %s descriptor.\n", dname);
961 goto force_ro;
962 }
963 if (ident->flags & (1 << ENTITYID_FLAGS_DIRTY)) {
964 udf_warn(sb, "Possibly not OSTA UDF compliant %s descriptor.\n",
965 dname);
966 goto force_ro;
967 }
968 suffix = (struct domainEntityIDSuffix *)ident->identSuffix;
969 if (suffix->flags & (1 << ENTITYIDSUFFIX_FLAGS_HARDWRITEPROTECT) ||
970 suffix->flags & (1 << ENTITYIDSUFFIX_FLAGS_SOFTWRITEPROTECT)) {
971 if (!sb_rdonly(sb)) {
972 udf_warn(sb, "Descriptor for %s marked write protected."
973 " Forcing read only mount.\n", dname);
974 }
975 goto force_ro;
976 }
977 return 0;
978
979force_ro:
980 if (!sb_rdonly(sb))
981 return -EACCES;
982 UDF_SET_FLAG(sb, UDF_FLAG_RW_INCOMPAT);
983 return 0;
984}
985
986static int udf_load_fileset(struct super_block *sb, struct fileSetDesc *fset,
987 struct kernel_lb_addr *root)
988{
989 int ret;
990
991 ret = udf_verify_domain_identifier(sb, &fset->domainIdent, "file set");
992 if (ret < 0)
993 return ret;
994
995 *root = lelb_to_cpu(fset->rootDirectoryICB.extLocation);
996 UDF_SB(sb)->s_serial_number = le16_to_cpu(fset->descTag.tagSerialNum);
997
998 udf_debug("Rootdir at block=%u, partition=%u\n",
999 root->logicalBlockNum, root->partitionReferenceNum);
1000 return 0;
1001}
1002
1003int udf_compute_nr_groups(struct super_block *sb, u32 partition) 999int udf_compute_nr_groups(struct super_block *sb, u32 partition)
1004{ 1000{
1005 struct udf_part_map *map = &UDF_SB(sb)->s_partmaps[partition]; 1001 struct udf_part_map *map = &UDF_SB(sb)->s_partmaps[partition];