diff options
author | Emoly Liu <emoly.liu@intel.com> | 2013-06-03 21:40:55 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-06-03 11:26:36 -0700 |
commit | f57d9a72d478e5278163eb1104e45ae69c92095c (patch) | |
tree | a3deeb711ddb9495895b2dffd48d5e586afab1ee /drivers/staging/lustre | |
parent | e11b0b167d9f6e85650f979076427ec7e66f685f (diff) |
staging/lustre/mdt: set ATTR_xTIME_SET to make atime update properly
To make atime update properly between 1.8 client and 2.x server,
this patch includes the following fixes:
- if MDS_ATTR_xTIME is set without MDS_ATTR_xTIME_SET and the client
does not have OBD_CONNECT_FULL20, convert it to LA_xTIME in
mdt_setattr_unpack().
- set both MDS_ATTR_xTIME | MDS_ATTR_xTIME_SET for timestamps in
ll_prepare_close(). This allows us to fix the server-side timestamp
setting in the future.
- remove attr_unpack() and convert the flags from MDS_ATTR_ to LA_*
directly in mdt_attr_valid_xlate() instead.
- improve sanityn.sh test_23().
[picked llite part for upstream kernel submission]
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-3036
Lustre-change: http://review.whamcloud.com/6327
Signed-off-by: Liu Ying <emoly.liu@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Peng Tao <tao.peng@emc.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/lustre')
-rw-r--r-- | drivers/staging/lustre/lustre/llite/file.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/staging/lustre/lustre/llite/file.c b/drivers/staging/lustre/lustre/llite/file.c index 5bb2367ecce7..be423171646f 100644 --- a/drivers/staging/lustre/lustre/llite/file.c +++ b/drivers/staging/lustre/lustre/llite/file.c @@ -95,8 +95,9 @@ static void ll_prepare_close(struct inode *inode, struct md_op_data *op_data, { ENTRY; - op_data->op_attr.ia_valid = ATTR_MODE | ATTR_ATIME_SET | - ATTR_MTIME_SET | ATTR_CTIME_SET; + op_data->op_attr.ia_valid = ATTR_MODE | ATTR_ATIME | ATTR_ATIME_SET | + ATTR_MTIME | ATTR_MTIME_SET | + ATTR_CTIME | ATTR_CTIME_SET; if (!(och->och_flags & FMODE_WRITE)) goto out; |