[XFS] Cleanup references to i_sem.
SGI-PV: 904196 SGI-Modid: xfs-linux-melb:xfs-kern:25480a Signed-off-by: Nathan Scott <nathans@sgi.com>
This commit is contained in:
parent
b12dd34298
commit
a13828b167
|
@ -249,9 +249,8 @@ xfs_read(
|
||||||
if (n < size)
|
if (n < size)
|
||||||
size = n;
|
size = n;
|
||||||
|
|
||||||
if (XFS_FORCED_SHUTDOWN(mp)) {
|
if (XFS_FORCED_SHUTDOWN(mp))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
|
||||||
|
|
||||||
if (unlikely(ioflags & IO_ISDIRECT))
|
if (unlikely(ioflags & IO_ISDIRECT))
|
||||||
mutex_lock(&inode->i_mutex);
|
mutex_lock(&inode->i_mutex);
|
||||||
|
@ -267,7 +266,7 @@ xfs_read(
|
||||||
dmflags, &locktype);
|
dmflags, &locktype);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
|
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
|
||||||
goto unlock_isem;
|
goto unlock_mutex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +280,7 @@ xfs_read(
|
||||||
|
|
||||||
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
|
xfs_iunlock(ip, XFS_IOLOCK_SHARED);
|
||||||
|
|
||||||
unlock_isem:
|
unlock_mutex:
|
||||||
if (unlikely(ioflags & IO_ISDIRECT))
|
if (unlikely(ioflags & IO_ISDIRECT))
|
||||||
mutex_unlock(&inode->i_mutex);
|
mutex_unlock(&inode->i_mutex);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -573,7 +572,7 @@ xfs_write(
|
||||||
vrwlock_t locktype;
|
vrwlock_t locktype;
|
||||||
size_t ocount = 0, count;
|
size_t ocount = 0, count;
|
||||||
loff_t pos;
|
loff_t pos;
|
||||||
int need_isem = 1, need_flush = 0;
|
int need_i_mutex = 1, need_flush = 0;
|
||||||
|
|
||||||
XFS_STATS_INC(xs_write_calls);
|
XFS_STATS_INC(xs_write_calls);
|
||||||
|
|
||||||
|
@ -622,14 +621,14 @@ xfs_write(
|
||||||
return XFS_ERROR(-EINVAL);
|
return XFS_ERROR(-EINVAL);
|
||||||
|
|
||||||
if (!VN_CACHED(vp) && pos < i_size_read(inode))
|
if (!VN_CACHED(vp) && pos < i_size_read(inode))
|
||||||
need_isem = 0;
|
need_i_mutex = 0;
|
||||||
|
|
||||||
if (VN_CACHED(vp))
|
if (VN_CACHED(vp))
|
||||||
need_flush = 1;
|
need_flush = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
relock:
|
relock:
|
||||||
if (need_isem) {
|
if (need_i_mutex) {
|
||||||
iolock = XFS_IOLOCK_EXCL;
|
iolock = XFS_IOLOCK_EXCL;
|
||||||
locktype = VRWLOCK_WRITE;
|
locktype = VRWLOCK_WRITE;
|
||||||
|
|
||||||
|
@ -651,7 +650,7 @@ start:
|
||||||
S_ISBLK(inode->i_mode));
|
S_ISBLK(inode->i_mode));
|
||||||
if (error) {
|
if (error) {
|
||||||
xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock);
|
xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock);
|
||||||
goto out_unlock_isem;
|
goto out_unlock_mutex;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_size = pos + count;
|
new_size = pos + count;
|
||||||
|
@ -663,7 +662,7 @@ start:
|
||||||
loff_t savedsize = pos;
|
loff_t savedsize = pos;
|
||||||
int dmflags = FILP_DELAY_FLAG(file);
|
int dmflags = FILP_DELAY_FLAG(file);
|
||||||
|
|
||||||
if (need_isem)
|
if (need_i_mutex)
|
||||||
dmflags |= DM_FLAGS_IMUX;
|
dmflags |= DM_FLAGS_IMUX;
|
||||||
|
|
||||||
xfs_iunlock(xip, XFS_ILOCK_EXCL);
|
xfs_iunlock(xip, XFS_ILOCK_EXCL);
|
||||||
|
@ -672,7 +671,7 @@ start:
|
||||||
dmflags, &locktype);
|
dmflags, &locktype);
|
||||||
if (error) {
|
if (error) {
|
||||||
xfs_iunlock(xip, iolock);
|
xfs_iunlock(xip, iolock);
|
||||||
goto out_unlock_isem;
|
goto out_unlock_mutex;
|
||||||
}
|
}
|
||||||
xfs_ilock(xip, XFS_ILOCK_EXCL);
|
xfs_ilock(xip, XFS_ILOCK_EXCL);
|
||||||
eventsent = 1;
|
eventsent = 1;
|
||||||
|
@ -710,7 +709,7 @@ start:
|
||||||
isize, pos + count);
|
isize, pos + count);
|
||||||
if (error) {
|
if (error) {
|
||||||
xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock);
|
xfs_iunlock(xip, XFS_ILOCK_EXCL|iolock);
|
||||||
goto out_unlock_isem;
|
goto out_unlock_mutex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xfs_iunlock(xip, XFS_ILOCK_EXCL);
|
xfs_iunlock(xip, XFS_ILOCK_EXCL);
|
||||||
|
@ -731,7 +730,7 @@ start:
|
||||||
error = -remove_suid(file->f_dentry);
|
error = -remove_suid(file->f_dentry);
|
||||||
if (unlikely(error)) {
|
if (unlikely(error)) {
|
||||||
xfs_iunlock(xip, iolock);
|
xfs_iunlock(xip, iolock);
|
||||||
goto out_unlock_isem;
|
goto out_unlock_mutex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -747,14 +746,14 @@ retry:
|
||||||
-1, FI_REMAPF_LOCKED);
|
-1, FI_REMAPF_LOCKED);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (need_isem) {
|
if (need_i_mutex) {
|
||||||
/* demote the lock now the cached pages are gone */
|
/* demote the lock now the cached pages are gone */
|
||||||
XFS_ILOCK_DEMOTE(mp, io, XFS_IOLOCK_EXCL);
|
XFS_ILOCK_DEMOTE(mp, io, XFS_IOLOCK_EXCL);
|
||||||
mutex_unlock(&inode->i_mutex);
|
mutex_unlock(&inode->i_mutex);
|
||||||
|
|
||||||
iolock = XFS_IOLOCK_SHARED;
|
iolock = XFS_IOLOCK_SHARED;
|
||||||
locktype = VRWLOCK_WRITE_DIRECT;
|
locktype = VRWLOCK_WRITE_DIRECT;
|
||||||
need_isem = 0;
|
need_i_mutex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
xfs_rw_enter_trace(XFS_DIOWR_ENTER, io, (void *)iovp, segs,
|
xfs_rw_enter_trace(XFS_DIOWR_ENTER, io, (void *)iovp, segs,
|
||||||
|
@ -772,7 +771,7 @@ retry:
|
||||||
pos += ret;
|
pos += ret;
|
||||||
count -= ret;
|
count -= ret;
|
||||||
|
|
||||||
need_isem = 1;
|
need_i_mutex = 1;
|
||||||
ioflags &= ~IO_ISDIRECT;
|
ioflags &= ~IO_ISDIRECT;
|
||||||
xfs_iunlock(xip, iolock);
|
xfs_iunlock(xip, iolock);
|
||||||
goto relock;
|
goto relock;
|
||||||
|
@ -794,14 +793,14 @@ retry:
|
||||||
!(ioflags & IO_INVIS)) {
|
!(ioflags & IO_INVIS)) {
|
||||||
|
|
||||||
xfs_rwunlock(bdp, locktype);
|
xfs_rwunlock(bdp, locktype);
|
||||||
if (need_isem)
|
if (need_i_mutex)
|
||||||
mutex_unlock(&inode->i_mutex);
|
mutex_unlock(&inode->i_mutex);
|
||||||
error = XFS_SEND_NAMESP(xip->i_mount, DM_EVENT_NOSPACE, vp,
|
error = XFS_SEND_NAMESP(xip->i_mount, DM_EVENT_NOSPACE, vp,
|
||||||
DM_RIGHT_NULL, vp, DM_RIGHT_NULL, NULL, NULL,
|
DM_RIGHT_NULL, vp, DM_RIGHT_NULL, NULL, NULL,
|
||||||
0, 0, 0); /* Delay flag intentionally unused */
|
0, 0, 0); /* Delay flag intentionally unused */
|
||||||
if (error)
|
if (error)
|
||||||
goto out_nounlocks;
|
goto out_nounlocks;
|
||||||
if (need_isem)
|
if (need_i_mutex)
|
||||||
mutex_lock(&inode->i_mutex);
|
mutex_lock(&inode->i_mutex);
|
||||||
xfs_rwlock(bdp, locktype);
|
xfs_rwlock(bdp, locktype);
|
||||||
pos = xip->i_d.di_size;
|
pos = xip->i_d.di_size;
|
||||||
|
@ -907,7 +906,7 @@ retry:
|
||||||
}
|
}
|
||||||
|
|
||||||
xfs_rwunlock(bdp, locktype);
|
xfs_rwunlock(bdp, locktype);
|
||||||
if (need_isem)
|
if (need_i_mutex)
|
||||||
mutex_unlock(&inode->i_mutex);
|
mutex_unlock(&inode->i_mutex);
|
||||||
|
|
||||||
error = sync_page_range(inode, mapping, pos, ret);
|
error = sync_page_range(inode, mapping, pos, ret);
|
||||||
|
@ -918,8 +917,8 @@ retry:
|
||||||
|
|
||||||
out_unlock_internal:
|
out_unlock_internal:
|
||||||
xfs_rwunlock(bdp, locktype);
|
xfs_rwunlock(bdp, locktype);
|
||||||
out_unlock_isem:
|
out_unlock_mutex:
|
||||||
if (need_isem)
|
if (need_i_mutex)
|
||||||
mutex_unlock(&inode->i_mutex);
|
mutex_unlock(&inode->i_mutex);
|
||||||
out_nounlocks:
|
out_nounlocks:
|
||||||
return -error;
|
return -error;
|
||||||
|
|
Loading…
Reference in New Issue