reiserfs: Move quota calls out of write lock
Calls into highlevel quota code cannot happen under the write lock. These calls take dqio_mutex which ranks above write lock. So drop write lock before calling back into quota code. CC: stable@vger.kernel.org # >= 3.0 Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -1968,7 +1968,9 @@ int reiserfs_paste_into_item(struct reiserfs_transaction_handle *th, struct tree
|
||||
key2type(&(key->on_disk_key)));
|
||||
#endif
|
||||
|
||||
reiserfs_write_unlock(inode->i_sb);
|
||||
retval = dquot_alloc_space_nodirty(inode, pasted_size);
|
||||
reiserfs_write_lock(inode->i_sb);
|
||||
if (retval) {
|
||||
pathrelse(search_path);
|
||||
return retval;
|
||||
@@ -2061,9 +2063,11 @@ int reiserfs_insert_item(struct reiserfs_transaction_handle *th,
|
||||
"reiserquota insert_item(): allocating %u id=%u type=%c",
|
||||
quota_bytes, inode->i_uid, head2type(ih));
|
||||
#endif
|
||||
reiserfs_write_unlock(inode->i_sb);
|
||||
/* We can't dirty inode here. It would be immediately written but
|
||||
* appropriate stat item isn't inserted yet... */
|
||||
retval = dquot_alloc_space_nodirty(inode, quota_bytes);
|
||||
reiserfs_write_lock(inode->i_sb);
|
||||
if (retval) {
|
||||
pathrelse(path);
|
||||
return retval;
|
||||
|
||||
Reference in New Issue
Block a user