+ * ll_xattr_cache_empty - empty xattr cache for @ino
+ *
+ * Similar to ll_xattr_cache_destroy(), but preserves encryption context.
+ * So only LLIF_XATTR_CACHE_FILLED flag is cleared, but not LLIF_XATTR_CACHE.
+ */
+int ll_xattr_cache_empty(struct inode *inode)
+{
+ struct ll_inode_info *lli = ll_i2info(inode);
+ struct ll_xattr_entry *entry, *n;
+
+ ENTRY;
+
+ down_write(&lli->lli_xattrs_list_rwsem);
+ if (!ll_xattr_cache_valid(lli) ||
+ !ll_xattr_cache_filled(lli))
+ GOTO(out_empty, 0);
+
+ list_for_each_entry_safe(entry, n, &lli->lli_xattrs, xe_list) {
+ if (strcmp(entry->xe_name,
+ LL_XATTR_NAME_ENCRYPTION_CONTEXT) == 0)
+ continue;
+
+ CDEBUG(D_CACHE, "delete: %s\n", entry->xe_name);
+ list_del(&entry->xe_list);
+ OBD_FREE(entry->xe_name, entry->xe_namelen);
+ OBD_FREE(entry->xe_value, entry->xe_vallen);
+ OBD_SLAB_FREE_PTR(entry, xattr_kmem);
+ }
+ clear_bit(LLIF_XATTR_CACHE_FILLED, &lli->lli_flags);
+
+out_empty:
+ up_write(&lli->lli_xattrs_list_rwsem);
+ RETURN(0);
+}
+
+/**