From 296838b182ebad919074bf324e1667d28a04b936 Mon Sep 17 00:00:00 2001
From: Jeff Layton <jlayton@redhat.com>
Date: Wed, 16 May 2012 07:53:01 -0400
Subject: [PATCH] cifs: add warning about change in default cache semantics in
 3.7

Add a warning that will be displayed when there is no cache= option
specified. We want to ensure that users are aware of the change in
defaults coming in 3.7.

Reviewed-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 fs/cifs/connect.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 34186805e639..c49d49438c52 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1244,6 +1244,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
 	char *string = NULL;
 	char *tmp_end, *value;
 	char delim;
+	bool cache_specified = false;
+	static bool cache_warned = false;
 
 	separator[0] = ',';
 	separator[1] = 0;
@@ -1455,6 +1457,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
 			vol->seal = 1;
 			break;
 		case Opt_direct:
+			cache_specified = true;
 			vol->direct_io = true;
 			vol->strict_io = false;
 			cERROR(1, "The \"directio\" option will be removed in "
@@ -1462,6 +1465,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
 				  "option.");
 			break;
 		case Opt_strictcache:
+			cache_specified = true;
 			vol->direct_io = false;
 			vol->strict_io = true;
 			cERROR(1, "The \"strictcache\" option will be removed "
@@ -1888,6 +1892,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
 				goto cifs_parse_mount_err;
 			break;
 		case Opt_cache:
+			cache_specified = true;
 			string = match_strdup(args);
 			if (string == NULL)
 				goto out_nomem;
@@ -1938,6 +1943,14 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
 		printk(KERN_NOTICE "CIFS: ignoring forcegid mount option "
 				   "specified with no gid= option.\n");
 
+	/* FIXME: remove this block in 3.7 */
+	if (!cache_specified && !cache_warned) {
+		cache_warned = true;
+		printk(KERN_NOTICE "CIFS: no cache= option specified, using "
+				   "\"cache=loose\". This default will change "
+				   "to \"cache=strict\" in 3.7.\n");
+	}
+
 	kfree(mountdata_copy);
 	return 0;
 
-- 
2.34.1