| To: | xfs@xxxxxxxxxxx |
|---|---|
| Subject: | [PATCH 6/7] xfs: use xfs_ilock_map_shared in xfs_attr_list_int |
| From: | Christoph Hellwig <hch@xxxxxxxxxxxxx> |
| Date: | Fri, 06 Dec 2013 08:48:25 -0800 |
| Delivered-to: | xfs@xxxxxxxxxxx |
| References: | <20131206164819.371654241@xxxxxxxxxxxxxxxxxxxxxx> |
| User-agent: | quilt/0.60-1 |
We might not have read in the extent list at this point, so make sure we
take the ilock exclusively if we have to do so.
Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Index: xfs/fs/xfs/xfs_attr_list.c
===================================================================
--- xfs.orig/fs/xfs/xfs_attr_list.c 2013-11-18 14:39:01.947589999 +0100
+++ xfs/fs/xfs/xfs_attr_list.c 2013-12-05 22:25:47.207821971 +0100
@@ -507,17 +507,17 @@ xfs_attr_list_int(
{
int error;
xfs_inode_t *dp = context->dp;
+ uint lock_mode;
XFS_STATS_INC(xs_attr_list);
if (XFS_FORCED_SHUTDOWN(dp->i_mount))
return EIO;
- xfs_ilock(dp, XFS_ILOCK_SHARED);
-
/*
* Decide on what work routines to call based on the inode size.
*/
+ lock_mode = xfs_ilock_map_shared(dp);
if (!xfs_inode_hasattr(dp)) {
error = 0;
} else if (dp->i_d.di_aformat == XFS_DINODE_FMT_LOCAL) {
@@ -527,9 +527,7 @@ xfs_attr_list_int(
} else {
error = xfs_attr_node_list(context);
}
-
- xfs_iunlock(dp, XFS_ILOCK_SHARED);
-
+ xfs_iunlock_map_shared(dp, lock_mode);
return error;
}
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 4/7] xfs: use xfs_ilock_map_shared in xfs_qm_dqiterate, Christoph Hellwig |
|---|---|
| Next by Date: | [PATCH 2/7] xfs: take the ilock around xfs_bmapi_read in xfs_zero_remaining_bytes, Christoph Hellwig |
| Previous by Thread: | [PATCH 4/7] xfs: use xfs_ilock_map_shared in xfs_qm_dqiterate, Christoph Hellwig |
| Next by Thread: | [PATCH 2/7] xfs: take the ilock around xfs_bmapi_read in xfs_zero_remaining_bytes, Christoph Hellwig |
| Indexes: | [Date] [Thread] [Top] [All Lists] |