diff --git a/lustre/lvfs/fsfilt_ext3.c b/lustre/lvfs/fsfilt_ext3.c
index 46eb191bf9c11dc127f5f448da6ca023ad0c3ccc..89796ff3e12995de0293983cce62e678543ddea6 100644
--- a/lustre/lvfs/fsfilt_ext3.c
+++ b/lustre/lvfs/fsfilt_ext3.c
@@ -921,7 +921,9 @@ static int fsfilt_ext3_add_dir_entry(struct obd_device *obd,
         dentry->d_inum = ino;
         dentry->d_mdsnum = mds;
         dentry->d_generation = generation;
+        lock_kernel();
         err = ext3_add_dir_entry(dentry);
+        unlock_kernel();
         
         l_dput(dentry);
 
@@ -937,7 +939,9 @@ static int fsfilt_ext3_del_dir_entry(struct obd_device *obd,
 {
 #ifdef EXT3_FEATURE_INCOMPAT_MDSNUM
         int err;
+        lock_kernel();
         err = ext3_del_dir_entry(dentry);
+        unlock_kernel();
         if (err == 0)
                 d_drop(dentry);
         return err;