Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs

Pull UDF, ext3 & reiserfs fixes from Jan Kara:
"A couple of fixes (udf, reiserfs, ext3) that accumulated over my
vacation."

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
udf: fix retun value on error path in udf_load_logicalvol
jbd: don't write superblock when unmounting an ro filesystem
reiserfs: fix deadlocks with quotas
quota: Move down dqptr_sem read after initializing default warn[] type at __dquot_alloc_space().
UDF: During mount free lvid_bh before rescanning with different blocksize
udf: fix udf_setsize() for file data in ICB

+17 -6
+5
fs/jbd/journal.c
··· 1113 1113 1114 1114 BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); 1115 1115 spin_lock(&journal->j_state_lock); 1116 + /* Is it already empty? */ 1117 + if (sb->s_start == 0) { 1118 + spin_unlock(&journal->j_state_lock); 1119 + return; 1120 + } 1116 1121 jbd_debug(1, "JBD: Marking journal as empty (seq %d)\n", 1117 1122 journal->j_tail_sequence); 1118 1123
+1 -1
fs/quota/dquot.c
··· 1589 1589 goto out; 1590 1590 } 1591 1591 1592 - down_read(&sb_dqopt(inode->i_sb)->dqptr_sem); 1593 1592 for (cnt = 0; cnt < MAXQUOTAS; cnt++) 1594 1593 warn[cnt].w_type = QUOTA_NL_NOWARN; 1595 1594 1595 + down_read(&sb_dqopt(inode->i_sb)->dqptr_sem); 1596 1596 spin_lock(&dq_data_lock); 1597 1597 for (cnt = 0; cnt < MAXQUOTAS; cnt++) { 1598 1598 if (!dquots[cnt])
-2
fs/reiserfs/bitmap.c
··· 1334 1334 else if (bitmap == 0) 1335 1335 block = (REISERFS_DISK_OFFSET_IN_BYTES >> sb->s_blocksize_bits) + 1; 1336 1336 1337 - reiserfs_write_unlock(sb); 1338 1337 bh = sb_bread(sb, block); 1339 - reiserfs_write_lock(sb); 1340 1338 if (bh == NULL) 1341 1339 reiserfs_warning(sb, "sh-2029: %s: bitmap block (#%u) " 1342 1340 "reading failed", __func__, block);
+1 -1
fs/reiserfs/inode.c
··· 76 76 ; 77 77 } 78 78 out: 79 + reiserfs_write_unlock_once(inode->i_sb, depth); 79 80 clear_inode(inode); /* note this must go after the journal_end to prevent deadlock */ 80 81 dquot_drop(inode); 81 82 inode->i_blocks = 0; 82 - reiserfs_write_unlock_once(inode->i_sb, depth); 83 83 return; 84 84 85 85 no_delete:
+4 -1
fs/udf/inode.c
··· 1124 1124 if (err) 1125 1125 return err; 1126 1126 down_write(&iinfo->i_data_sem); 1127 - } else 1127 + } else { 1128 1128 iinfo->i_lenAlloc = newsize; 1129 + goto set_size; 1130 + } 1129 1131 } 1130 1132 err = udf_extend_file(inode, newsize); 1131 1133 if (err) { 1132 1134 up_write(&iinfo->i_data_sem); 1133 1135 return err; 1134 1136 } 1137 + set_size: 1135 1138 truncate_setsize(inode, newsize); 1136 1139 up_write(&iinfo->i_data_sem); 1137 1140 } else {
+6 -1
fs/udf/super.c
··· 1344 1344 udf_err(sb, "error loading logical volume descriptor: " 1345 1345 "Partition table too long (%u > %lu)\n", table_len, 1346 1346 sb->s_blocksize - sizeof(*lvd)); 1347 + ret = 1; 1347 1348 goto out_bh; 1348 1349 } 1349 1350 ··· 1389 1388 UDF_ID_SPARABLE, 1390 1389 strlen(UDF_ID_SPARABLE))) { 1391 1390 if (udf_load_sparable_map(sb, map, 1392 - (struct sparablePartitionMap *)gpm) < 0) 1391 + (struct sparablePartitionMap *)gpm) < 0) { 1392 + ret = 1; 1393 1393 goto out_bh; 1394 + } 1394 1395 } else if (!strncmp(upm2->partIdent.ident, 1395 1396 UDF_ID_METADATA, 1396 1397 strlen(UDF_ID_METADATA))) { ··· 2003 2000 if (!silent) 2004 2001 pr_notice("Rescanning with blocksize %d\n", 2005 2002 UDF_DEFAULT_BLOCKSIZE); 2003 + brelse(sbi->s_lvid_bh); 2004 + sbi->s_lvid_bh = NULL; 2006 2005 uopt.blocksize = UDF_DEFAULT_BLOCKSIZE; 2007 2006 ret = udf_load_vrs(sb, &uopt, silent, &fileset); 2008 2007 }