Index: uspace/srv/fs/fat/fat_fat.c
===================================================================
--- uspace/srv/fs/fat/fat_fat.c	(revision 50f9c3a7c6d0cb3cef99ff7ccda9019bcd77df94)
+++ uspace/srv/fs/fat/fat_fat.c	(revision 963462af16f4105e1f849d59aafc9d89a09411fe)
@@ -46,5 +46,5 @@
 #include <align.h>
 #include <assert.h>
-#include <fibril_sync.h>
+#include <fibril_synch.h>
 #include <mem.h>
 
@@ -247,10 +247,11 @@
  */
 int
-fat_get_cluster(fat_bs_t *bs, dev_handle_t dev_handle, fat_cluster_t clst,
-    fat_cluster_t *value)
+fat_get_cluster(fat_bs_t *bs, dev_handle_t dev_handle, unsigned fatno,
+    fat_cluster_t clst, fat_cluster_t *value)
 {
 	block_t *b;
 	uint16_t bps;
 	uint16_t rscnt;
+	uint16_t sf;
 	fat_cluster_t *cp;
 	int rc;
@@ -258,6 +259,7 @@
 	bps = uint16_t_le2host(bs->bps);
 	rscnt = uint16_t_le2host(bs->rscnt);
-
-	rc = block_get(&b, dev_handle, rscnt +
+	sf = uint16_t_le2host(bs->sec_per_fat);
+
+	rc = block_get(&b, dev_handle, rscnt + sf * fatno +
 	    (clst * sizeof(fat_cluster_t)) / bps, BLOCK_FLAGS_NONE);
 	if (rc != EOK)
@@ -480,5 +482,5 @@
 	while (firstc < FAT_CLST_LAST1) {
 		assert(firstc >= FAT_CLST_FIRST && firstc < FAT_CLST_BAD);
-		rc = fat_get_cluster(bs, dev_handle, firstc, &nextc);
+		rc = fat_get_cluster(bs, dev_handle, FAT1, firstc, &nextc);
 		if (rc != EOK)
 			return rc;
@@ -560,5 +562,5 @@
 		unsigned fatno;
 
-		rc = fat_get_cluster(bs, dev_handle, lastc, &nextc);
+		rc = fat_get_cluster(bs, dev_handle, FAT1, lastc, &nextc);
 		if (rc != EOK)
 			return rc;
