|
@@ -3052,13 +3052,14 @@ static ssize_t reiserfs_direct_IO(int rw, struct kiocb *iocb,
|
|
|
int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
|
|
|
{
|
|
|
struct inode *inode = dentry->d_inode;
|
|
|
- int error;
|
|
|
unsigned int ia_valid;
|
|
|
+ int depth;
|
|
|
+ int error;
|
|
|
|
|
|
/* must be turned off for recursive notify_change calls */
|
|
|
ia_valid = attr->ia_valid &= ~(ATTR_KILL_SUID|ATTR_KILL_SGID);
|
|
|
|
|
|
- reiserfs_write_lock(inode->i_sb);
|
|
|
+ depth = reiserfs_write_lock_once(inode->i_sb);
|
|
|
if (attr->ia_valid & ATTR_SIZE) {
|
|
|
/* version 2 items will be caught by the s_maxbytes check
|
|
|
** done for us in vmtruncate
|
|
@@ -3149,7 +3150,8 @@ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
|
|
|
}
|
|
|
|
|
|
out:
|
|
|
- reiserfs_write_unlock(inode->i_sb);
|
|
|
+ reiserfs_write_unlock_once(inode->i_sb, depth);
|
|
|
+
|
|
|
return error;
|
|
|
}
|
|
|
|