[PATCH] Support for read-only MMC cards

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If the card does not support the write commands then only allow
read-only access.

Signed-off-by: Pierre Ossman <[email protected]>
--- linux-2.6.11/drivers/mmc/mmc_block.c.orig	2005-06-04 21:44:20.000000000 +0200
+++ linux-2.6.11/drivers/mmc/mmc_block.c	2005-06-04 21:48:46.000000000 +0200
@@ -95,6 +95,10 @@ static int mmc_blk_open(struct inode *in
 		if (md->usage == 2)
 			check_disk_change(inode->i_bdev);
 		ret = 0;
+
+		if ((filp->f_mode & FMODE_WRITE) &&
+			!(md->queue.card->csd.cmdclass & CCC_BLOCK_WRITE))
+			ret = -EROFS;
 	}
 
 	return ret;
@@ -403,9 +407,12 @@ static int mmc_blk_probe(struct mmc_card
 	if (err)
 		goto out;
 
-	printk(KERN_INFO "%s: %s %s %dKiB\n",
+	printk(KERN_INFO "%s: %s %s %dKiB",
 		md->disk->disk_name, mmc_card_id(card), mmc_card_name(card),
 		(card->csd.capacity << card->csd.read_blkbits) / 1024);
+	if (!(card->csd.cmdclass & CCC_BLOCK_WRITE))
+		printk(" (ro)");
+	printk("\n");
 
 	mmc_set_drvdata(card, md);
 	add_disk(md->disk);

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux