Lines Matching refs:sb

99 struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct super_block *sb)  in udf_sb_lvidiu()  argument
105 if (!UDF_SB(sb)->s_lvid_bh) in udf_sb_lvidiu()
107 lvid = (struct logicalVolIntegrityDesc *)UDF_SB(sb)->s_lvid_bh->b_data; in udf_sb_lvidiu()
109 if ((sb->s_blocksize - sizeof(struct logicalVolIntegrityDescImpUse) - in udf_sb_lvidiu()
112 udf_err(sb, "Logical volume integrity descriptor corrupted " in udf_sb_lvidiu()
139 static struct inode *udf_alloc_inode(struct super_block *sb) in udf_alloc_inode() argument
260 static int udf_sb_alloc_partition_maps(struct super_block *sb, u32 count) in module_exit()
262 struct udf_sb_info *sbi = UDF_SB(sb); in module_exit()
267 udf_err(sb, "Unable to allocate space for %d partition maps\n", in module_exit()
323 static void udf_sb_free_partitions(struct super_block *sb) in udf_sb_free_partitions() argument
325 struct udf_sb_info *sbi = UDF_SB(sb); in udf_sb_free_partitions()
337 struct super_block *sb = root->d_sb; in udf_show_options() local
338 struct udf_sb_info *sbi = UDF_SB(sb); in udf_show_options()
340 if (!UDF_QUERY_FLAG(sb, UDF_FLAG_STRICT)) in udf_show_options()
342 if (UDF_QUERY_FLAG(sb, UDF_FLAG_BLOCKSIZE_SET)) in udf_show_options()
343 seq_printf(seq, ",bs=%lu", sb->s_blocksize); in udf_show_options()
344 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UNHIDE)) in udf_show_options()
346 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UNDELETE)) in udf_show_options()
348 if (!UDF_QUERY_FLAG(sb, UDF_FLAG_USE_AD_IN_ICB)) in udf_show_options()
350 if (UDF_QUERY_FLAG(sb, UDF_FLAG_USE_SHORT_AD)) in udf_show_options()
352 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_FORGET)) in udf_show_options()
354 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_IGNORE)) in udf_show_options()
356 if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_FORGET)) in udf_show_options()
358 if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_IGNORE)) in udf_show_options()
360 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_SET)) in udf_show_options()
362 if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_SET)) in udf_show_options()
370 if (UDF_QUERY_FLAG(sb, UDF_FLAG_SESSION_SET)) in udf_show_options()
372 if (UDF_QUERY_FLAG(sb, UDF_FLAG_LASTBLOCK_SET)) in udf_show_options()
380 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UTF8)) in udf_show_options()
382 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP) && sbi->s_nls_map) in udf_show_options()
645 static int udf_remount_fs(struct super_block *sb, int *flags, char *options) in udf_remount_fs() argument
648 struct udf_sb_info *sbi = UDF_SB(sb); in udf_remount_fs()
650 struct logicalVolIntegrityDescImpUse *lvidiu = udf_sb_lvidiu(sb); in udf_remount_fs()
652 sync_filesystem(sb); in udf_remount_fs()
678 if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) in udf_remount_fs()
682 udf_close_lvid(sb); in udf_remount_fs()
684 udf_open_lvid(sb); in udf_remount_fs()
692 static loff_t udf_check_vsd(struct super_block *sb) in udf_check_vsd() argument
702 sbi = UDF_SB(sb); in udf_check_vsd()
703 if (sb->s_blocksize < sizeof(struct volStructDesc)) in udf_check_vsd()
706 sectorsize = sb->s_blocksize; in udf_check_vsd()
708 sector += (sbi->s_session << sb->s_blocksize_bits); in udf_check_vsd()
711 (unsigned int)(sector >> sb->s_blocksize_bits), in udf_check_vsd()
712 sb->s_blocksize); in udf_check_vsd()
726 bh = udf_tread(sb, sector >> sb->s_blocksize_bits); in udf_check_vsd()
732 (sector & (sb->s_blocksize - 1))); in udf_check_vsd()
788 else if (!bh && sector - (sbi->s_session << sb->s_blocksize_bits) == in udf_check_vsd()
795 static int udf_find_fileset(struct super_block *sb, in udf_find_fileset() argument
806 bh = udf_read_ptagged(sb, fileset, 0, &ident); in udf_find_fileset()
817 sbi = UDF_SB(sb); in udf_find_fileset()
836 bh = udf_read_ptagged(sb, &newfileset, 0, in udf_find_fileset()
852 - 1) >> sb->s_blocksize_bits); in udf_find_fileset()
878 udf_load_fileset(sb, bh, root); in udf_find_fileset()
891 static int udf_load_pvoldesc(struct super_block *sb, sector_t block) in udf_load_pvoldesc() argument
907 bh = udf_read_tagged(sb, block, block, &ident); in udf_load_pvoldesc()
920 if (udf_disk_stamp_to_time(&UDF_SB(sb)->s_record_time, in udf_load_pvoldesc()
932 strncpy(UDF_SB(sb)->s_volume_ident, outstr->u_name, in udf_load_pvoldesc()
935 UDF_SB(sb)->s_volume_ident); in udf_load_pvoldesc()
952 struct inode *udf_find_metadata_inode_efe(struct super_block *sb, in udf_find_metadata_inode_efe() argument
961 metadata_fe = udf_iget_special(sb, &addr); in udf_find_metadata_inode_efe()
964 udf_warn(sb, "metadata inode efe not found\n"); in udf_find_metadata_inode_efe()
968 udf_warn(sb, "metadata inode efe does not have short allocation descriptors!\n"); in udf_find_metadata_inode_efe()
976 static int udf_load_metadata_files(struct super_block *sb, int partition) in udf_load_metadata_files() argument
978 struct udf_sb_info *sbi = UDF_SB(sb); in udf_load_metadata_files()
991 fe = udf_find_metadata_inode_efe(sb, mdata->s_meta_file_loc, in udf_load_metadata_files()
998 fe = udf_find_metadata_inode_efe(sb, mdata->s_mirror_file_loc, in udf_load_metadata_files()
1002 udf_err(sb, "Both metadata and mirror metadata inode efe can not found\n"); in udf_load_metadata_files()
1022 fe = udf_iget_special(sb, &addr); in udf_load_metadata_files()
1024 if (sb->s_flags & MS_RDONLY) in udf_load_metadata_files()
1025 udf_warn(sb, "bitmap inode efe not found but it's ok since the disc is mounted read-only\n"); in udf_load_metadata_files()
1027 udf_err(sb, "bitmap inode efe not found and attempted read-write mount\n"); in udf_load_metadata_files()
1038 static void udf_load_fileset(struct super_block *sb, struct buffer_head *bh, in udf_load_fileset() argument
1047 UDF_SB(sb)->s_serial_number = le16_to_cpu(fset->descTag.tagSerialNum); in udf_load_fileset()
1053 int udf_compute_nr_groups(struct super_block *sb, u32 partition) in udf_compute_nr_groups() argument
1055 struct udf_part_map *map = &UDF_SB(sb)->s_partmaps[partition]; in udf_compute_nr_groups()
1058 sb->s_blocksize * 8); in udf_compute_nr_groups()
1061 static struct udf_bitmap *udf_sb_alloc_bitmap(struct super_block *sb, u32 index) in udf_sb_alloc_bitmap() argument
1067 nr_groups = udf_compute_nr_groups(sb, index); in udf_sb_alloc_bitmap()
1083 static int udf_fill_partdesc_info(struct super_block *sb, in udf_fill_partdesc_info() argument
1087 struct udf_sb_info *sbi = UDF_SB(sb); in udf_fill_partdesc_info()
1121 inode = udf_iget_special(sb, &loc); in udf_fill_partdesc_info()
1134 struct udf_bitmap *bitmap = udf_sb_alloc_bitmap(sb, p_index); in udf_fill_partdesc_info()
1156 inode = udf_iget_special(sb, &loc); in udf_fill_partdesc_info()
1169 struct udf_bitmap *bitmap = udf_sb_alloc_bitmap(sb, p_index); in udf_fill_partdesc_info()
1182 static void udf_find_vat_block(struct super_block *sb, int p_index, in udf_find_vat_block() argument
1185 struct udf_sb_info *sbi = UDF_SB(sb); in udf_find_vat_block()
1200 inode = udf_iget_special(sb, &ino); in udf_find_vat_block()
1208 static int udf_load_vat(struct super_block *sb, int p_index, int type1_index) in udf_load_vat() argument
1210 struct udf_sb_info *sbi = UDF_SB(sb); in udf_load_vat()
1216 sector_t blocks = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits; in udf_load_vat()
1218 udf_find_vat_block(sb, p_index, type1_index, sbi->s_last_block); in udf_load_vat()
1224 udf_find_vat_block(sb, p_index, type1_index, blocks - 1); in udf_load_vat()
1237 bh = sb_bread(sb, pos); in udf_load_vat()
1263 static int udf_load_partdesc(struct super_block *sb, sector_t block) in udf_load_partdesc() argument
1268 struct udf_sb_info *sbi = UDF_SB(sb); in udf_load_partdesc()
1274 bh = udf_read_tagged(sb, block, block, &ident); in udf_load_partdesc()
1303 ret = udf_fill_partdesc_info(sb, p, i); in udf_load_partdesc()
1330 ret = udf_fill_partdesc_info(sb, p, i); in udf_load_partdesc()
1335 ret = udf_load_metadata_files(sb, i); in udf_load_partdesc()
1337 udf_err(sb, "error loading MetaData partition map %d\n", in udf_load_partdesc()
1347 if (!(sb->s_flags & MS_RDONLY)) { in udf_load_partdesc()
1351 ret = udf_load_vat(sb, i, type1_idx); in udf_load_partdesc()
1362 static int udf_load_sparable_map(struct super_block *sb, in udf_load_sparable_map() argument
1376 udf_err(sb, "error loading logical volume descriptor: " in udf_load_sparable_map()
1382 udf_err(sb, "error loading logical volume descriptor: " in udf_load_sparable_map()
1390 bh = udf_read_tagged(sb, loc, loc, &ident); in udf_load_sparable_map()
1399 sb->s_blocksize) { in udf_load_sparable_map()
1410 static int udf_load_logicalvol(struct super_block *sb, sector_t block, in udf_load_logicalvol() argument
1416 struct udf_sb_info *sbi = UDF_SB(sb); in udf_load_logicalvol()
1423 bh = udf_read_tagged(sb, block, block, &ident); in udf_load_logicalvol()
1429 if (table_len > sb->s_blocksize - sizeof(*lvd)) { in udf_load_logicalvol()
1430 udf_err(sb, "error loading logical volume descriptor: " in udf_load_logicalvol()
1432 sb->s_blocksize - sizeof(*lvd)); in udf_load_logicalvol()
1437 ret = udf_sb_alloc_partition_maps(sb, le32_to_cpu(lvd->numPartitionMaps)); in udf_load_logicalvol()
1477 ret = udf_load_sparable_map(sb, map, in udf_load_logicalvol()
1544 udf_load_logicalvolint(sb, leea_to_cpu(lvd->integritySeqExt)); in udf_load_logicalvol()
1555 static void udf_load_logicalvolint(struct super_block *sb, struct kernel_extent_ad loc) in udf_load_logicalvolint() argument
1559 struct udf_sb_info *sbi = UDF_SB(sb); in udf_load_logicalvolint()
1563 (bh = udf_read_tagged(sb, loc.extLocation, in udf_load_logicalvolint()
1570 udf_load_logicalvolint(sb, in udf_load_logicalvolint()
1575 loc.extLength -= sb->s_blocksize; in udf_load_logicalvolint()
1592 struct super_block *sb, in udf_process_sequence() argument
1615 bh = udf_read_tagged(sb, block, block, &ident); in udf_process_sequence()
1617 udf_err(sb, in udf_process_sequence()
1645 next_e = next_e >> sb->s_blocksize_bits; in udf_process_sequence()
1692 udf_err(sb, "Primary Volume Descriptor not found!\n"); in udf_process_sequence()
1695 ret = udf_load_pvoldesc(sb, vds[VDS_POS_PRIMARY_VOL_DESC].block); in udf_process_sequence()
1700 ret = udf_load_logicalvol(sb, in udf_process_sequence()
1715 ret = udf_load_partdesc(sb, block); in udf_process_sequence()
1729 static int udf_load_sequence(struct super_block *sb, struct buffer_head *bh, in udf_load_sequence() argument
1741 main_e = main_e >> sb->s_blocksize_bits; in udf_load_sequence()
1747 reserve_e = reserve_e >> sb->s_blocksize_bits; in udf_load_sequence()
1752 ret = udf_process_sequence(sb, main_s, main_e, fileset); in udf_load_sequence()
1755 udf_sb_free_partitions(sb); in udf_load_sequence()
1756 ret = udf_process_sequence(sb, reserve_s, reserve_e, fileset); in udf_load_sequence()
1758 udf_sb_free_partitions(sb); in udf_load_sequence()
1773 static int udf_check_anchor_block(struct super_block *sb, sector_t block, in udf_check_anchor_block() argument
1780 if (UDF_QUERY_FLAG(sb, UDF_FLAG_VARCONV) && in udf_check_anchor_block()
1782 sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits) in udf_check_anchor_block()
1785 bh = udf_read_tagged(sb, block, block, &ident); in udf_check_anchor_block()
1792 ret = udf_load_sequence(sb, bh, fileset); in udf_check_anchor_block()
1803 static int udf_scan_anchors(struct super_block *sb, sector_t *lastblock, in udf_scan_anchors() argument
1808 struct udf_sb_info *sbi = UDF_SB(sb); in udf_scan_anchors()
1814 ret = udf_check_anchor_block(sb, sbi->s_anchor, fileset); in udf_scan_anchors()
1825 ret = udf_check_anchor_block(sb, sbi->s_session + 256, fileset); in udf_scan_anchors()
1844 if (last[i] >= sb->s_bdev->bd_inode->i_size >> in udf_scan_anchors()
1845 sb->s_blocksize_bits) in udf_scan_anchors()
1847 ret = udf_check_anchor_block(sb, last[i], fileset); in udf_scan_anchors()
1855 ret = udf_check_anchor_block(sb, last[i] - 256, fileset); in udf_scan_anchors()
1864 return udf_check_anchor_block(sb, sbi->s_session + 512, fileset); in udf_scan_anchors()
1875 static int udf_find_anchor(struct super_block *sb, in udf_find_anchor() argument
1878 struct udf_sb_info *sbi = UDF_SB(sb); in udf_find_anchor()
1882 ret = udf_scan_anchors(sb, &lastblock, fileset); in udf_find_anchor()
1887 UDF_SET_FLAG(sb, UDF_FLAG_VARCONV); in udf_find_anchor()
1890 ret = udf_scan_anchors(sb, &lastblock, fileset); in udf_find_anchor()
1896 ret = udf_scan_anchors(sb, &lastblock, fileset); in udf_find_anchor()
1899 UDF_CLEAR_FLAG(sb, UDF_FLAG_VARCONV); in udf_find_anchor()
1914 static int udf_load_vrs(struct super_block *sb, struct udf_options *uopt, in udf_load_vrs() argument
1917 struct udf_sb_info *sbi = UDF_SB(sb); in udf_load_vrs()
1921 if (!sb_set_blocksize(sb, uopt->blocksize)) { in udf_load_vrs()
1923 udf_warn(sb, "Bad block size\n"); in udf_load_vrs()
1929 nsr_off = udf_check_vsd(sb); in udf_load_vrs()
1932 udf_warn(sb, "No VRS found\n"); in udf_load_vrs()
1940 sbi->s_last_block = udf_get_last_block(sb); in udf_load_vrs()
1947 ret = udf_find_anchor(sb, fileset); in udf_load_vrs()
1950 udf_warn(sb, "No anchor found\n"); in udf_load_vrs()
1956 static void udf_open_lvid(struct super_block *sb) in udf_open_lvid() argument
1958 struct udf_sb_info *sbi = UDF_SB(sb); in udf_open_lvid()
1966 lvidiu = udf_sb_lvidiu(sb); in udf_open_lvid()
1989 static void udf_close_lvid(struct super_block *sb) in udf_close_lvid() argument
1991 struct udf_sb_info *sbi = UDF_SB(sb); in udf_close_lvid()
1999 lvidiu = udf_sb_lvidiu(sb); in udf_close_lvid()
2033 u64 lvid_get_unique_id(struct super_block *sb) in lvid_get_unique_id() argument
2036 struct udf_sb_info *sbi = UDF_SB(sb); in lvid_get_unique_id()
2060 static int udf_fill_super(struct super_block *sb, void *options, int silent) in udf_fill_super() argument
2079 sb->s_fs_info = sbi; in udf_fill_super()
2088 udf_err(sb, "utf8 cannot be combined with iocharset\n"); in udf_fill_super()
2116 sbi->s_session = udf_get_last_session(sb); in udf_fill_super()
2123 sb->s_op = &udf_sb_ops; in udf_fill_super()
2124 sb->s_export_op = &udf_export_ops; in udf_fill_super()
2126 sb->s_magic = UDF_SUPER_MAGIC; in udf_fill_super()
2127 sb->s_time_gran = 1000; in udf_fill_super()
2130 ret = udf_load_vrs(sb, &uopt, silent, &fileset); in udf_fill_super()
2132 uopt.blocksize = bdev_logical_block_size(sb->s_bdev); in udf_fill_super()
2133 ret = udf_load_vrs(sb, &uopt, silent, &fileset); in udf_fill_super()
2141 ret = udf_load_vrs(sb, &uopt, silent, &fileset); in udf_fill_super()
2146 udf_warn(sb, "No partition found (1)\n"); in udf_fill_super()
2156 udf_sb_lvidiu(sb); in udf_fill_super()
2167 udf_err(sb, "minUDFReadRev=%x (max is %x)\n", in udf_fill_super()
2173 !(sb->s_flags & MS_RDONLY)) { in udf_fill_super()
2181 UDF_SET_FLAG(sb, UDF_FLAG_USE_EXTENDED_FE); in udf_fill_super()
2183 UDF_SET_FLAG(sb, UDF_FLAG_USE_STREAMS); in udf_fill_super()
2187 udf_warn(sb, "No partition found (2)\n"); in udf_fill_super()
2194 !(sb->s_flags & MS_RDONLY)) { in udf_fill_super()
2199 if (udf_find_fileset(sb, &fileset, &rootdir)) { in udf_fill_super()
2200 udf_warn(sb, "No fileset found\n"); in udf_fill_super()
2213 if (!(sb->s_flags & MS_RDONLY)) in udf_fill_super()
2214 udf_open_lvid(sb); in udf_fill_super()
2219 inode = udf_iget(sb, &rootdir); in udf_fill_super()
2221 udf_err(sb, "Error in udf_iget, block=%d, partition=%d\n", in udf_fill_super()
2228 sb->s_root = d_make_root(inode); in udf_fill_super()
2229 if (!sb->s_root) { in udf_fill_super()
2230 udf_err(sb, "Couldn't allocate root dentry\n"); in udf_fill_super()
2234 sb->s_maxbytes = MAX_LFS_FILESIZE; in udf_fill_super()
2235 sb->s_max_links = UDF_MAX_LINKS; in udf_fill_super()
2242 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) in udf_fill_super()
2245 if (!(sb->s_flags & MS_RDONLY)) in udf_fill_super()
2246 udf_close_lvid(sb); in udf_fill_super()
2248 udf_sb_free_partitions(sb); in udf_fill_super()
2250 sb->s_fs_info = NULL; in udf_fill_super()
2255 void _udf_err(struct super_block *sb, const char *function, in _udf_err() argument
2266 pr_err("error (device %s): %s: %pV", sb->s_id, function, &vaf); in _udf_err()
2271 void _udf_warn(struct super_block *sb, const char *function, in _udf_warn() argument
2282 pr_warn("warning (device %s): %s: %pV", sb->s_id, function, &vaf); in _udf_warn()
2287 static void udf_put_super(struct super_block *sb) in udf_put_super() argument
2291 sbi = UDF_SB(sb); in udf_put_super()
2295 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) in udf_put_super()
2298 if (!(sb->s_flags & MS_RDONLY)) in udf_put_super()
2299 udf_close_lvid(sb); in udf_put_super()
2301 udf_sb_free_partitions(sb); in udf_put_super()
2303 kfree(sb->s_fs_info); in udf_put_super()
2304 sb->s_fs_info = NULL; in udf_put_super()
2307 static int udf_sync_fs(struct super_block *sb, int wait) in udf_sync_fs() argument
2309 struct udf_sb_info *sbi = UDF_SB(sb); in udf_sync_fs()
2327 struct super_block *sb = dentry->d_sb; in udf_statfs() local
2328 struct udf_sb_info *sbi = UDF_SB(sb); in udf_statfs()
2330 u64 id = huge_encode_dev(sb->s_bdev->bd_dev); in udf_statfs()
2332 lvidiu = udf_sb_lvidiu(sb); in udf_statfs()
2334 buf->f_bsize = sb->s_blocksize; in udf_statfs()
2336 buf->f_bfree = udf_count_free(sb); in udf_statfs()
2349 static unsigned int udf_count_free_bitmap(struct super_block *sb, in udf_count_free_bitmap() argument
2363 loc.partitionReferenceNum = UDF_SB(sb)->s_partition; in udf_count_free_bitmap()
2364 bh = udf_read_ptagged(sb, &loc, 0, &ident); in udf_count_free_bitmap()
2367 udf_err(sb, "udf_count_free failed\n"); in udf_count_free_bitmap()
2371 udf_err(sb, "udf_count_free failed\n"); in udf_count_free_bitmap()
2381 u32 cur_bytes = min_t(u32, bytes, sb->s_blocksize - index); in udf_count_free_bitmap()
2387 newblock = udf_get_lb_pblock(sb, &loc, ++block); in udf_count_free_bitmap()
2388 bh = udf_tread(sb, newblock); in udf_count_free_bitmap()
2402 static unsigned int udf_count_free_table(struct super_block *sb, in udf_count_free_table() argument
2411 mutex_lock(&UDF_SB(sb)->s_alloc_mutex); in udf_count_free_table()
2420 mutex_unlock(&UDF_SB(sb)->s_alloc_mutex); in udf_count_free_table()
2425 static unsigned int udf_count_free(struct super_block *sb) in udf_count_free() argument
2431 sbi = UDF_SB(sb); in udf_count_free()
2449 accum += udf_count_free_bitmap(sb, in udf_count_free()
2453 accum += udf_count_free_bitmap(sb, in udf_count_free()
2460 accum += udf_count_free_table(sb, in udf_count_free()
2464 accum += udf_count_free_table(sb, in udf_count_free()