From 3768e3c41cbead360d4a40ea514b2bbb296ee841 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Thu, 3 Aug 2017 15:56:31 -0700 Subject: [PATCH] scoutfs: don't add dirs to data_seq index Directories were getting added to the data_seq index. It might have looked like they weren't because their data_seqs were always 0 but when inodes are created they don't have 'have_item' set so all the fields are added regardless of their current value. We'd rather not have to wade their directories when looking for regular file data in the data_seq index so let's explicitly test for regular files when updating the data_seq index items. Signed-off-by: Zach Brown --- kmod/src/inode.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kmod/src/inode.c b/kmod/src/inode.c index 614f3b87..ab4be9d0 100644 --- a/kmod/src/inode.c +++ b/kmod/src/inode.c @@ -594,10 +594,12 @@ void scoutfs_update_inode_item(struct inode *inode) le64_to_cpu(sinode.size), 0, si->item_size, 0) ?: update_index(sb, si, ino, SCOUTFS_INODE_INDEX_META_SEQ_TYPE, le64_to_cpu(sinode.meta_seq), 0, - si->item_meta_seq, 0) ?: - update_index(sb, si, ino, SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE, - le64_to_cpu(sinode.data_seq), 0, - si->item_data_seq, 0); + si->item_meta_seq, 0); + if (ret == 0 && S_ISREG(inode->i_mode)) + ret = update_index(sb, si, ino, + SCOUTFS_INODE_INDEX_DATA_SEQ_TYPE, + le64_to_cpu(sinode.data_seq), 0, + si->item_data_seq, 0); BUG_ON(ret); scoutfs_inode_init_key(&key, &ikey, ino);