diff options
| author | Tao Ma <boyu.mt@taobao.com> | 2010-12-15 03:30:00 -0500 |
|---|---|---|
| committer | Joel Becker <joel.becker@oracle.com> | 2010-12-16 03:36:15 -0500 |
| commit | 8ac33dc86d37ca76d282aa112d4f2794a731064e (patch) | |
| tree | 1631d3643087ebb52da9eb8ec084e7191ab20e75 | |
| parent | 41b41a26d4d6e4e3ad877d02377844ab9552dc16 (diff) | |
ocfs2: Hold ip_lock when set/clear flags for indexed dir.
When we set/clear the dyn_features for an inode we hold the ip_lock.
So do it when we set/clear OCFS2_INDEXED_DIR_FL also.
Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
| -rw-r--r-- | fs/ocfs2/dir.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c index c49f6de0e7ab..d417b3f9b0c7 100644 --- a/fs/ocfs2/dir.c +++ b/fs/ocfs2/dir.c | |||
| @@ -2461,8 +2461,10 @@ static int ocfs2_dx_dir_attach_index(struct ocfs2_super *osb, | |||
| 2461 | 2461 | ||
| 2462 | di->i_dx_root = cpu_to_le64(dr_blkno); | 2462 | di->i_dx_root = cpu_to_le64(dr_blkno); |
| 2463 | 2463 | ||
| 2464 | spin_lock(&OCFS2_I(dir)->ip_lock); | ||
| 2464 | OCFS2_I(dir)->ip_dyn_features |= OCFS2_INDEXED_DIR_FL; | 2465 | OCFS2_I(dir)->ip_dyn_features |= OCFS2_INDEXED_DIR_FL; |
| 2465 | di->i_dyn_features = cpu_to_le16(OCFS2_I(dir)->ip_dyn_features); | 2466 | di->i_dyn_features = cpu_to_le16(OCFS2_I(dir)->ip_dyn_features); |
| 2467 | spin_unlock(&OCFS2_I(dir)->ip_lock); | ||
| 2466 | 2468 | ||
| 2467 | ocfs2_journal_dirty(handle, di_bh); | 2469 | ocfs2_journal_dirty(handle, di_bh); |
| 2468 | 2470 | ||
| @@ -4466,8 +4468,10 @@ static int ocfs2_dx_dir_remove_index(struct inode *dir, | |||
| 4466 | goto out_commit; | 4468 | goto out_commit; |
| 4467 | } | 4469 | } |
| 4468 | 4470 | ||
| 4471 | spin_lock(&OCFS2_I(dir)->ip_lock); | ||
| 4469 | OCFS2_I(dir)->ip_dyn_features &= ~OCFS2_INDEXED_DIR_FL; | 4472 | OCFS2_I(dir)->ip_dyn_features &= ~OCFS2_INDEXED_DIR_FL; |
| 4470 | di->i_dyn_features = cpu_to_le16(OCFS2_I(dir)->ip_dyn_features); | 4473 | di->i_dyn_features = cpu_to_le16(OCFS2_I(dir)->ip_dyn_features); |
| 4474 | spin_unlock(&OCFS2_I(dir)->ip_lock); | ||
| 4471 | di->i_dx_root = cpu_to_le64(0ULL); | 4475 | di->i_dx_root = cpu_to_le64(0ULL); |
| 4472 | 4476 | ||
| 4473 | ocfs2_journal_dirty(handle, di_bh); | 4477 | ocfs2_journal_dirty(handle, di_bh); |
