diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2007-10-18 18:13:59 -0400 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2008-01-25 17:45:54 -0500 |
commit | f1f540688eae66c274ff1c1133b5d9c687b28f58 (patch) | |
tree | 0abf61ad3e15b1c87d5958aae7b02d852672c159 /fs/ocfs2/dlmglue.c | |
parent | 34d024f84345807bf44163fac84e921513dde323 (diff) |
ocfs2: Add data downconvert worker to inode lock
In order to extend inode lock coverage to inode data, we use the same data
downconvert worker with only a small modification to only do work for
regular files.
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/dlmglue.c')
-rw-r--r-- | fs/ocfs2/dlmglue.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index b3068ade3f7b..7e36abea8f40 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c | |||
@@ -228,6 +228,7 @@ static struct ocfs2_lock_res_ops ocfs2_inode_meta_lops = { | |||
228 | .get_osb = ocfs2_get_inode_osb, | 228 | .get_osb = ocfs2_get_inode_osb, |
229 | .check_downconvert = ocfs2_check_meta_downconvert, | 229 | .check_downconvert = ocfs2_check_meta_downconvert, |
230 | .set_lvb = ocfs2_set_meta_lvb, | 230 | .set_lvb = ocfs2_set_meta_lvb, |
231 | .downconvert_worker = ocfs2_data_convert_worker, | ||
231 | .flags = LOCK_TYPE_REQUIRES_REFRESH|LOCK_TYPE_USES_LVB, | 232 | .flags = LOCK_TYPE_REQUIRES_REFRESH|LOCK_TYPE_USES_LVB, |
232 | }; | 233 | }; |
233 | 234 | ||
@@ -2851,6 +2852,9 @@ static int ocfs2_data_convert_worker(struct ocfs2_lock_res *lockres, | |||
2851 | inode = ocfs2_lock_res_inode(lockres); | 2852 | inode = ocfs2_lock_res_inode(lockres); |
2852 | mapping = inode->i_mapping; | 2853 | mapping = inode->i_mapping; |
2853 | 2854 | ||
2855 | if (S_ISREG(inode->i_mode)) | ||
2856 | goto out; | ||
2857 | |||
2854 | /* | 2858 | /* |
2855 | * We need this before the filemap_fdatawrite() so that it can | 2859 | * We need this before the filemap_fdatawrite() so that it can |
2856 | * transfer the dirty bit from the PTE to the | 2860 | * transfer the dirty bit from the PTE to the |
@@ -2876,6 +2880,7 @@ static int ocfs2_data_convert_worker(struct ocfs2_lock_res *lockres, | |||
2876 | filemap_fdatawait(mapping); | 2880 | filemap_fdatawait(mapping); |
2877 | } | 2881 | } |
2878 | 2882 | ||
2883 | out: | ||
2879 | return UNBLOCK_CONTINUE; | 2884 | return UNBLOCK_CONTINUE; |
2880 | } | 2885 | } |
2881 | 2886 | ||