Index: uspace/srv/fs/fat/fat_dentry.c
===================================================================
--- uspace/srv/fs/fat/fat_dentry.c	(revision 2df7fdd4d4334f300eab2aff1e4a3f16c6771d95)
+++ uspace/srv/fs/fat/fat_dentry.c	(revision ed194977ac205ef0e7b7c2b213636b59b1bf4f3f)
@@ -240,4 +240,24 @@
 }
 
+/** Compute checksum of Node name.
+ *
+ * Returns an unsigned byte checksum computed on an unsigned byte
+ * array. The array must be 11 bytes long and is assumed to contain
+ * a name stored in the format of a MS-DOS directory entry.
+ *
+ * @param name		Node name read from the dentry.
+ *
+ * @return		An 8-bit unsigned checksum of the name.
+ */
+uint8_t fat_dentry_chksum(uint8_t *name)
+{
+	uint8_t i, sum=0;
+	for (i=0; i<(FAT_NAME_LEN+FAT_EXT_LEN); i++) {
+		sum = ((sum & 1) ? 0x80 : 0) + (sum >> 1) + name[i];
+	}
+	return sum;
+}
+
+
 /**
  * @}
Index: uspace/srv/fs/fat/fat_dentry.h
===================================================================
--- uspace/srv/fs/fat/fat_dentry.h	(revision 2df7fdd4d4334f300eab2aff1e4a3f16c6771d95)
+++ uspace/srv/fs/fat/fat_dentry.h	(revision ed194977ac205ef0e7b7c2b213636b59b1bf4f3f)
@@ -112,4 +112,5 @@
 extern void fat_dentry_name_set(fat_dentry_t *, const char *);
 extern fat_dentry_clsf_t fat_classify_dentry(const fat_dentry_t *);
+extern uint8_t fat_dentry_chksum(uint8_t *);
 
 #endif
