aboutsummaryrefslogtreecommitdiffstats
path: root/fs/udf
diff options
context:
space:
mode:
Diffstat (limited to 'fs/udf')
-rw-r--r--fs/udf/file.c35
-rw-r--r--fs/udf/inode.c9
-rw-r--r--fs/udf/namei.c5
-rw-r--r--fs/udf/super.c137
-rw-r--r--fs/udf/truncate.c4
-rw-r--r--fs/udf/udfdecl.h1
6 files changed, 109 insertions, 82 deletions
diff --git a/fs/udf/file.c b/fs/udf/file.c
index 7f3f7ba3df6..d1c6093fd3d 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -39,20 +39,24 @@
39#include "udf_i.h" 39#include "udf_i.h"
40#include "udf_sb.h" 40#include "udf_sb.h"
41 41
42static int udf_adinicb_readpage(struct file *file, struct page *page) 42static void __udf_adinicb_readpage(struct page *page)
43{ 43{
44 struct inode *inode = page->mapping->host; 44 struct inode *inode = page->mapping->host;
45 char *kaddr; 45 char *kaddr;
46 struct udf_inode_info *iinfo = UDF_I(inode); 46 struct udf_inode_info *iinfo = UDF_I(inode);
47 47
48 BUG_ON(!PageLocked(page));
49
50 kaddr = kmap(page); 48 kaddr = kmap(page);
51 memset(kaddr, 0, PAGE_CACHE_SIZE);
52 memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, inode->i_size); 49 memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, inode->i_size);
50 memset(kaddr + inode->i_size, 0, PAGE_CACHE_SIZE - inode->i_size);
53 flush_dcache_page(page); 51 flush_dcache_page(page);
54 SetPageUptodate(page); 52 SetPageUptodate(page);
55 kunmap(page); 53 kunmap(page);
54}
55
56static int udf_adinicb_readpage(struct file *file, struct page *page)
57{
58 BUG_ON(!PageLocked(page));
59 __udf_adinicb_readpage(page);
56 unlock_page(page); 60 unlock_page(page);
57 61
58 return 0; 62 return 0;
@@ -77,6 +81,25 @@ static int udf_adinicb_writepage(struct page *page,
77 return 0; 81 return 0;
78} 82}
79 83
84static int udf_adinicb_write_begin(struct file *file,
85 struct address_space *mapping, loff_t pos,
86 unsigned len, unsigned flags, struct page **pagep,
87 void **fsdata)
88{
89 struct page *page;
90
91 if (WARN_ON_ONCE(pos >= PAGE_CACHE_SIZE))
92 return -EIO;
93 page = grab_cache_page_write_begin(mapping, 0, flags);
94 if (!page)
95 return -ENOMEM;
96 *pagep = page;
97
98 if (!PageUptodate(page) && len != PAGE_CACHE_SIZE)
99 __udf_adinicb_readpage(page);
100 return 0;
101}
102
80static int udf_adinicb_write_end(struct file *file, 103static int udf_adinicb_write_end(struct file *file,
81 struct address_space *mapping, 104 struct address_space *mapping,
82 loff_t pos, unsigned len, unsigned copied, 105 loff_t pos, unsigned len, unsigned copied,
@@ -98,8 +121,8 @@ static int udf_adinicb_write_end(struct file *file,
98const struct address_space_operations udf_adinicb_aops = { 121const struct address_space_operations udf_adinicb_aops = {
99 .readpage = udf_adinicb_readpage, 122 .readpage = udf_adinicb_readpage,
100 .writepage = udf_adinicb_writepage, 123 .writepage = udf_adinicb_writepage,
101 .write_begin = simple_write_begin, 124 .write_begin = udf_adinicb_write_begin,
102 .write_end = udf_adinicb_write_end, 125 .write_end = udf_adinicb_write_end,
103}; 126};
104 127
105static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov, 128static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index 873e1bab9c4..aa233469b3c 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1124,14 +1124,17 @@ int udf_setsize(struct inode *inode, loff_t newsize)
1124 if (err) 1124 if (err)
1125 return err; 1125 return err;
1126 down_write(&iinfo->i_data_sem); 1126 down_write(&iinfo->i_data_sem);
1127 } else 1127 } else {
1128 iinfo->i_lenAlloc = newsize; 1128 iinfo->i_lenAlloc = newsize;
1129 goto set_size;
1130 }
1129 } 1131 }
1130 err = udf_extend_file(inode, newsize); 1132 err = udf_extend_file(inode, newsize);
1131 if (err) { 1133 if (err) {
1132 up_write(&iinfo->i_data_sem); 1134 up_write(&iinfo->i_data_sem);
1133 return err; 1135 return err;
1134 } 1136 }
1137set_size:
1135 truncate_setsize(inode, newsize); 1138 truncate_setsize(inode, newsize);
1136 up_write(&iinfo->i_data_sem); 1139 up_write(&iinfo->i_data_sem);
1137 } else { 1140 } else {
@@ -1247,7 +1250,6 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
1247{ 1250{
1248 struct fileEntry *fe; 1251 struct fileEntry *fe;
1249 struct extendedFileEntry *efe; 1252 struct extendedFileEntry *efe;
1250 int offset;
1251 struct udf_sb_info *sbi = UDF_SB(inode->i_sb); 1253 struct udf_sb_info *sbi = UDF_SB(inode->i_sb);
1252 struct udf_inode_info *iinfo = UDF_I(inode); 1254 struct udf_inode_info *iinfo = UDF_I(inode);
1253 unsigned int link_count; 1255 unsigned int link_count;
@@ -1359,7 +1361,6 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
1359 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); 1361 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr);
1360 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs); 1362 iinfo->i_lenAlloc = le32_to_cpu(fe->lengthAllocDescs);
1361 iinfo->i_checkpoint = le32_to_cpu(fe->checkpoint); 1363 iinfo->i_checkpoint = le32_to_cpu(fe->checkpoint);
1362 offset = sizeof(struct fileEntry) + iinfo->i_lenEAttr;
1363 } else { 1364 } else {
1364 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) << 1365 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) <<
1365 (inode->i_sb->s_blocksize_bits - 9); 1366 (inode->i_sb->s_blocksize_bits - 9);
@@ -1381,8 +1382,6 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
1381 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); 1382 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr);
1382 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs); 1383 iinfo->i_lenAlloc = le32_to_cpu(efe->lengthAllocDescs);
1383 iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint); 1384 iinfo->i_checkpoint = le32_to_cpu(efe->checkpoint);
1384 offset = sizeof(struct extendedFileEntry) +
1385 iinfo->i_lenEAttr;
1386 } 1385 }
1387 1386
1388 switch (fe->icbTag.fileType) { 1387 switch (fe->icbTag.fileType) {
diff --git a/fs/udf/namei.c b/fs/udf/namei.c
index 18024178ac4..95fee278ab9 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -251,7 +251,7 @@ out_ok:
251} 251}
252 252
253static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry, 253static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry,
254 struct nameidata *nd) 254 unsigned int flags)
255{ 255{
256 struct inode *inode = NULL; 256 struct inode *inode = NULL;
257 struct fileIdentDesc cfi; 257 struct fileIdentDesc cfi;
@@ -551,7 +551,7 @@ static int udf_delete_entry(struct inode *inode, struct fileIdentDesc *fi,
551} 551}
552 552
553static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode, 553static int udf_create(struct inode *dir, struct dentry *dentry, umode_t mode,
554 struct nameidata *nd) 554 bool excl)
555{ 555{
556 struct udf_fileident_bh fibh; 556 struct udf_fileident_bh fibh;
557 struct inode *inode; 557 struct inode *inode;
@@ -1279,6 +1279,7 @@ static int udf_encode_fh(struct inode *inode, __u32 *fh, int *lenp,
1279 *lenp = 3; 1279 *lenp = 3;
1280 fid->udf.block = location.logicalBlockNum; 1280 fid->udf.block = location.logicalBlockNum;
1281 fid->udf.partref = location.partitionReferenceNum; 1281 fid->udf.partref = location.partitionReferenceNum;
1282 fid->udf.parent_partref = 0;
1282 fid->udf.generation = inode->i_generation; 1283 fid->udf.generation = inode->i_generation;
1283 1284
1284 if (parent) { 1285 if (parent) {
diff --git a/fs/udf/super.c b/fs/udf/super.c
index 8d86a8706c0..18fc038a438 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -252,6 +252,63 @@ static int udf_sb_alloc_partition_maps(struct super_block *sb, u32 count)
252 return 0; 252 return 0;
253} 253}
254 254
255static void udf_sb_free_bitmap(struct udf_bitmap *bitmap)
256{
257 int i;
258 int nr_groups = bitmap->s_nr_groups;
259 int size = sizeof(struct udf_bitmap) + (sizeof(struct buffer_head *) *
260 nr_groups);
261
262 for (i = 0; i < nr_groups; i++)
263 if (bitmap->s_block_bitmap[i])
264 brelse(bitmap->s_block_bitmap[i]);
265
266 if (size <= PAGE_SIZE)
267 kfree(bitmap);
268 else
269 vfree(bitmap);
270}
271
272static void udf_free_partition(struct udf_part_map *map)
273{
274 int i;
275 struct udf_meta_data *mdata;
276
277 if (map->s_partition_flags & UDF_PART_FLAG_UNALLOC_TABLE)
278 iput(map->s_uspace.s_table);
279 if (map->s_partition_flags & UDF_PART_FLAG_FREED_TABLE)
280 iput(map->s_fspace.s_table);
281 if (map->s_partition_flags & UDF_PART_FLAG_UNALLOC_BITMAP)
282 udf_sb_free_bitmap(map->s_uspace.s_bitmap);
283 if (map->s_partition_flags & UDF_PART_FLAG_FREED_BITMAP)
284 udf_sb_free_bitmap(map->s_fspace.s_bitmap);
285 if (map->s_partition_type == UDF_SPARABLE_MAP15)
286 for (i = 0; i < 4; i++)
287 brelse(map->s_type_specific.s_sparing.s_spar_map[i]);
288 else if (map->s_partition_type == UDF_METADATA_MAP25) {
289 mdata = &map->s_type_specific.s_metadata;
290 iput(mdata->s_metadata_fe);
291 mdata->s_metadata_fe = NULL;
292
293 iput(mdata->s_mirror_fe);
294 mdata->s_mirror_fe = NULL;
295
296 iput(mdata->s_bitmap_fe);
297 mdata->s_bitmap_fe = NULL;
298 }
299}
300
301static void udf_sb_free_partitions(struct super_block *sb)
302{
303 struct udf_sb_info *sbi = UDF_SB(sb);
304 int i;
305
306 for (i = 0; i < sbi->s_partitions; i++)
307 udf_free_partition(&sbi->s_partmaps[i]);
308 kfree(sbi->s_partmaps);
309 sbi->s_partmaps = NULL;
310}
311
255static int udf_show_options(struct seq_file *seq, struct dentry *root) 312static int udf_show_options(struct seq_file *seq, struct dentry *root)
256{ 313{
257 struct super_block *sb = root->d_sb; 314 struct super_block *sb = root->d_sb;
@@ -1283,10 +1340,11 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
1283 BUG_ON(ident != TAG_IDENT_LVD); 1340 BUG_ON(ident != TAG_IDENT_LVD);
1284 lvd = (struct logicalVolDesc *)bh->b_data; 1341 lvd = (struct logicalVolDesc *)bh->b_data;
1285 table_len = le32_to_cpu(lvd->mapTableLength); 1342 table_len = le32_to_cpu(lvd->mapTableLength);
1286 if (sizeof(*lvd) + table_len > sb->s_blocksize) { 1343 if (table_len > sb->s_blocksize - sizeof(*lvd)) {
1287 udf_err(sb, "error loading logical volume descriptor: " 1344 udf_err(sb, "error loading logical volume descriptor: "
1288 "Partition table too long (%u > %lu)\n", table_len, 1345 "Partition table too long (%u > %lu)\n", table_len,
1289 sb->s_blocksize - sizeof(*lvd)); 1346 sb->s_blocksize - sizeof(*lvd));
1347 ret = 1;
1290 goto out_bh; 1348 goto out_bh;
1291 } 1349 }
1292 1350
@@ -1331,8 +1389,10 @@ static int udf_load_logicalvol(struct super_block *sb, sector_t block,
1331 UDF_ID_SPARABLE, 1389 UDF_ID_SPARABLE,
1332 strlen(UDF_ID_SPARABLE))) { 1390 strlen(UDF_ID_SPARABLE))) {
1333 if (udf_load_sparable_map(sb, map, 1391 if (udf_load_sparable_map(sb, map,
1334 (struct sparablePartitionMap *)gpm) < 0) 1392 (struct sparablePartitionMap *)gpm) < 0) {
1393 ret = 1;
1335 goto out_bh; 1394 goto out_bh;
1395 }
1336 } else if (!strncmp(upm2->partIdent.ident, 1396 } else if (!strncmp(upm2->partIdent.ident,
1337 UDF_ID_METADATA, 1397 UDF_ID_METADATA,
1338 strlen(UDF_ID_METADATA))) { 1398 strlen(UDF_ID_METADATA))) {
@@ -1596,7 +1656,11 @@ static int udf_load_sequence(struct super_block *sb, struct buffer_head *bh,
1596 /* responsible for finding the PartitionDesc(s) */ 1656 /* responsible for finding the PartitionDesc(s) */
1597 if (!udf_process_sequence(sb, main_s, main_e, fileset)) 1657 if (!udf_process_sequence(sb, main_s, main_e, fileset))
1598 return 1; 1658 return 1;
1599 return !udf_process_sequence(sb, reserve_s, reserve_e, fileset); 1659 udf_sb_free_partitions(sb);
1660 if (!udf_process_sequence(sb, reserve_s, reserve_e, fileset))
1661 return 1;
1662 udf_sb_free_partitions(sb);
1663 return 0;
1600} 1664}
1601 1665
1602/* 1666/*
@@ -1861,55 +1925,8 @@ u64 lvid_get_unique_id(struct super_block *sb)
1861 return ret; 1925 return ret;
1862} 1926}
1863 1927
1864static void udf_sb_free_bitmap(struct udf_bitmap *bitmap)
1865{
1866 int i;
1867 int nr_groups = bitmap->s_nr_groups;
1868 int size = sizeof(struct udf_bitmap) + (sizeof(struct buffer_head *) *
1869 nr_groups);
1870
1871 for (i = 0; i < nr_groups; i++)
1872 if (bitmap->s_block_bitmap[i])
1873 brelse(bitmap->s_block_bitmap[i]);
1874
1875 if (size <= PAGE_SIZE)
1876 kfree(bitmap);
1877 else
1878 vfree(bitmap);
1879}
1880
1881static void udf_free_partition(struct udf_part_map *map)
1882{
1883 int i;
1884 struct udf_meta_data *mdata;
1885
1886 if (map->s_partition_flags & UDF_PART_FLAG_UNALLOC_TABLE)
1887 iput(map->s_uspace.s_table);
1888 if (map->s_partition_flags & UDF_PART_FLAG_FREED_TABLE)
1889 iput(map->s_fspace.s_table);
1890 if (map->s_partition_flags & UDF_PART_FLAG_UNALLOC_BITMAP)
1891 udf_sb_free_bitmap(map->s_uspace.s_bitmap);
1892 if (map->s_partition_flags & UDF_PART_FLAG_FREED_BITMAP)
1893 udf_sb_free_bitmap(map->s_fspace.s_bitmap);
1894 if (map->s_partition_type == UDF_SPARABLE_MAP15)
1895 for (i = 0; i < 4; i++)
1896 brelse(map->s_type_specific.s_sparing.s_spar_map[i]);
1897 else if (map->s_partition_type == UDF_METADATA_MAP25) {
1898 mdata = &map->s_type_specific.s_metadata;
1899 iput(mdata->s_metadata_fe);
1900 mdata->s_metadata_fe = NULL;
1901
1902 iput(mdata->s_mirror_fe);
1903 mdata->s_mirror_fe = NULL;
1904
1905 iput(mdata->s_bitmap_fe);
1906 mdata->s_bitmap_fe = NULL;
1907 }
1908}
1909
1910static int udf_fill_super(struct super_block *sb, void *options, int silent) 1928static int udf_fill_super(struct super_block *sb, void *options, int silent)
1911{ 1929{
1912 int i;
1913 int ret; 1930 int ret;
1914 struct inode *inode = NULL; 1931 struct inode *inode = NULL;
1915 struct udf_options uopt; 1932 struct udf_options uopt;
@@ -1974,7 +1991,6 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
1974 sb->s_op = &udf_sb_ops; 1991 sb->s_op = &udf_sb_ops;
1975 sb->s_export_op = &udf_export_ops; 1992 sb->s_export_op = &udf_export_ops;
1976 1993
1977 sb->s_dirt = 0;
1978 sb->s_magic = UDF_SUPER_MAGIC; 1994 sb->s_magic = UDF_SUPER_MAGIC;
1979 sb->s_time_gran = 1000; 1995 sb->s_time_gran = 1000;
1980 1996
@@ -1987,6 +2003,8 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
1987 if (!silent) 2003 if (!silent)
1988 pr_notice("Rescanning with blocksize %d\n", 2004 pr_notice("Rescanning with blocksize %d\n",
1989 UDF_DEFAULT_BLOCKSIZE); 2005 UDF_DEFAULT_BLOCKSIZE);
2006 brelse(sbi->s_lvid_bh);
2007 sbi->s_lvid_bh = NULL;
1990 uopt.blocksize = UDF_DEFAULT_BLOCKSIZE; 2008 uopt.blocksize = UDF_DEFAULT_BLOCKSIZE;
1991 ret = udf_load_vrs(sb, &uopt, silent, &fileset); 2009 ret = udf_load_vrs(sb, &uopt, silent, &fileset);
1992 } 2010 }
@@ -2072,9 +2090,6 @@ static int udf_fill_super(struct super_block *sb, void *options, int silent)
2072error_out: 2090error_out:
2073 if (sbi->s_vat_inode) 2091 if (sbi->s_vat_inode)
2074 iput(sbi->s_vat_inode); 2092 iput(sbi->s_vat_inode);
2075 if (sbi->s_partitions)
2076 for (i = 0; i < sbi->s_partitions; i++)
2077 udf_free_partition(&sbi->s_partmaps[i]);
2078#ifdef CONFIG_UDF_NLS 2093#ifdef CONFIG_UDF_NLS
2079 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) 2094 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP))
2080 unload_nls(sbi->s_nls_map); 2095 unload_nls(sbi->s_nls_map);
@@ -2082,8 +2097,7 @@ error_out:
2082 if (!(sb->s_flags & MS_RDONLY)) 2097 if (!(sb->s_flags & MS_RDONLY))
2083 udf_close_lvid(sb); 2098 udf_close_lvid(sb);
2084 brelse(sbi->s_lvid_bh); 2099 brelse(sbi->s_lvid_bh);
2085 2100 udf_sb_free_partitions(sb);
2086 kfree(sbi->s_partmaps);
2087 kfree(sbi); 2101 kfree(sbi);
2088 sb->s_fs_info = NULL; 2102 sb->s_fs_info = NULL;
2089 2103
@@ -2096,10 +2110,6 @@ void _udf_err(struct super_block *sb, const char *function,
2096 struct va_format vaf; 2110 struct va_format vaf;
2097 va_list args; 2111 va_list args;
2098 2112
2099 /* mark sb error */
2100 if (!(sb->s_flags & MS_RDONLY))
2101 sb->s_dirt = 1;
2102
2103 va_start(args, fmt); 2113 va_start(args, fmt);
2104 2114
2105 vaf.fmt = fmt; 2115 vaf.fmt = fmt;
@@ -2128,16 +2138,12 @@ void _udf_warn(struct super_block *sb, const char *function,
2128 2138
2129static void udf_put_super(struct super_block *sb) 2139static void udf_put_super(struct super_block *sb)
2130{ 2140{
2131 int i;
2132 struct udf_sb_info *sbi; 2141 struct udf_sb_info *sbi;
2133 2142
2134 sbi = UDF_SB(sb); 2143 sbi = UDF_SB(sb);
2135 2144
2136 if (sbi->s_vat_inode) 2145 if (sbi->s_vat_inode)
2137 iput(sbi->s_vat_inode); 2146 iput(sbi->s_vat_inode);
2138 if (sbi->s_partitions)
2139 for (i = 0; i < sbi->s_partitions; i++)
2140 udf_free_partition(&sbi->s_partmaps[i]);
2141#ifdef CONFIG_UDF_NLS 2147#ifdef CONFIG_UDF_NLS
2142 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) 2148 if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP))
2143 unload_nls(sbi->s_nls_map); 2149 unload_nls(sbi->s_nls_map);
@@ -2145,7 +2151,7 @@ static void udf_put_super(struct super_block *sb)
2145 if (!(sb->s_flags & MS_RDONLY)) 2151 if (!(sb->s_flags & MS_RDONLY))
2146 udf_close_lvid(sb); 2152 udf_close_lvid(sb);
2147 brelse(sbi->s_lvid_bh); 2153 brelse(sbi->s_lvid_bh);
2148 kfree(sbi->s_partmaps); 2154 udf_sb_free_partitions(sb);
2149 kfree(sb->s_fs_info); 2155 kfree(sb->s_fs_info);
2150 sb->s_fs_info = NULL; 2156 sb->s_fs_info = NULL;
2151} 2157}
@@ -2161,7 +2167,6 @@ static int udf_sync_fs(struct super_block *sb, int wait)
2161 * the buffer for IO 2167 * the buffer for IO
2162 */ 2168 */
2163 mark_buffer_dirty(sbi->s_lvid_bh); 2169 mark_buffer_dirty(sbi->s_lvid_bh);
2164 sb->s_dirt = 0;
2165 sbi->s_lvid_dirty = 0; 2170 sbi->s_lvid_dirty = 0;
2166 } 2171 }
2167 mutex_unlock(&sbi->s_alloc_mutex); 2172 mutex_unlock(&sbi->s_alloc_mutex);
diff --git a/fs/udf/truncate.c b/fs/udf/truncate.c
index 4b98fee8e16..8a9657d7f7c 100644
--- a/fs/udf/truncate.c
+++ b/fs/udf/truncate.c
@@ -248,7 +248,7 @@ void udf_truncate_extents(struct inode *inode)
248 /* We managed to free all extents in the 248 /* We managed to free all extents in the
249 * indirect extent - free it too */ 249 * indirect extent - free it too */
250 BUG_ON(!epos.bh); 250 BUG_ON(!epos.bh);
251 udf_free_blocks(sb, inode, &epos.block, 251 udf_free_blocks(sb, NULL, &epos.block,
252 0, indirect_ext_len); 252 0, indirect_ext_len);
253 } else if (!epos.bh) { 253 } else if (!epos.bh) {
254 iinfo->i_lenAlloc = lenalloc; 254 iinfo->i_lenAlloc = lenalloc;
@@ -275,7 +275,7 @@ void udf_truncate_extents(struct inode *inode)
275 275
276 if (indirect_ext_len) { 276 if (indirect_ext_len) {
277 BUG_ON(!epos.bh); 277 BUG_ON(!epos.bh);
278 udf_free_blocks(sb, inode, &epos.block, 0, indirect_ext_len); 278 udf_free_blocks(sb, NULL, &epos.block, 0, indirect_ext_len);
279 } else if (!epos.bh) { 279 } else if (!epos.bh) {
280 iinfo->i_lenAlloc = lenalloc; 280 iinfo->i_lenAlloc = lenalloc;
281 mark_inode_dirty(inode); 281 mark_inode_dirty(inode);
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
index ebe10314e51..de038da6f6b 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
@@ -129,7 +129,6 @@ static inline void udf_updated_lvid(struct super_block *sb)
129 WARN_ON_ONCE(((struct logicalVolIntegrityDesc *) 129 WARN_ON_ONCE(((struct logicalVolIntegrityDesc *)
130 bh->b_data)->integrityType != 130 bh->b_data)->integrityType !=
131 cpu_to_le32(LVID_INTEGRITY_TYPE_OPEN)); 131 cpu_to_le32(LVID_INTEGRITY_TYPE_OPEN));
132 sb->s_dirt = 1;
133 UDF_SB(sb)->s_lvid_dirty = 1; 132 UDF_SB(sb)->s_lvid_dirty = 1;
134} 133}
135extern u64 lvid_get_unique_id(struct super_block *sb); 134extern u64 lvid_get_unique_id(struct super_block *sb);